0 Seguidores · 9 Postagens

O Ensemble oferece suporte a Linguagem de Transação de Dados (DTL) para descrever as transformações de dados. DTL é uma linguagem XML. O Ensemble fornece assistentes e ferramentas gráficas para criar, editar e testar transformações DTL. Uma transformação de dados é uma classe Caché como a seguinte. Se preferir, você pode usar o Studio para editar a definição da classe diretamente e ignorar os assistentes e as ferramentas gráficas.

Documentação.

Anúncio Danusa Calixto · Jul. 30, 2025

Oi Comunidade,

Assista a este vídeo para saber mais sobre o AI Co-Pilot, que simplifica a codificação DTL e oferece assistência personalizada, o que o torna acessível a usuários com diferentes níveis de conhecimento técnico:

⏯ Acelere a codificação DTL com o serviço AI Cloud@ Global Summit 2024

0
0 24
Discussão Heloisa Paiva · Maio 2, 2025

Já faz um tempo desde que a nova interface de usuário para Produções e DTL foi publicada como uma prévia e eu gostaria de saber suas opiniões sobre ela.

AVISO: Esta é uma opinião pessoal, totalmente pessoal e não relacionada com a InterSystems Corporation.

Vou começar com a tela de Interoperabilidade:

Tela de Produção:

O estilo é sóbrio e sem adornos, seguindo a linha do design de serviços de nuvem, eu gosto.

Mas, sempre um mas... ou talvez dois:

0
0 29
InterSystems Oficial Danusa Calixto · Mar. 26, 2025 5m read

A interface de usuário de interoperabilidade agora inclui experiências de usuário modernizadas para os aplicativos Editor DTL e Configuração da Produção que estão disponíveis para aceitação em todos os produtos de interoperabilidade. Você pode alternar entre as visualizações modernizada e padrão. Todas as outras telas de interoperabilidade permanecem na interface de usuário padrão. Observe que as alterações são limitadas a esses dois aplicativos e identificamos abaixo a funcionalidade que está disponível atualmente.

0
0 38
Artigo Heloisa Paiva · jan 16, 2025 5m read

Tenho o prazer de anunciar a nova versão do IoP, que aliás não é apenas uma linha de comando. Estou dizendo isso porque o novo mecanismo de pesquisa de IA ainda pensa que o IoP é apenas uma linha de comando. Mas não é. É uma estrutura completa para construir aplicativos sobre a estrutura de interoperabilidade do IRIS com uma abordagem priorizando Python.

A nova versão do IoP: 3.2.0 possui muitas novidades, mas a mais importante é o suporte a DTL (Data Type Language). 🥳

Tanto para mensagens IoP quanto para jsonschema. 🎉

image

Suporte DTL

A partir da versão 3.2.0, o IoP oferece suporte a transformações DTL.

DTL é a camada de transformação de dados na Interoperabilidade do IRIS.

As transformações DTL são usadas para transformar dados de um formato para outro usando um editor gráfico. Também oferece suporte a estruturas jsonschema.

Como usar DTL com Mensagens

Primeiramente, você precisa registrar sua classe de mensagem em um arquivo settings.py.

Para fazer isso, adicione a seguinte linha no arquivo settings.py :

settings.py

from msg import MyMessage

SCHEMAS = [MyMessage]

A seguir, você pode usar o comando de migração do IoP para gerar arquivos de esquema para suas classes de mensagem.

iop --migrate /path/to/your/project/settings.py

Exemplo

msg.py

from iop import Message
from dataclasses import dataclass

@dataclass
class MyMessage(Message):
    name: str = None
    age: int = None

settings.py

from msg import MyMessage

SCHEMAS = [MyMessage]

Migrar os arquivos do esquema.

iop --migrate /path/to/your/project/settings.py

Construindo uma Transformação DTL

Para construir uma transformação DTL, você precisa criar uma nova classe de transformação DTL.

Vá para o Portal de Gerenciamento de Interoperabilidade do IRIS e crie uma nova transformação DTL.

image

Em seguida, selecione as classes de mensagem de origem e destino.

image

E seu esquema.

image

Então você pode começar a construir sua transformação.

image

Você também pode testar sua transformação.

image

Exemplo de carga útil para testar como mensagem de origem:

<test>
  <Message>
    <json><![CDATA[
{
"list_str":["toto","titi"],
"post":{"Title":"foo","Selftext":"baz"},
"list_post":[{"Title":"bar","Selftext":"baz"},{"Title":"foo","Selftext":"foo"}]
}
]]></json>
  </Message>
</test>

Suporte JsonSchema

A partir da versão 3.2.0, o IoP suporta estruturas jsonschema para transformações DTL.

Assim como para classes de mensagens, você precisa registrar seu jsonschema.

Para fazer isso, você precisa invocar seu comando iris:

zw ##class(IOP.Message.JSONSchema).ImportFromFile("/irisdev/app/random_jsonschema.json","Demo","Demo")

Onde o primeiro argumento é o caminho para o arquivo jsonschema, o segundo argumento é o nome do pacote e o terceiro argumento é o nome do esquema.

Então você pode usá-lo em sua transformação DTL.

O esquema estará disponível com o nome de Demo.

Exemplo de arquivo jsonschema:

{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "title": "PostMessage",
    "properties": {
        "post": {
            "allOf": [
                {
                    "$ref": "#/$defs/PostClass"
                }
            ]
        },
        "to_email_address": {
            "type": "string",
            "default": null
        },
        "my_list": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "found": {
            "type": "string",
            "default": null
        },
        "list_of_post": {
            "type": "array",
            "items": {
                "allOf": [
                    {
                        "$ref": "#/$defs/PostClass"
                    }
                ]
            }
        }
    },
    "$defs": {
        "PostClass": {
            "type": "object",
            "title": "PostClass",
            "properties": {
                "title": {
                    "type": "string"
                },
                "selftext": {
                    "type": "string"
                },
                "author": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                },
                "created_utc": {
                    "type": "number"
                },
                "original_json": {
                    "type": "string",
                    "default": null
                }
            },
            "required": [
                "title",
                "selftext",
                "author",
                "url",
                "created_utc"
            ]
        }
    }
}

Exemplo de Transformação DTL com JsonSchema ou Classe de Mensagem

Muitos podem ser encontrados no pacote UnitTest no diretório./src/tests/cls.

Class UnitTest.ComplexTransform Extends Ens.DataTransformDTL [ DependsOn = IOP.Message ]
{

Parameter IGNOREMISSINGSOURCE = 1;

Parameter REPORTERRORS = 1;

Parameter TREATEMPTYREPEATINGFIELDASNULL = 0;

XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]
{
<transform sourceClass='IOP.Message' targetClass='IOP.Message' sourceDocType='registerFilesIop.message.ComplexMessage' targetDocType='registerFilesIop.message.ComplexMessage' create='new' language='objectscript' >
<assign value='source.{post}' property='target.{post}' action='set' />
<foreach property='source.{list_str()}' key='k1' >
<assign value='source.{list_str(k1)}_"foo"' property='target.{list_str()}' action='append' />
</foreach>
<foreach property='source.{list_post()}' key='k2' >
<assign value='source.{list_post().Title}' property='target.{list_post(k2).Title}' action='append' />
</foreach>
</transform>
}

}

Nova documentação

O IoP conta com uma nova documentação, disponível em https://grongierisc.github.io/interoperability-embedded-python/.

Você encontrará todas as informações necessárias para começar a usar o IoP.

image

Espero que você goste desta nova versão do IoP. 🎉

0
0 43
Artigo Larissa Prussak · Mar. 14, 2024 1m read

Participei do concurso InterSystems Women’s Health FHIR porque adorei o desafio de aprender uma tecnologia nova para mim. Eu queria desenvolver um aplicativo que recebesse dados de um dispositivo móvel como meu Fitbit ou Smart Watch. Não tive acesso a esses dados, exceto quando baixei uma planilha (arquivo CSV) mostrando meus passos diários e dados de sono. Vi no iris-fhir-template que ele importou alguns dados do paciente para um servidor FHIR. Eu descobri como usar uma transformação de dados para transformar um registro de um arquivo delimitado em dados FHIR que eu poderia armazenar no

0
0 76
Artigo Cristiano Silva · Ago. 7, 2023 2m read

Transformações DTL e chamadas GetValueAt/SetValueAt em mensagens HL7 truncarão todos os campos com mais de 32 K. Para evitar isso, os métodos GetFieldStreamRaw e StoreFieldStreamRaw devem ser utilizados ao lidar com campos que possam ser maiores que 32K. OBX:5 é um exemplo frequente. Esses métodos têm algumas sutilezas e devem ser usados com cuidado.

0
0 61
Artigo Luana Machado · Jun. 12, 2023 6m read

Exemplo de uso do banco de dados FHIR InterSystems IRIS for Health para efetuar modelagem ML através do InterSystems IRIS IntegratedML

Descrição

IntegratedML é uma ótima funcionalidade para treino/teste e implantação de modelos ML. FHIR é um padrão poderoso para a interoperabilidade de informações da saúde. Esse projeto visa mostrar como utilizar as ferramentas IRIS/IRIS for Health. Por exemplo, as transformações DTL para preparar dados do FHIR para aplicação de modelos ML dentro do IntegratedML. Aqui estão algumas potenciais aplicações das ideias apresentadas nesse projeto:

0
1 133
Artigo Jhonata Rebouças · Maio 1, 2021 5m read

O mesmo serviço com a possibilidade de receber várias consultas SQL diferentes e sempre entregar o resultado independente de quantas colunas distintas tenham essas diferentes consultas. Aqui demonstro como pode ser possível montar esse tipo de serviço utilizando o Service Bus da Intersystems.

Possível cenário (Desconsiderar o uso de um BI):

Vamos pensar em um painel real time onde iremos fornecer as informações de consumo de um material por região para o setor de compras e teremos as informações do nome do produto, fabricante e quantidade por exemplo.

0
1 258