Find

Article
· Sep 6, 2024 5m read

IRIS Python nativo Parte 2

En la sección anterior, exploramos el proceso de instalación y comenzamos a escribir el IRIS en Python nativo. Ahora procederemos a examinar el recorrido global y a interactuar con los objetos de la clase IRIS.

get: esta función se utiliza para obtener valores del nodo de recorrido

def traversal_firstlevel_subscript():
    """
    ^mygbl(235)="test66,62" and ^mygbl(912)="test118,78"
    """
    for  i in irispy.node('^mygbl'):
        print(i, gbl_node.get(i,''))

 

node e items: recorrido de un solo nivel con node y obtención de los valores de la misma manera que $Order(^mygbl(subscript), direction, data).

#single level traversal
def traversal_dollar_order_single_level():
    for  sub,val in irispy.node('^mygbl').items():
         print('subscript:',sub,' value:', val)
# multi level traversal
def traversal_dollar_order_multi_level():
    for  sub,val in irispy.node('^mygbl').items():
         print(f'sub type is: {type(sub)} {sub} and val type is {type(val)}')
         for sub1,val1 in irispy.node('^mygbl',sub).items():
            print('subscript:',sub1,' value:', val1)
        

 

nextsubscript: a diferencia del código anterior, podéis usar nextsubscript para obtener el siguiente subíndice fácilmente.

def traversal_dollar_order_use_nextsubscript():
      direction = 0
      next_sub = ''
      while next_sub != None:
            next_sub = irispy.nextSubscript(direction,'^mygbl', next_sub)
            print(f'next subscript = {next_sub}' )
            next_sub1=''
            if next_sub == None:return
            while next_sub1 != None:
                next_sub1 = irispy.nextSubscript(direction,'^mygbl',next_sub,next_sub1)
                print(f'1st subscript = {next_sub} next subscript {next_sub1}' )

 

Clases y Objetos

Podéis llamar a los classmethods (métodos de clase) desde la definición de la clase utilizando la función específica. Como mencioné anteriormente, los Typecast Methods son cruciales para obtener la respuesta adecuada de IRIS.

Antes de continuar, es importante darse cuenta de que, a diferencia de los tipos de datos de IRIS, en los que podemos tratar todo como cadenas, los tipos de datos de Python, como intstrbool y list, se clasifican como objetos. Cada uno de estos tipos posee sus propios atributos y métodos; por ejemplo, el tipo de cadena de Python incluye funciones como .upper() y .lower(), que no son aplicables a otros tipos de datos. En consecuencia, IRIS está equipado con la capacidad de convertir los valores de cadena de IRIS en objetos de tipos de datos compatibles con Python mediante el uso de los Typecast Methods. Esta funcionalidad se aplica de manera similar a los métodos de clase, funciones definidas por el usuario y procedimientos. De lo contrario, debéis utilizar las funciones de conversión de tipos de Python para lograr el tipo de datos deseado.

 

classMethodValue: Llamad al Classmethod desde Python sin iniciar el objeto, de la misma manera que (por ejemplo:

Do ##Class(Test.MYTest).FirstNameGetStored(1)) y obtened un valor predeterminado de tipo "string" en Python. Hay diferentes métodos de conversión de tipo disponibles para el valor de retorno esperado en lugar de una cadena. Por favor, referíos a lo siguiente.

def get_clsmethod_value():
    print(irispy.classMethodValue('Test.MYTest','FirstNameGetStored',1)) #return string 
    date_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog') #return +$H value
    print(irispy.classMethodVoid('Test.MYTest','SetTestGlobal','test')) # no return resposne

 

classMethodObject: Función importante para instanciar un nuevo objeto IRIS o abrir un objeto existente. Configurad las propiedades e invocad métodos de instancia, etc.

Nuevo objeto IRIS: Iniciad el objeto de clase para Test.MYTest y configurad las propiedades.

def cls_object_new():
    """
    initiate new object and store
    """
    iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%New','ashok','kumar')

    birthdate_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog','12/12/1990')
    horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog')
    iris_proxy_obj.set('BirthDate',birthdate_horolog) #set birthdate property
    iris_proxy_obj.set('RegisteredDate',horolog) #set the RegisteredDate property
    status = iris_proxy_obj.invoke('%Save') #call instance method
    return status

 

Abrir objeto IRIS: En el código a continuación, abrid el objeto de la clase Test.MyTest y obtened los valores de Birthdate y RegisteredDate del objectid "2", y convertid RegisteredDate en una lista de Python.

def cls_object_open():
    iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%OpenId',2)
    birth_date = iris_proxy_obj.get('BirthDate')
    full_name iris_proxy_obj.InvokeString("GetFullName")
    data = [birth_date, iris_proxy_obj.get('RegisteredDate')]
    return data

 

Definición de clase IRIS que utilicé para la demostración del código de clase y objeto en Python.

 
Spoiler

 

Typecast methods:

Estos son algunos typecast methods para recuperar valores de retorno adecuados de IRIS:

classMethodValue() - para llamar a métodos de clase generales.

classMethodInteger - Devuelve un valor entero
classMethodVoid - Sin valor de retorno
classMethodValue - Cadena por defecto
classMethodFloat - Valor de retorno float

invoke() - se utiliza para llamar a los métodos de instancia. Tenéis que iniciar el objeto para llamar a esta invocar funciones

invokeString - cadena por defecto
invokeFloat - valor de retorno float
invokeInteger - valor de retorno entero

 

Cubriremos las funciones, llamadas a procedimientos en rutinas y otras funcionalidades en el próximo artículo.

Discussion (0)1
Log in or sign up to continue
Question
· Sep 6, 2024

Looking for information on projects where openEHR is used

HI, in The Netherlands I get lots of questions on the ability of InterSystems to handle openEHR data. Before I start a local initiative I'm interested in other work done with openEHR. Anybody?

Regards, Joost

3 Comments
Discussion (3)1
Log in or sign up to continue
Announcement
· Sep 6, 2024

Kick-off Webinar para el concurso de herramientas de desarrolladores de InterSystems 2024.

Hola Comunidad,

¡Nos complace invitaros a todos al próximo webinar de lanzamiento para el concurso de herramientas de desarrollo de InterSystems 2024!

Durante el webinar, descubriréis los emocionantes retos y oportunidades que os esperan a los entusiastas de IRIS en este concurso. Hablaremos sobre los temas que esperamos de los participantes y os mostraremos cómo desarrollar, construir y desplegar aplicaciones utilizando la plataforma de datos InterSystems IRIS.

Fecha y hora: Martes, 10 de septiembre – 12:30 pm EDT | 6:30 pm CEST.

Ponentes:  
🗣 ​​​@Dean Andrews, Responsables de Relaciones con Desarrolladores.
🗣 ​​​@Evgeny Shvarov, Gerentes Senior de Programas para Desarrolladores y Startups.
🗣 @Raj Singh, Product Manager.

¡Registráos para el lanzamiento hoy mismo!

Discussion (0)1
Log in or sign up to continue
Announcement
· Sep 6, 2024

インターシステムズ主催 第18回 開発者向けオンラインセミナー「Ansible を使って IRIS 環境の構築を自動化しよう」のご案内

 

お世話になっております。

ご好評をいただいております弊社主催の開発者向けウェビナー、第18回となる10月は、以下の日時・内容で開催いたします。

ご登録はこちらから

【概要】

ITを取り巻く環境は常に進化を続け、ITリソースの需要はいつも強く求められています。それゆえ、社内開発からお客様へのサービス展開まで、システム環境構築の自動化戦略は、いまや欠かせないものになりました。

このウェビナーでは、Red Hat社の構成自動化ツール Ansible をご紹介するとともに、InterSystems IRIS のインストールから構成設定、アプリ導入までを Ansible で簡単に自動化する手順を、デモを通じてご覧いただきます。

【こんな方にお勧め】

  • IRISに関わる技術者の方
  • 環境構築の自動化にご興味のある方

ご多用中とは存じますが、皆様のご参加をお待ち申し上げております。

Discussion (0)1
Log in or sign up to continue
Announcement
· Sep 6, 2024

第2回 InterSystems Japan 開発者コミュニティ・ミートアップ in 東京開催のお知らせ

開発者のみなさん、こんにちは!

今年も開発者コミュニティミートアップを東京にて開催いたします!(10月1日:お申込みサイトオープンいたしました!)

日 時:2024年11月8日(金)13時半~19時

場 所:AP東京八重洲 13階

<JR各線をご利用の場合>「東京駅」八重洲中央口より徒歩6分
<東京メトロ銀座線をご利用の場合>「日本橋駅」徒歩約5分/「京橋駅」徒歩約4分
<都営浅草線をご利用の場合>「宝町駅」徒歩約4分

※ヤエチカ24番出口から出るとわかりやすいです。
 

参加費:無料

定 員:50名
※定員に達した際は調整をお願いすることもございます。予めご了承下さい。

申 込:(申込受付終了しました)

開催概要

《13時半~17時(前半)》

  • Pythonワークショップ

Python+IRIS で作成する簡単なアプリケーションを通して Python の基本操作を体験しながら、より良い活用方法についてコミュニティメンバーと意見交換を行って いただければと考えております。

ワークショップでは、ご興味ある内容を自由にお試しいただけるよう、シンプルにPythonやEmbedded Pythonを試したり、Webアプリ作成、機械学習体験などいくつかのテーマを用意する予定です。
流れに沿って試していただくのも〇、新しいものを作成いただくのも〇、グループで協力し合って進めるのも〇、IRISやPythonの使用経験問わず自由にご参加いただけます。

《17時~19時(後半):12階会場に移動します》※お食事(ビュッフェ形式)をしながら以下の内容を予定しています。

  • 技術文書ライティングコンテスト 表彰式  
  • クイズ大会

 今年も、InterSystems製品にちなんだクイズを出題します。クイズ勝者には5000円相当の景品が贈られます。

  • 懇親会

《持ち物》

  • パソコン

ワークショップで使用します。4時間弱使用するため充電ケーブルもご持参ください。

2024/9/17更新:事前準備内容を公開しました。ミートアップ前までにご準備いただけますと大変助かります。

  • スマートフォン

クイズ大会で使用します。

《その他》

  • カジュアルな服装でぜひご来場ください。

 

ご都合よろしければ、ぜひご参加ください。

それでは、イベント会場でお会いしましょう!

3 Comments
Discussion (3)1
Log in or sign up to continue