#InterSystems Package Manager (IPM)

0 Seguidores · 14 Postagens

InterSystems Package Manager (IPM) é uma ferramenta para implantar os pacotes e soluções no InterSystems IRIS com dependências.

Baixar o cliente Package Manager.

Artigo Heloisa Paiva · Out. 5, 2025 12m read

Boas-vindas, estimados membros da Comunidade!


Neste artigo, apresentaremos um exemplo de um projeto que implementa uma solução baseada em FHIR. Este projeto se baseará no projeto nacional (espanhol), conhecido como ÚNICA

O que é ÚNICAS?

Em suas próprias palavras:

Um projeto cujo objetivo é criar um ecossistema de colaborações para melhorar a atenção à saúde de pacientes pediátricos com Doenças Raras Complexas (DRCs). Este projeto está sendo implementado por meio da rede dentro do Sistema Nacional de Saúde (SNS) para melhorar o diagnóstico e o cuidado de pacientes com doenças raras.

0
0 14
InterSystems Oficial Danusa Calixto · jan 27, 2025

Lançamos o IPM 0.9.0. Anteriormente comentei um pouco da história e do raciocínio aqui; para resumir, este é um grande lançamento por dois motivos: representa uma reunificação há muito esperada do nosso trabalho interno e conduzido pela comunidade em torno do gerenciamento de pacotes ObjectScript centrado no IRIS, e tem algumas incompatibilidades com versões anteriores. Há várias incompatibilidades com versões anteriores necessárias em nosso roteiro, e nós as juntamos; isso não será uma nova norma.

0
0 31
Anúncio Danusa Calixto · jan 16, 2025

Olá Comunidade,

Aproveite o novo vídeo do InterSystems Developers YouTube:

⏯ InterSystems Package Manager @ Global Summit 2024

O InterSystems Package Manager (IPM) é uma ferramenta para implementar os pacotes e soluções no InterSystems IRIS com dependências. Saiba por que você deve usá-lo, como usá-lo e atualizações recentes para segurança da cadeia de suprimentos de software.

 Apresentadores
🗣 @Timothy Leavitt, Development Manager, Application Services, InterSystems
🗣 @Bob Kuszewski, Product Manager, Developer Experience, InterSystems

0
0 37
Artigo Heloisa Paiva · Jul. 18, 2024 3m read

Introdução ao WSGI em IRIS

Com o IRIS 2024+, os usuários podem hospedar aplicações WSGI usando Security.Applications. Por exemplo, um usuário pode fazer algo como o seguinte:

Exemplo funcional mínimo

zn "%SYS"
Kill props
Set props("Description") = "Sample WSGI Application"
Set props("MatchRoles") = ":%All"
Set props("WSGIAppLocation") = "/path/to/flaskapp"
Set props("WSGIAppName") = "myapp"
Set props("WSGICallable") = "app"
Set props("DispatchClass") = "%SYS.Python.WSGI" // importante, se não será reconhecido como uma aplicação CSP
Set sc = ##class(Security.Applications).Create("/flask", .props)
zw sc

onde o diretório /path/to/flaskapp contém um arquivo myapp.py que lê

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Olá, WSGI!"

Agora, vá para a URL http(s)://<host>:<port>/<optional-prefix>/flask/. Ela deve mostrar "Olá, WSGI!" em texto padrão.

Armadilhas comuns

  1. Se a URL http(s):///flask/ não estiver funcionando, verifique a barra no final, que deve estar presente.

  2. Além disso, ao rodar pela primeira vez, flask deve estar instalado installed para o python embutido (não seu interpretador local a nível de SO - sistema operacional). Verifique se a instalação teve sucesso entrando no terminal de comando de python embutido e rodando import flask.

  3. Finalmente, a permissão de leitura de qualquer usuário de SO que o IRIS assuma deve ser garantida ao caminho /path/to/flaskapp/myapp.py e todas as pastas pai.

  4. Se o erro ainda não for resolvido, verifique as entradas em messages.log. Você também pode entrar em contato conosco postando um issue

Usando IPM para enviar aplicações WSGI para fácil instalação

O IPM faz esse processo mais fácil ao

  1. copiar o diretório flask app para um caminho com acesso de leitura garantido
  2. instalar dependências python relecantes em um arquivo requirements.txt

Exemplo de pacote

Aqui está um exemplo que pode ser instalado facilmente em qualquer IPM (v0.6.3+) instalado em IRIS 2024+. Clone esse pacote para um <PACKAGE_ROOT> adequado e inicie um terminal IRIS.

zn "%SYS"
zpm "load <PACKAGE_ROOT>"

Após instalação bem sucedida, você deve poder visitar http(s)://<host>:<port>/<optional-instance-prefix>/my/flask/demo/. No meu caso, a URL é http://localhost:8080/iris-ml-wsgi/my/flask/demo/ e lê-se:

This is a sample WSGI application using Flask!

Dica: Você precisa instalar zpm seguindo as instruções aqui primeiro, para que o comando zpm funcione.

O module.xml do repositório acima também está listado aqui para rápida referência

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
  <Document name="flask-demo.ZPM">
    <Module>
      <Name>flask-demo</Name>
      <Version>1.0.0</Version>
      <Description>This is a demo of a flask application</Description>
      <Keywords>flask</Keywords>
      <Author>
        <Person>Shuheng Liu</Person>
        <Organization>InterSystems</Organization>
        <CopyrightDate>2024</CopyrightDate>
        <License>MIT</License>
        <Notes>notes</Notes>
      </Author>
      <Packaging>module</Packaging>
      <SystemRequirements Version=">=2024.1" />
      <SourcesRoot>src</SourcesRoot>
      <FileCopy Name="src/python/flaskapp/" Target="${libdir}flask-demo/flaskapp/"/>
      <SystemSetting Name="CSP.DefaultFileCharset" Value="UTF-8"/>

      <WSGIApplication
        Url="/my/flask/demo"
        UnauthenticatedEnabled="1"
        Description="Sample WSGI application using Flask"
        MatchRoles=":${dbrole}"
        WSGIAppLocation="${libdir}flask-demo/flaskapp/"
        WSGIAppName="app"
        WSGICallable="app"
       />
    <AfterInstallMessage>Module installed successfully!</AfterInstallMessage>     
    </Module>    
  </Document>
</Export>
0
0 39
Artigo Danusa Calixto · Abr. 4, 2024 3m read

Olá, Desenvolvedores!

Suponha que você tenha uma classe persistente com dados e queira ter uma IU Angular simples para visualizar os dados e fazer operações CRUD.

Recentemente, @Alberto Fuentes descreveu como desenvolver uma IU Angular para seu aplicativo do InterSystems IRIS usando RESTForms2. 

Neste artigo, quero explicar a você como obter uma IU Angular simples para fazer operações CRUD e visualizar seus dados de classes do InterSystems IRIS automaticamente em menos de 5 minutos.

Vamos lá!

Para isso, você precisará do seguinte:

Usarei uma classe Data.Countries, que gerei e importei pelo csvgen usando este comando:

d ##class(community.csvgen).GenerateFromURL("https://raw.githubusercontent.com/datasciencedojo/datasets/master/WorldDBTables/CountryTable.csv",",","Data.Countries"

Para criar uma IU Angular, precisamos expor a API REST para essa classe, que servirá as operações CRUD.

Vamos usar o módulo restforms2 para isso. 

Esse comando no dockerfile instala restforms2 no contêiner IRIS:

zpm "install restforms2" \

Para adicionar uma API REST, precisamos derivar a classe de Form.Adaptor:

Class Data.Countries Extends (%Library.Persistent, Form.Adaptor)

Adicione os parâmetros restforms2 à classe persistente para gerenciar o comportamento geral: parâmetro de classificação, nome de exibição etc.:

// Nome do formulário, e não uma chave global, então pode ser qualquer coisa
Parameter FORMNAME = "Countries";

/// Permissões padrão /// Objetos desse formulário podem ser Criados, Lidos, Atualizados e Excluídos /// Redefina esse parâmetro para mudar as permissões para todo mundo /// Redefina o método checkPermission (veja Form.Security) para essa classe  /// para adicionar a segurança personalizada com base em usuário/funções/etc. Parameter OBJPERMISSIONS As %String = "CRUD";

/// Propriedade usada para informações básicas sobre o objeto /// Por padrão, o método getObjectDisplayName recebe seu valor dela Parameter DISPLAYPROPERTY As %String = "name";

Perfeito. Em seguida, podemos usar a sintaxe restforms2 para informar ao restforms2 quais propriedades queremos expor às operações CRUD. Você pode fazer isso adicionando o atributo "DISPLAYNAME =" às propriedades que você quer expor em restforms2-ui. Exemplo:

Property code As %Library.String(MAXLEN = 250) [ SqlColumnNumber = 2 ];

Property name As %Library.String(DISPLAYNAME = "Name", MAXLEN = 250) [ SqlColumnNumber = 3 ];

Property continent As %Library.String(DISPLAYNAME = "Continent", MAXLEN = 250) [ SqlColumnNumber = 4 ];

Property region As %Library.String(DISPLAYNAME = "Region", MAXLEN = 250) [ SqlColumnNumber = 5 ];

Property surfacearea As %Library.Integer(DISPLAYNAME = "Surface Area", MAXVAL = 2147483647, MINVAL = -2147483648) [ SqlColumnNumber = 6, SqlFieldName = surface_area ];

Property independenceyear As %Library.Integer(DISPLAYNAME = "Independence Year", MAXVAL = 2147483647, MINVAL = -2147483648) [ SqlColumnNumber = 7, SqlFieldName = independence_year ];

Ótimo! Agora vamos introduzir a camada de UI.  Esse comando no dockerfile instala restforms2-ui, que é a IU Angular para Restform2:

zpm "install restforms2-ui" \

É isso! Vamos examinar a IU para sua classe, que você pode encontrar no URL server:port/restforms2-ui:

RESTForms são usados com as classes de teste Person e Company, e você pode usar isso para examinar os recursos de restformsUI. No momento, é possível editar campos de string, número, booleano, data e consulta.

Você pode testar tudo isso no seu laptop, se clonar e compilar este repositório:

docker-compose up -d --build

E abrir o URL:

localhost:port/restforms2-ui/index.html

ou, se você usar o VSCode, selecione esse item do menu:

Boa programação e fique ligado!

0
0 87
InterSystems Oficial Danusa Calixto · Dez. 12, 2023

A InterSystems tem o prazer de anunciar que o componente central do InterSystems Supply Chain Orchestrator™, a versão 2023.1 do InterSystems IRIS para Supply Chain, agora está em disponibilidade geral (GA).

0
0 80
Artigo Danusa Calixto · Abr. 27, 2023 1m read

Oi, pessoal!

Recentemente, eu precisava configurar um servidor FHIR local usando o IRIS For Health e acho que encontrei a maneira mais fácil e simples possível.

Basta executar estas duas linhas no terminal:

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community

e

docker exec -it my-iris iris session iris -U "USER" '##class(%ZPM.PackageManager).Shell("install fhir-server")'

E o servidor FHIR será executado localmente em http://localhost:9092/fhir/r4.

É só isso!

O servidor FHIR usará a última versão do InterSystems IRIS for Health Community Edition e implantará o servidor FHIR a partir desse app pelo pacote IPM no  namespace FHIRSERVER.

Isso se aplica ao Mac, então adicione nos comentários como funciona no Windows.

Esse é um breve artigo, já que é muito fácil configurar um servidor FHIR local com o InterSystems IRIS for Health e o IPM Package Manager.

0
0 93
InterSystems Oficial Angelo Bruno Braga · jan 16, 2023

Acabamos de lançar uma pequena atualização no gerenciador de pacotes, que foi renomeado de ZPM para IPM, conforme expliquei em Novembro.  É puramente uma versão de correção de bug, interpretando corretamente os códigos de retorno ROBOCOPY e corrigindo uma regressão que impedia a instalação de determinados pacotes.

Obtenha aqui:

https://github.com/intersystems/ipm/releases/tag/v0.5.2

0
0 133
InterSystems Oficial Angelo Bruno Braga · Nov. 10, 2022

Tenho o prazer de anunciar um marco no ciclo de vida do gerenciador de pacotes ObjectScript, ZPM. O gerenciador de pacotes oferece aos desenvolvedores a capacidade de empacotar o código ObjectScript e as configurações de implantação e as informações de versão de maneira conveniente. Ao longo dos últimos anos, evoluiu muito para uma parte integrante de muitos fluxos de trabalho de desenvolvimento.

0
0 193
Artigo Danusa Calixto · Nov. 4, 2022 3m read

O ZPM foi projetado para trabalhar com aplicativos e módulos para a plataforma de dados IRIS da InterSystems. Ele consiste em dois componentes, o ZPN Client que é uma CLI para gerenciar módulos, e o The Registry que é um banco de dados de módulos e meta-informações. Podemos usar o ZPM para pesquisar, instalar, atualizar, remover e publicar módulos. Com o ZPM, você pode instalar classes ObjectScript, aplicativos Frontend, produções de interoperabilidade, soluções IRIS BI, conjuntos de dados IRIS ou quaisquer arquivos como rodas Python incorporadas.

0
0 90
Anúncio Angelo Bruno Braga · Out. 4, 2022

Uma nova versão do ZPM foi publicada, a 0.4.0

Novidades da nova versão

  • Adicionado o suporte a pacotes Implantados, publicação e instalação
  • Suporte a múltiplos servidores de registro, ex. servidores de registro públicos de comunidades, privados corporativos e outros, incluindo código embutido Python
  • Habilidade de exibição de todas as versões e pacotes de origem na busca
  • Corrigido o problema de pacotes com código pré carregado
  • Expandido o limite de tamanho de argumentos na chamada

Múltiplos registros

0
0 50
Anúncio Timothy Leavitt · Out. 28, 2021

Eu gostaria de chamar a atenção de vocês ára duas sessões do Virtual Summit, mesmo elas não sendo tão legais quanto a Embedded Python.

Git & GitLab for Shared Development Environments detalha o recém lançado pacote git-source-control  (veja também no Open Exchange) que disponibiliza uma nova solução de ponta para integração IRIS/Git no lado servidor, especialmente para ambientes de desenvolvimento remotos compartilhados. (Eu preciso escrever uma postagem especifica sobre este pacote e planejo fazê-lo em breve.)

0
0 85
Artigo Nikolay Solovyev · Nov. 9, 2020 1m read

Nós lançamos uma nova versão do ZPM (Gerenciador de Pacotes)

Novidades desta nova versão:

1) Suporte de Interoperabilidade - Suporte a dtl, bpl, lut, esd, x12 no module.xml

Agora é permitido se referir a arquivos DTL e BPL. O ZPM armazena e os utiliza como CLS. <--break->

    <Resource Name="ResourceTest.TestDTL.dtl"/>
    <Resource Name="ResourceTest.TestBPL.bpl"/>

Outros componentes de interoperabilidade como LUT, ESD, X12 devem estar em formato XML com extensão .xml e são esperados na pasta com nome i14y (forma reduzida para interoperabilidade)

0
0 106