New post

Find

Question
· Mar 10

How do you use .NET SDK for setting an object to a list (IRISLIST<OBJECT)>?

Hello,

I'm using the .Net C# IRIS client and trying to create a HS.Data.OIDMap object which contains a $LIST property (.IdentityTypes). I am able to create the object using the .NET client, however when trying to create and assign the list object I get a "List cannot contain of type IrisObject".
Documentation for HS.Data.OIDMap https://docs.intersystems.com/irisforhealth20243/csp/documatic/%25CSP.Documatic.cls?LIBRARY=HSSYS&PRIVATE=1&CLASSNAME=HS.Data.OIDMap 

My question is two fold

  1. How to do you set a object property that is a list that needs to container other IrisObjects?
  2. How do you create a list of IrisObjects? The documentation for .Net Iris list says it cannot contain and Object or IrisOject (https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=BNETNAT_refapi#BNETNAT_refapi_iris-list)

The high level steps for this are

  1. Create the Iris Connection (Works)
  2. Create the HS.Data.OIDMap object (Works)
  3. Open and store HS.Data.OIDType of a certain type (ex: "Device") (Works)
  4. Set the IdentityTypes property to a new list containing the HS.Data.OIDType retrieved previously. (NOT WORKING) Error the a IrisList cannot contain a instance of IrisObject 

Example Code (C#):

//Create IRIS Instance to Iris4Health Server
IRIS iris = IRIS.CreateIRIS(conn);
IRISObject OidMap = (IRISObject)iris.ClassMethodObject("HS.Data.OIDMap","%New");
//Set some props (omitted for clarity)
//Get the Device type from the OIDType objects and store it (Getting the device OID Type)
//this returns a IrisObject
var oType = iris.ClassMethodObject("HS.Data.OIDType","%OpenId","Device");

//Create a new list and store the OIDTypes in this list
IRISList newList = new IRISList();
newList.Add(oType); // Generates ERROR: 'Invalid type: IRISObject'
//try and set the property IdentityTypes of the OIDMAP object
OidMap.Set("IdentityTypes",newList);

2 Comments
Discussion (2)2
Log in or sign up to continue
InterSystems Official
· Mar 10

Utilisation d'OpenEHR avec InterSystems IRIS

Utilisation d'OpenEHR avec InterSystems IRIS

Parfois, nous recevons des questions sur l'utilisation d'OpenEHR avec InterSystems. En général, ces discussions portent sur les raisons et la manière dont une organisation souhaite mettre en œuvre OpenEHR dans la création d'applications. Voici un bref guide :

  • InterSystems se concentre sur l'interopérabilité : nous accordons la priorité à l'interopérabilité via des normes telles que HL7, IHE, DICOM et ISO. D'après notre expérience, aucune norme ne répond à tous les besoins des données de santé complexes. Ainsi, nous recommandons que toute mise en œuvre d'OpenEHR soit évaluée en conjonction avec ces normes et qu'une analyse des scénarios les mieux pris en charge par chaque norme soit réalisée.
  • OpenEHR sur InterSystems IRIS : pour les organisations qui créent des applications ou des produits de données à l'aide du modèle OpenEHR, InterSystems IRIS est une plateforme idéale. Elle offre des capacités multi-modèles, une évolutivité, des performances élevées et une fiabilité. InterSystems IRIS for Health ajoute la flexibilité d'utiliser de nombreuses autres normes de santé, notamment HL7 FHIR, dans la même application.
  • Interopérabilité avec OpenEHR : OpenEHR a été lancé avant HL7 FHIR, mais FHIR couvre désormais de nombreux cas d'utilisation originaux d'OpenEHR. FHIR a une large implémentation, y compris l'utilisation par les principaux systèmes EHR. Par conséquent, le besoin de connexion entre les systèmes basés sur OpenEHR et ceux non basés sur OpenEHR augmente ; la technologie InterSystems excelle dans le mappage de données vers et depuis OpenEHR.

En résumé, si vous envisagez d'utiliser OpenEHR, envisagez InterSystems IRIS for Health comme plateforme. Définissez d'abord vos scénarios pour décider où OpenEHR s'adapte le mieux.

 
Discussion (0)0
Log in or sign up to continue
InterSystems Official
· Mar 10

Using OpenEHR with InterSystems IRIS

Using OpenEHR with InterSystems IRIS

Occasionally. we get questions about using OpenEHR with InterSystems.   Typically, these discussions focus on why and how an organization wants to implement OpenEHR in building applications. Here’s a brief guide:

  • InterSystems is focused on interoperability:  we prioritize interoperability through standards such as HL7, IHE, DICOM, and ISO. In our experience, no single standard addresses all the needs of complex healthcare data. Thus, we recommend that any implementation of OpenEHR be evaluated in conjunction with these standards and an analysis of which of your scenarios are best addressed by each standard.
  • OpenEHR on InterSystems IRIS: for organizations building applications or data products using the OpenEHR model, InterSystems IRIS is an ideal platform. It offers multi-model capabilities, scalability, high performance, and reliability. InterSystems IRIS for Health adds the flexibility to use many other healthcare standards including HL7 FHIR in the same application.
  • Interoperabiilty with OpenEHR: OpenEHR began before HL7 FHIR, but FHIR now covers many of the original OpenEHR use cases. FHIR has broad implementation, including use by major EHR systems.  Therefore the need to connect between OpenEHR-based  and non-OpenEHR-based systems is increasing; InterSystems technology excels at data mapping to and from OpenEHR. 

In summary, if you plan to use OpenEHR, consider InterSystems IRIS for Health as your platform. Define your scenarios first to decide where OpenEHR fits best.

 
2 Comments
Discussion (2)2
Log in or sign up to continue
InterSystems Official
· Mar 10

Atualização das Plataformas InterSystems Q1-2025

Bem-vindos à primeira atualização trimestral de 2025 das plataformas InterSystems.

Se você é novo nessas atualizações, seja bem-vindo! A grande novidade deste trimestre é o próximo lançamento do Red Hat Enterprise Linux 10. Continue lendo para saber mais sobre isso. Esta atualização tem como objetivo compartilhar mudanças recentes, bem como nosso melhor conhecimento atual sobre as próximas mudanças, mas prever o futuro é um negócio complicado e isso não deve ser considerado um roteiro comprometido.
  

Dito isto, vamos à atualização ... 

Sistemas Operacionais de Produção e Arquiteturas de CPU para InterSystems IRIS

Red Hat Enterprise Linux

  • Próximas Mudanças 
    • Esperamos que a Red Hat lance o RHEL 10 no final de Maio ou início de Junho e seja adicionado suporte para ele logo depois no IRIS 2025.1
    • O RHEL 9.5 passou por uma pequena certificação de sistema operacional sem incidentes.
  • Leitura Adicional: RHEL Release Page

Ubuntu

  • Atualizações Anteriores
    • We’ve completed minor OS certification for Ubuntu 24.04.01 and 22.04.3 on IRIS 2024.1 without incident
    • Concluímos a certificação secundária do sistema operacional para Ubuntu 24.04.01 e 22.04.3 no IRIS 2024.1 sem incidentes
  • Próximas Mudanças 
    • O Ubuntu 24.04.2 acaba de ser lançado e a certificação secundária do sistema operacional começará em breve.
  • Leitura Adicional: Ubuntu Releases Page

SUSE Linux

  • Atualizações Recentes
    • Concluímos a certificação secundária do sistema operacional SUSE Linux Enterprise Server 15 SP6 sem incidentes.
    • Estamos planejando mudar a forma como expressamos o suporte ao SUSE Service Pack para dizer apenas "Qualquer Service Pack que o SUSE suporte publicamente" em vez de listar SPs específicos na documentação. Fizemos essa alteração para o RHEL e está funcionando bem lá, então faremos a mesma alteração com o SUSE.
  • Atualizações Anteriores 
    • O Suporte Geral da SUSE para o Linux Enterprise Server 15 SP3 terminou em 31/12/2022, mas o suporte de segurança estendido continuará até dezembro de 2025.  

Leitura Adicional: SUSE lifecycle

Oracle Linux

  • Próximas Mudanças
    • Esperamos que o Oracle Linux 10 seja lançado na mesma época que o RHEL 10. Como oferecemos suporte ao Oracle Linux por meio do kit IRIS RHEL, esperamos que o suporte ao Oracle Linux 10 seja lançado ao mesmo tempo que o suporte ao RHEL 10.
  • Leitura Adicional: Oracle Linux Support Policy

Microsoft Windows

  • Atualizações Recentes
    • O Windows Server 2025 foi lançado em novembro e estamos ativamente adicionando suporte para a plataforma. Esperamos que nossos testes terminem em breve e, se tudo correr bem, ele será adicionado como uma plataforma com suporte.
  • Próximas Mudanças 
    • A Microsoft adiou a data de lançamento prevista para o Windows 12 para o outono de 2025. Iniciaremos o processo de suporte ao novo sistema operacional após seu lançamento.  
  • Leitura Adicional: Microsoft Lifecycle

AIX

  • Atualizações Recentes
    • O IRIS 2024.3 e versões posteriores oferecerão suporte apenas ao OpenSSL 3. OBSERVAÇÃO: Isso significa que a versão 2024.2 é a última versão do IRIS que tem os kits OpenSSL 1 e OpenSSL 3. No IRIS 2023.3, 2024.1 e 2024.2, fornecemos dois kits IRIS separados: um que oferece suporte ao OpenSSL 1 e outro que oferece suporte ao OpenSSL 3. Dada a importância do OpenSSL 3 para a segurança geral do sistema, ouvimos de muitos de vocês que já migraram para o OpenSSL 3.  
  • Leitura Adicional: AIX Lifecycle

Containers

  • Atualizações Anteriores
    • Alteramos a imagem base do contêiner do Ubuntu 22.04 para o Ubuntu 24.04 com IRIS 2024.2
    • Estamos considerando mudanças no contêiner IRIS padrão para, por padrão, ter tráfego interno (ECP, espelhamento, etc.) em uma porta diferente do tráfego potencialmente voltado para o exterior (ODBC, JDBC, etc.). Se você tiver necessidades nessa área, entre em contato e me avise.

Sistemas Operacionais e Arquiteturas de CPU para Desenvolvimento InterSystems IRIS 

MacOS

  • Próximas Mudanças 
    • A Apple lançou o MacOS 15 e estamos planejando suporte para ele no IRIS 2025.1

Componentes InterSystems 

Sistemas Operacionais de Produção e Arquiteturas de CPU para Caché & Ensemble

  • Atualizações Anteriores 
    • Um lembrete de que as versões finais de manutenção do Caché e do Ensemble estão programadas para o primeiro trimestre de 2027, o que está chegando mais cedo do que você imagina. Veja o excelente artigo do Jeff na comunidade para mais informações. 

Documentação das Plataformas Suportadas pela InterSystems

A documentação das plataformas suportadas pela InterSystems é a fonte definitiva de informações sobre tecnologias suportadas.

 

… e isso é tudo, pessoal. Novamente, se houver algo mais que você gostaria de saber, por favor, nos avise.
 

Discussion (0)1
Log in or sign up to continue
Article
· Mar 10 5m read

Presentación del adaptador UDP

Hola

Este artículo es el resultado de la pregunta que había hecho a la comunidad: Adaptador UDP no funciona

En este artículo, voy a presentaros

1) ¿Qué es "UDP"?
2) El estado actual de Iris con UDP
3) Mi solución con el adaptador UDP



1) ¿Qué es "UDP"?

UDP significa User Datagram Protocol. Es uno de los protocolos fundamentales del conjunto de protocolos de Internet (IP) y se utiliza para transmitir datos a través de una red. Aquí tenéis algunas características clave de UDP:

  1. Sin conexión: UDP no establece una conexión antes de enviar datos, lo que significa que puede enviar mensajes (Datagram) sin un proceso previo de sincronización.
  2. No fiable: No hay garantía de que los mensajes enviados a través de UDP lleguen a su destino. No cuenta con mecanismos de recuperación de errores ni retransmisión de paquetes perdidos.
  3. Velocidad: Al no requerir conexión ni comprobaciones o correcciones de errores, UDP es generalmente más rápido que TCP (Protocolo de Control de Transmisión), lo que lo hace adecuado para aplicaciones en las que la velocidad es crucial.
  4. Orientado a datagramas: UDP envía mensajes en forma de paquetes discretos, que pueden tener longitudes variables. Cada paquete se trata de manera independiente.
  5. Casos de uso: Se usa comúnmente en aplicaciones donde la velocidad es más importante que la fiabilidad, como la transmisión de vídeo, los videojuegos en línea, la telefonía por Internet (VoIP) y las comunicaciones en tiempo real.

En resumen, UDP es un protocolo ligero y útil para aplicaciones específicas en las que la baja latencia es esencial.


2) El estado actual de Iris con UDP

Por supuesto, InterSystems Iris permite utilizar este protocolo para enviar y recibir datos.

Como protocolo REST, hay dos formas de hacerlo :

- con la función ##class(%Net.UDP).%New().

- con el EnsLib.UDP.OutboundAdapter y EnsLib.UDP.InboundAdapter

 

##class(%Net.UDP).%New()

Aunque la documentación de la clase es muy completa, aquí está el enlace de la documentación de InterSystems sobre cómo usarla.

Para enviar/recibir datos con ella, usamos una instancia de la clase(%Net.UDP).%New() y algún método vinculado a ella. En resumen, para enviar datos (en localhost con el puerto 3001) :

SET client = ##class(%Net.UDP).%New()
SET addrbin = ##class(%Net.UDP).GetHostAddr("127.0.0.1")
Set status = client.Send("message text", addrbin, 3001)

Para recibir datos (en localhost con el puerto 3001) :

Set sobj = ##class(%Net.UDP).%New(3001,"127.0.0.1")
Set data = sobj.Recv()

EnsLib.UDP.OutboundAdapter y EnsLib.UDP.InboundAdapter
Este es más simple : es un adaptador.
Aquí la documentación : EnsLib.UDP.OutboundAdapter et EnsLib.UDP.InboundAdapter
Para enviar datos :

Set status = ..Adapter.SendStream(stream)

Para recibir datos:

Set status = ..Adapter.Receive(stream)

Sin embargo, no funciona. Pregunté a la comunidad con mi problema «UDP Adapter not working» y creé un ticket para el WRC. Me respondieron esto :

El ejecutable subyacente ya no se instala en el producto desde Ensemble 2018.1.

Lo he comprobado internamente y se ha enviado JIRA DP-437486 para actualizar esos adaptadores y que utilicen la clase %Net.UDP, pero esto estará sujeto a la aprobación de la dirección del producto y a los recursos de desarrollo disponibles.

Lamentablemente, la única opción ahora mismo es crear su propio adaptador personalizado utilizando la clase %Net.UDP.

Las dos diferencias principales entre la clase(%Net.UDP) y el EnsLib.UDP.OutboundAdapter son

  • La clase %Net.UDP utiliza la clase de sistema $System.UDP, por lo que utiliza código del núcleo de Cache/IRIS para enviar/recibir los mensajes UDP, mientras que el adaptador UDP utiliza un pipeline de comandos para llamar a ejecutables externos para enviar/recibir el mensaje UDP.
  • La clase %Net.UDP envía/lee una cadena mientras que el adaptador UDP utiliza un stream para enviar/leer mensajes.

 

3) Mi solución con el adaptador UDP

Por lo tanto, escribí la mía propia (aprobado por el support team) para enviar datos :

/// Adapter to send data with UDP Connection
Class USER.UDP.OutboundAdapter Extends Ens.Adapter
{

/// Host of the UDP server
Property Host As %String [ Required ];
/// Port of the UDP server
Property Port As %Integer [ Required ];
/// if 1, show the text that will be sent
Property UDPTrace As %Integer(VALUELIST = ",0,1") [ InitialExpression = 0, Required ];
Parameter SETTINGS = "Host:Basic,Port:Basic,UDPTrace:Basic";
/// Send "text" throught the UDP connection
Method SendDataText(text As %String) As %Status
{
    Try {
        Set status = $$$OK
        If ..UDPTrace=1
        {
            Do ..ShowText(text)
        }
        
        Set udpClient = ##class(%Net.UDP).%New()
        Set addrbin = ##class(%Net.UDP).GetHostAddr(..Host)

        Set sentBytes = udpClient.Send(text, addrbin, ..Port)
    }
    Catch exception {
        Set status = exception.AsStatus()
    }    
    Return status
}

/// Convert "stream" into text and send it throught the UDP connection
Method SendDataStream(stream As %Stream.Object) As %Status
{
    Try {
        Do stream.Rewind()
        Set text = ""
        While 'stream.AtEnd{
            Set text = text _ stream.Read()
        }

        Set status = ..SendDataText(text)
    }
    Catch exception {
        Set status = exception.AsStatus()
    }    
    Return status
}

/// Convert "object" into json and send it throught the UDP connection
Method SendDataJSONObject(object As %RegisteredObject, format As %String = "iw") As %Status
{
    Try {
        Set status = ##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.stream,object,,,,format)
        $$$ThrowOnError(status)
        
        Set status = ..SendDataStream(stream)
    }
    Catch exception {
        Set status = exception.AsStatus()
    }    
    Return status
}

/// Takes a text as input,
/// Displays the traces of the associated object
Method ShowText(text As %String)
{
    Set nbParty = $SYSTEM.SQL.CEILING($LENGTH(text)/1100)
    For ii=1:1:nbParty
    {
        $$$TRACE($EXTRACT(text,ii,ii+1100))
    }
}

}

 

Espero que este artículo haya sido, si no útil, interesante.

No he probado el EnsLib.UDP.InboundAdapter, así que sentíos libres de añadir más información en los comentarios.


Corentin

Discussion (0)1
Log in or sign up to continue