Pesquisar

Limpar filtro
Artigo
Yuri Marx Pereira Gomes · jan 16, 2021

Criando e listando definições de XData

Oi Comunidade InterSystems! A linguagem ObjectScript do InterSystems IRIS possui a capacidade de estender classes utilizando um recurso muito interessante chamado XData. Trata-se de uma seção em sua classe que pode ser utilizada para criar definições personalizadas a serem utilizadas dentro da própria classe e também externamente. Para criar uma ou mais definições de XData para sua classe é muito fácil, veja o exemplo: Class dc.Sample.Person Extends (%Persistent, %JSON.Adaptor, %Populate) { Property Name As %VarString; Property Title As %String; Property Company As %String; Property Phone As %VarString; Property DOB As %Date(MAXVAL = "$piece($horolog, "","", 1)"); /// Index for property DOB Index DOBIndex On DOB; ClassMethod AddTestData(amount As %Integer = 10) { d ..Populate(amount) } /// Documentation for Person XData PersonDocHtml [ MimeType = text/html ] { <h1>This is the Person class</h1> } XData PersonDocMarkdown [ MimeType = text/markdown ] { <h1>This is the Person class</h1> } Veja que logo após as definições dos métodos, basta adicionar uma ou mais seções XData com três seções: XData NomeSecaoXData [MimeType = TipodeMimeType]. O conteúdo então é colocado entre {}. Todos os elementos XData são armazenados na classe persistente %Dictionary.XDataDefinition. Isto significa que é possível recuperar as definições utilizando linguagem SQL, internamente ou externamente, veja o exemplo: ClassMethod Generate() { Set qry = "SELECT * FROM %Dictionary.XDataDefinition WHERE MimeType IN ('text/markdown','text/html')" Set stm = ##class(%SQL.Statement).%New() Set qStatus = stm.%Prepare(qry) If qStatus'=1 {Write "%Prepare failed:" Do $System.Status.DisplayError(qStatus) Quit} Set rset = stm.%Execute() While rset.%Next() { Write "Row count ",rset.%ROWCOUNT,! Write rset.parent Write ": ",rset.Description,!! } Write !,"End of data" Write !,"Total row count=",rset.%ROWCOUNT } } Neste exemplo, todos os elementos XData com Mime Type markdown e html são recuperados e então tem o nome da classe onde se encontra o XData e a descrição do XData. Caso queira recuperar conteúdo, basta obter a propriedade Data. Trata-se de uma funcionalidade muito interessante, pois podemos catalogar a documentação de todas as classes de uma aplicação e ter o fácil acesso a elas. Fantástico!
Artigo
José Hélington Pires da Cruz · Mar. 31, 2021

Execute seus pontos de endpoints http IRIS locais como https na Internet a partir do seu ambiente

Por padrão, o InterSystems IRIS expõe seus endpoints usando http, mas pode ser necessário executar https em seu ambiente de desenvolvimento e / ou obter acesso público à Internet para seu aplicativo. Você pode comprar ou obter um certificado e configurar um gateway, gastando muitas horas ou usando um ótimo serviço público chamado ngrok. Siga os passos: 1 - Execute seu aplicativo, usarei o template FHIR como amostra, veja: 1.1 baixe o aplicativo: git clone https://github.com/intersystems-community/iris-fhir-template.git 1.2 vá para o diretório do aplicativo: cd iris-fhir-template 1.3 execute o aplicativo: docker-compose up -d 1.4 obter acesso ao endpoint do postman ou outro cliente api: http: // localhost: 32783 / fhir / r4 / Patient / 1 2 - Você pode ver que o nó de extremidade roda apenas localhost e usando http. Agora usamos o ngrok para resolver isso: 2.1 - Acesse https://ngrok.com/, crie uma conta grátis e faça o login no ngrok. Você pode ver muitas opções, incluindo o uso de ngrok em seus arquivos yml. 2.2 - No ngrok, vá para Configuração e instalação (https://dashboard.ngrok.com/get-started/setup) e baixe o ngrok específico para o seu sistema operacional. 2.3 - Descompacte o arquivo no caminho raiz do seu aplicativo (ou qualquer caminho, como a pasta de seus aplicativos). 2.4 - Autentique seu cliente no servidor ngrok usando as instruções em Autenticação> Seu Authtoken (https://dashboard.ngrok.com/auth/your-authtoken). No meu caso (windows) eu executei: ngrok.exe authtoken 1iCGsc8NEmHTjfe43wmqavSHT2y_7T......... 2.5 - Ngrok salve seu authtoken em seu diretório home, para que nas próximas vezes não será necessário autenticar novamente, apenas use o serviço. 2.6 - Agora, você precisa saber sua porta http, no meu caso é 32783 (http: // localhost: 32783). Corre: ngrok.exe http 32783 2.7 - Você pode ver o seu endereço https ou http público para o seu endpoint: 2.8 - Teste seu novo endpoint no carteiro ou em qualquer cliente de descanso, no meu caso https://9ec669d2221b.ngrok.io/fhir/r4/Patient/1. 2.9 - Ngrok oferece muitos outros cenários de caso de uso (webhook, ssh, etc), consulte: https://dashboard.ngrok.com/get-started/tutorials.
Anúncio
Angelo Bruno Braga · Jul. 7, 2021

Simplificando a Arquitetura de Dados: Porque utilizar Múltiplos Repositórios de Dados quando você pode utilizar apenas um ?

Olá Comunidade, Enfrentando complexidades arquiteturais desnecessárias? Muitas situações complexas para lidar? Se você tem enfrentado estes tipos de problemas, você está precisando de uma simplificação de sua arquitetura. Não perca o webinar em inglês sob demanda por @Jeff.Fried ou leia seu blog recente para descobrir os recursos InterSystems que podem te ajudar a simplificar sua arquitetura de dados. Quer saber mais? Visite nossa landing page para descobrir mais sobre os diferentes caminhos que você pode adotar para simplificar sua arquitetura de dados com a InterSystems. Detalhes abaixo. Porque utilizar múltiplos repositórios de dados quando você pode utilizar apenas um? Conforme condições econômicas mais otimistas emergem depois da pandemia, organizações necessitarão de uma visão única e em tempo real dos dados de forma precisa e confiável, de forma que seja possível a entrega de valor aos clientes, a redução de risco e a reação rápida a novas oportunidades e desafios. Alcançar estes objetivos entretanto, está longe de ser uma tarefa fácil de ser realizada. Um desafio comum que costumamos ouvir de nossos clientes é que através dos anos eles acabam por acumular múltiplas e diversas tecnologias para gerenciar as distintas cargas de trabalho e diferentes tipos de dados. Esta situação faz com que eles acabem por enfrentar uma complexidade arquitetural desnecessária, problemas de latência, bem como o desafio de lidar com muitas outras situações complexas derivadas desta situação. Este é o tipo de situação que precisa de uma simplificação arquitetural. Para explicar melhor esta situação, nosso Diretor de Gerenciamento de Produtos, @Jeff.Fried palestrou no recente evento da IASA (Sociedade Irlandesa de Computação) sobre os diferentes métodos que podem ser utilizados para simplificar sua arquitetura de dados. Os caminhos para que sejam alcançados custos reduzidos, aumento de performance e uma maior e melhor segurança incluem: Adoção de uma base de dados multi-modelo Implantação de uma plataforma de dados translítica Capitalização do processo de machine learning integrado à base de dados Se você perdeu o webinar ao vivo você pode ouvir agora sob demanda do próprio Jeff sobre os prós e contras e as tendências que podem ajudá-lo a entender o que é possível ser alcançado com o uso de bases de dados multi-modelo e multi-workload, ouvindo seu webinar em inglês sob demanda ou lendo sua recente postagem no blog. Quer debater a respeito? Por favor sinta-se a vontade para compartilhar seus pensamentos nos comentários desta postagem. Fiquem ligados! ➡️ Landing page ➡️ Webinar em inglês sob demanda ➡️ Postagem no Blog
Artigo
Henrique Dias · Out. 21, 2021

Visual Trace e a liberdade de poder testar coisas novas

Fala pessoal, beleza? Como vocês exercitam sua criatividade? Como testam novas ideias? Ao longo dos anos sempre pensei em criar coisas novas, modificar as existentes, experimentar, testar, quebrar (sempre acontece ), construir de novo, recomeçar. Os concursos promovidos pela InterSystems são uma excelente fonte de motivação, obviamente os prêmios chamam muito a atenção e isso você não pode negar. Mas, não apenas prêmios, eles também nos dão um desafio criativo, uma oportunidade para criar, reimaginar, testar, experimentar. E a beleza de tudo isso é que você é livre para fazer o que quiser! Vejo essas oportunidades como uma chance de criar meu próprio What if? (Aquela série onde a Marvel libera os autores para reimaginarem as histórias a vontade) e tenho tido a sorte de contar com um autor que embarca comigo nessas ideias Valeu @José.Pereira No último concurso sobre Interoperabilidade, criei o Message Viewer e nesse concurso atual de Interoperabilidade eu trago novamente o Message Viewer, mas dessa vez com o nosso próprio Visual Trace! Quem já trabalha com a tecnologia da InterSystems e conhece a parte de integração (Ensemble/Interoperability), sabe que o Visual Trace está lá há muito tempo, daquele mesmo jeitinho e não tem nenhum problema. Ele funciona, exibe o diagrama de sequência da sua mensagem, mostra os detalhes, traz as informações, XML, etc. Mas... só porque ele funciona, não posso reimaginar? Tentar trazer uma nova perspectiva e talvez incentivar uma pequena mudança? Steve Rogers está aí como exemplo, Capitão América, garoto propaganda Marvel e nem por isso eles deixaram de imaginar Peggy Carter como a Capitã da vez 😂 Então vamos falar um pouco sobre a nossa nova "Peggy Carter", digo, Visual Trace Nosso bom e velho Visual Trace está representado abaixo: Agora, imagine ter um mundo de mensagens aqui e você não ter como reenviar uma simples mensagem?! Você teria que voltar para a tela do Message Viewer, vasculhar, pesquisar e reenviar sua mensagem. Por isso, pensamos em mostrar que é possível sim, trazer as informações com um novo visual, oferecer uma funcionalidade simples e acredito que pode sim, auxiliar e facilitar a vida do desenvolvedor. DEMO https://iris-message-viewer.contest.community.intersystems.com/csp/msgviewer/messageviewer.csp Se você curtiu o aplicativo, curte o que estamos fazendo na comunidade, por favor vote em IRIS Message Viewer e nos ajude nessa jornada! https://openexchange.intersystems.com/contest/current
Anúncio
Evgenia Kurbanova · Maio 14, 2021

Conheçam os ganhadores do Global Masters do mês de Abril

Olá Desenvolvedores, É hora de anunciar os Ganhadores de Abril de 2021! Vamos receber e comemorar nossos incríveis Heróis do Global Masters! E a chuva de aplausos vai para estes desenvolvedores e sua enorme contribuição para a Comunidade de Desenvolvedores em Abril de 2021: 🥇 @Dmitriy Maslennikov, Co-fundador, CTO e Desenvolvedor, CaretDev Corp, Rússia 🥈 @Lorenzo.Scalese, Arquiteto de Soluções, Zorgi, Bélgica 🥉 @Robert.Cemper1003, ex Sales Engineer Sênior na InterSystems, Áustria Aprenda mais sobre a competição e sobre nossos incríveis ganhadores abaixo. Sobre @Lorenzo.Scalese Lorenzo alcançou o distintivo Master of Answers por 5 respostas aceitas na Comunidade de Desenvolvedores, publicado 3 artigos, e 21 comentários, ganhou o distintivo Bronze Open Exchange Developer por 5 Apps no Open Exchange, e o distintivo Post 5 Reporter Badge por 5 artigos na Comunidade de Desenvolvedores – Parabéns pelo feito! 🤩 "Sou arquiteto de soluções na Zorgi. Zorgi é especialista e líder no mercado Belga em soluções de TI para o setor de saúde. Eu iniciei minha carreira em 2007 como desenvolvedor e trabalhando em vários projetos relacionados a indústria de saúde: soluções de registro médico eletrônico (EMR), soluções para radiologia, conectividade com soluções de RIS\PACS e modalidades ionizantes, central nacional de intercâmbio de dados de saúde,... Hoje, meu trabalho é principalmente definir a arquitetura geral de uma solução de EMR, criando ferramentas para desenvolvimento, roteiros para desenvolvimento e migração de aplicações baseadas em Caché\HealthShare para IRIS utilizando contêineres. Tenho trabalhado com tecnologia InterSystems desde que iniciei minha carreira. desde o Caché 5.2 até o IRIS atualmente. Sobre mim: Nasci na Bélgica em 1984, meus pais são Italianos. Eu vivo em uma vila no interior, casado, pai de 2 meninos (11 e 8 anos). Meus passatempos: tecnologias, passeios de mountain bike , faça você mesmo, e vídeo games Abaixo uma foto de minha vila: " 🔗Conecte-se com o Lorenzo agora para impulsionar sua rede: Twitter Developer Community LinkedIn Sobre @Dmitriy Maslennikov Dmitry ganhou o distintivo Silver Open Exchange Developer por 10 Apps no Open Exchange, escreveu 3 novas postagens, 35 comentários, e 9 respostas aceitas, adicionou 3 aplicações no Open Exchange, teve uma grande atividade no Global Masters - Parabéns ! 🥳 e obrigado pela contribuição constante na Comunidade de Desenvolvedores! Leiam por favor a biografia de Dmitry nesta postagem. 🔗Conecte-se ao Dmitry agora para impulsionar sua rede: Twitter Developer Community LinkedIn Sobre @Robert.Cemper1003 Em Abril, Robert ganhou o distintivo Advanced Translator 🧑‍🎓, subiu 3 aplicações para o Open Exchange, e fez 74 comentários na Comunidade de Desenvolvedores. Obrigado, Robert! ✨ Leiam por favor a biografia de Robert nesta postagem. 🔗Conecte-se ao Robert na Comunidade de Desenvolvedores agora para impulsionar sua rede! Nossos agradecimentos a todos os vencedores pela sua grande e constante contribuição para a Comunidade de Desenvolvedores InterSystems! Vamos dar os parabéns a nossos Heróis nos comentários abaixo! Sobre a competição Global Master do Mês no Global Masters: Todos os meses, nomeamos os participantes que se esforçaram ao máximo estando altamente engajados na Global Masters e na Comunidade de Desenvolvedores. Os vencedores recebem 1000 pontos e um distintivo especial. Também oferecemos aos vencedores a publicação de suas biografias - agora no artigo na Comunidade de Desenvolvedores
Artigo
Danusa Calixto · Out. 27, 2022

O Servidor FHIR alimenta o Project Vulcan na HL7 FHIR Connectathon

![imagem](/sites/default/files/inline/images/vulcan-logo-full.png) Coloquei o Servidor FHIR da InterSystems para trabalhar na[ HL7 FHIR Connectathon em Baltimore](https://www.hl7.org/events/working_group_meeting/2022/09/) no último final de semana, postando pacotes, usando recursos Rest e interrogando o [Guia de Implementação Vulcan](http://www.hl7.org/vulcan/). Nós montamos os projetos Real World Data (RWD) e Schedule of Activity (SoA) para o pessoal do Vulcan IG, indo em frente e conectando pesquisa clínica e dados de saúde. Empregamos uma abordagem bastante decente para atender aos requisitos, Com os colegas da InterSystems (Huy, Russell, Regilo), estávamos responsáveis por dar suporte ao Servidor FHIR e à apropriação de dados para o evento. Se você já foi encarregado de digitar Pacotes FHIR para um caso de uso específico, acho que pode apreciar como a dificuldade pode ser enganosa. Provemos alguns Servidores FHIR da InterSystems do tamanho de um aparelho de som, 16 núcleos/128 GB, um para cada projeto, e começamos a trabalhar para cada equipe. As equipes vieram preparadas com seus notebooks Python contra nossos endpoints, com a expectativa de escrever uma História FHIR para a SCA, com um script de teste processual validando as chamadas retornadas com os resultados esperados. A meta da coorte para o RWD era bastante simples nas consultas de exemplo da[ Síndrome coronária aguda](https://build.fhir.org/ig/HL7/vulcan-rwd/acs.html) para mim: **Não é?** ``` /Patient?birthdate=le2002-09-01&gender=male,female /Encounter?reason-code:below=I20,I21,I22,I23,I24,I25&date=ge2020-09-01&date=le2021-09-31&status=finished&dischargeDisposition:not=exp /MedicationAdministration?status=completed&effective-time=ge[Encounter-Start-Date]& code=http://www.nlm.nih.gov/research/umls/rxnorm|1116632,http://www.nlm.nih.gov/research/umls/rxnorm|613391,http://www.nlm.nih.gov/research/umls/rxnorm|32968,http://www.nlm.nih.gov/research/umls/rxnorm|687667,http://www.nlm.nih.gov/research/umls/rxnorm|153658 ``` **Claro...** **Fracassos** *Falha do Pacote de Submódulo Synthea* De maneira esperançosa, nossa primeira ave-maria foi para gerar 2 milhões de recursos e milhares de Pacotes Synthea (usando este adorável[ repositório da InterSystems](https://github.com/intersystems-community/irisdemo-base-synthea)) para o endpoint de transação e o recurso de upload do Gerenciamento de Dados, incluindo vários submódulos centrados no coração e comutadores sofisticados... ``` docker run --rm -v $PWD/output:/output -v $PWD/modules:/modules --name synthea-docker intersystemsdc/irisdemo-base-synthea:version-$VERSION --exporter.practitioner.fhir.export true --exporter.hospital.fhir.export true --exporter.fhir.use_us_core_ig true -p 500 -s 21 -d /modules ``` Não alcançamos isso, o que não é surpreendente, eu acho, mas eu meio que esperava pelo menos chegar perto. Não chegamos. **Vitórias** *O Processo de Geração de Dados* Então, o [Geoff Low](https://github.com/glow-mdsol) nos deu uma pista sobre seu processo, nos separamos e prosperamos... é assim que o processo acontece. 1. Pegue um pacote de ponto de partida, em especial um que seja relevante para a Pesquisa e que tenha um mínimo de pacientes e encontros e use o pacote SDTM no [sourceforge](https://sourceforge.net/projects/fhirloinc2sdtm/files/LZZT_Study_Bundle/): 2. Agora, implemente uma [etapa de patching](https://github.com/sween/soa-bridge-match/blob/feature/connectathon_31/upstream/patch_json.py), para colocar o pacote no lugar, certifique-se de que ele seja carregado com sucesso no Servidor FHIR, carregue ou poste o pacote. 3. Depois de um novo ponto de partida, [aumente os encontros](https://github.com/sween/soa-bridge-match/blob/feature/connectathon_31/src/soa_bridge_match/dataset.py) com os códigos de motivos previstos ( I20,I21,I22,I23,I24,I25 ). ``` reasons = ["I21","I22","I23","I24","I25"]``` ``` 4. Adicione medicamentos aos encontros, incluindo todos os medicamentos esperados para o encontro para a Pesquisa da SCA. ``` medchoices = [ { "code": "1116632", "display": "ticagrelor" }, { "code": "613391", "display": "prasurgrel" }, { "code": "32968", "display": "clopidogrel" } ] medchoice = random.choice(medchoices) medconcept = CodeableConcept( coding=[ Coding( code=medchoice["code"], display=medchoice["display"], system="http://www.nlm.nih.gov/research/umls/rxnorm", ) ] ) ``` > IMPORTANTE! Verifique se os medicamentos estão dentro das datas/horários do encontro. > 5. Em seguida, confira se os Encontros realmente são internações e inclua todos os tipos aplicáveis. ``` statuses = ["in-progress","finished"] dischargeCodes = { "code": "home", "display": "Home" }, { "code": "hosp", "display": "Hospice" }, { "code": "exp", "display": "Expired" }, { "code": "long", "display": "Long-term care" }, { "code": "alt-home", "display": "Alternative home" }, ] ``` **Outra vitória** *Implementando o Parâmetro de Pesquisa do GI* O Guia de Implementação Vulcan inclui um parâmetro de pesquisa que é necessário para retornar encontros por disposição de alta. Abordamos isso de duas maneiras: a. Carregar todo o GI b. Carregar o Parâmetro de Pesquisa Carregar só o Parâmetro de Pesquisa era o caminho mais curto e estávamos em uma situação complicada por tempo suficiente, então aqui está como foi esse processo. Criada a pasta `/tmp/mypackage`, adicione o parâmetro de pesquisa do GI e seu próprio arquivo do pacote. ``` [irisdeploy@ip-192-168-0-37 tmp]$ tree /tmp/mypackage /tmp/mypackage ├── package.json └── parameter.json ``` O arquivo do pacote pode parecer assim: ``` { "name":"ron.sweeney.r4", "version":"0.0.1", "dependencies": { "hl7.fhir.r4.core":"4.0.1" } } ``` Em seguida, carregue isso no IRIS, desta maneira: ``` TL4:IRIS:FHIRDB>do ##class(HS.FHIRMeta.Load.NpmLoader).importPackages($lb("/tmp/mypackage")) Saving ron.sweeney.r4@0.0.1 Load Resources: ron.sweeney.r4@0.0.1 ``` A próxima etapa é associar o pacote ao endpoint: ![imagem](/sites/default/files/inline/images/associate.png) Em seguida, indexe novamente os encontros no repositório: ![imagem](/sites/default/files/inline/images/reindexing.png) Agora, você já deve ter o parâmetro de pesquisa/pacote carregado no endpoint: ![imagem](/sites/default/files/inline/images/encounter.png) Com o parâmetro de pesquisa carregado, podemos agora usá-lo assim! `curl https://fhir.ggyxlz8lbozu.workload-prod-fhiraas.isccloud.io/Encounter?dischargeDisposition=hosp` Enfim, o processo funcionou para nós, e considerar a geração de pacotes pela visão do Python foi uma abordagem muito melhor do que o Synthea às vezes é para conjuntos de dados minuciosos. O conjunto de dados resultante com que saímos no Domingo está [aqui](https://github.com/sween/soa-bridge-match/tree/feature/connectathon_31/upstream/subjects_35). Só queria compartilhar a experiência e agradecer às equipes dos projetos por tornarem o que pensei que seria um pesadelo em uma experiência divertida e educativa!
Anúncio
Daniel Alves de Souza · Set. 3, 2021

Oportunidade para atuar como Especialista de Integrações (Ensemble e Caché)

Estamos com uma oportunidade para atuar como Especialista de Integrações (Ensemble e Caché) na AFIP Medicina Diagnóstica e gostaria de saber se tem interesse ou alguém para indicar : Segmento de Atuação : Sáude/ Laboratorios/ Medicina Período : Indeterminado Tipo de Contratação : CLT Local : Full Remote Inicio : Imadiato 1) Especialista de Integrações (Ensemble e Caché) -Atividades a serem realizadas: -Profissional responsável pelas integrações entre Sistemas (Especialista). -Responsável por analisar, documentar, solicitar às empresas parceiras, implementar, implantar, documentar, monitorar e suportar integrações entre os sistemas da AFIP e sistemas de Clientes e/ou parceiros. -Deverá também administrar execuções de scripts na base de produção bem como gerenciar intervenções de terceiros na base de produção para correções de problemas. Como líder técnico, terá como principais responsabilidade: - Documentar estrutura dos sistemas AFIP; - Participar de Reuniões técnicas com fornecedores/colaboradores - Responsável técnico pela arquitetura de integrações entre sistemas. - Responsável pela homologação de sistemas de terceiros. - Responsável por manter catálogo de serviços de integração de dados. - É fundamental que o profissional conheça as tecnologias da Intersystems (Ensemble e Caché) Por favor, enviar CV atual com pretensão salarial CLT para: leonardo@inovation.com.br Assunto: Especialista de Integrações
Pergunta
Anderson F · Abr. 5, 2022

Como obter informações de Locks via consulta SQL?

Bom dia a todos. Preciso consultar informações das tabelas/classes que estejam em lock Eu achei na documentação a classe %SYS.LockQuery mas no exemplo ela parece ser uma Class Query(não estou acostumado com esse conceito) e só consigo consumir os dados via Object Script usando um %ResultSet Existe alguma forma de consumir essas informações diretamente via SQL ? Grato por qualquer ajuda Anderson, Acho que esse formato especifico de query é somente via resultset. Se você realmente precisar disso no SQL uma abordagem poderia ser criar uma sqlproc que internamente chama esse resultset e entrega o resultado. Veja se essa documentação te ajuda: https://docs.intersystems.com/ens201815/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_queries#GOBJ_queries_userqueries_example Oi @Djeniffer.Greffin7753 Primeiramente , muito obrigado pelo seu retorno. Essa sua sugestão é válida, e acredito que atenda o que eu pretendo, irei tentar implementar baseando-me no link que vc me mandou. Só acho estranho a intersystems não ter disponibilizado uma interface SQL pronta para isso. Quando li na documentação que essa informação ficaria em uma "Tabela de Lock" imaginei que seria como em outros bancos de dados Novamente meu muito obrigado pela sua ajuda Djeniffer
Anúncio
Angelo Bruno Braga · Nov. 10, 2022

Anunciando o SAM (System Alerting & Monitoring -> Alerta e Monitoramento do Sistema) 2.0

A InterSystems tem o prazer de anunciar o lançamento do System Alerting & Monitoring (SAM) versão 2.0 O que é o SAM? O SAM se conecta aos padrões utilizados nas APIS de Monioramento e do Monitor de Logs do IRIS com ferramentas familiares padrão do setor, como Grafana e Prometheus, para criar uma solução básica de monitoramento e alerta para clusters IRIS. Para saber mais sobre SAM, consulte o Guia de Alerta e Monitoramento do sistema. O que há de novo no SAM 2.0? As ferramentas padrão do setor nas quais o SAM se baseia foram todas atualizadas. Exportação e importação de configurações – agora você pode exportar sua configuração do SAM e reimportá-la para outra instância do SAM. Isso facilita a mudança de um ambiente para outro. Vários painéis do Grafana – Agora você pode criar vários painéis no Grafana e escolher o que deseja mostrar por padrão para cada instância do IRIS. HTTPS e prefixos de URL – o SAM agora pode usar HTTPS para coletar dados de observabilidade de suas instâncias IRIS. Além disso, você tem a opção de especificar um “prefixo de caminho de URL” que permite ao SAM monitorar várias instâncias IRIS em execução no mesmo host. Veja a documentação para obter mais informações sobre o SAM 2.0.
Pergunta
Helder Pizzetti · Abr. 12, 2021

Abrir Bases de dados (.dat) antigas com cache

Boa tarde, Necessito abrir algumas bases de dados antigas. Quero dados e programas. Como proceder para conseguir? Helder bom dia Helder, como você já tem acesso ao terminal (entendo que sim pois você enviou o $ZV) você poderia usar o Studio para ter acesso aos programas(rotinas), classes/tabelas(estrutura de dados), se não forem globais, e com isso acesso aos dados. ou executar a aplicação e ter acesso aos dados. Se você está precisando extrair dados, vai precisar de conhecer o modelo de dados desta base. Agora o seu $ZV aponta para a versão 5.2 de 2006, é isto mesmo? Rochael boa tarde, Não tenho acesso ao terminal. O $ZV eu peguei de um arquivo texto que achei. Na realidade só tenho as Bases de Dados no formato .DAT do caché. Gostaria de abrir estas bases de dados. Este é o meu problema. Não tenho software algum da Intersystems instalado neste momento. Todo conteúdo destas bases foram desenvolvidas por mim. Como fazer? Agradeço vossa atenção. Helder Infelizmente não existe alternativa para acesso ao cache.dat que não seja com a instalação do Caché e montagem deste cache.dat neste ambiente. o motivo é segurança. não vou dizer impossível, mas muito improvável que alguém consiga acessar o cache.dat sem o ambiente Caché. o ideal é que você tenha o Caché 5.2 mesmo, mas uma versão superior não muito tempo distante de 2006 pode montar este cache.dat, e provavelmente seria necessário rodar um upgrade. Você tem a licença do Caché 5.2? A aplicação que você criou era character mode? para tentar alguma alternativa vai depender do que você tem no Cache.dat e como foi criado. me conte um pouco da historia para ver se ajudo mais. pode me mandar um email diretamente se preferir. Boa tarde, Tenho esta licença. [ConfigFile]FileType=License 5.1 [License]LicenseCapacity=Cache Department for Intel (Windows):2CustomerName=HP7 Informatica LtdaOrderNumber=200715550ExpirationDate=7/3/2031 Se tivesse arquivo para instalação eu tentaria. Além de ter esquecido Login padrão da intersystems. Helder boa tarde Helder, agora tá mais fácil. você poderia me enviar o cache.key para o email rochael@intersystems.com por favor? vou ver internamente como eu recupero seu acesso para baixar a versão em questão. me avise aqui quando enviar para não ficar perdido no spam!!!! obrigado, Olá, Enviei para seu E-mail. Helder
Pergunta
Fabio Silva · Jun. 25, 2021

Case em virtualização

Bom dia. Alguém tem algum case de utilização do Caché / Ensemble versões 2009, 2012 e 2018 no ambiente produtivo com o ESXI 7.0 da vmware? Falei com a InterSystems e eles responderam que não homologam virtualização, porém gostaria de saber se alguém tem algum caso de uso. Obrigado. Olá Fabio, Onde trabalho temos alguns ambientes virtualizados com o Caché. Qual sua dúvida especificadamente? oi Djeniffer. A dúvida é se vocês utilizam o Caché / Ensemble versões 2009, 2012 e 2018 no ambiente produtivo com o ESXI 7.0 da vmware Olá Fabio, A gente usa a versão 6.7. Mas, já atendi alguns clientes com a versão 7 rodando a versão 2018 do caché. Obrigado lembro que o VMware 7 foi lançado em Abril de 2020. Ou seja, versões mais antigas do nosso produto, não foram testas neste novo ambiente. April 2, 2020 Most users automatically associate virtualization with VMware. System administrators respect VMware for its great reliability, performance and usability. The official vSphere 7 release date was April 2, 2020. vSphere 7 is the newest version of the virtualization platform adding many new features.
Artigo
Anastasia Dyubaylo · Fev. 18, 2021

Como ganhar pontos no Global Masters ?

Olá Desenvolvedores ! Não é segredo para ninguém que o Global Masters está fortemente ligado a Comunidade de Desenvolvedores. Qualquer contribuição feita à Comunidade de Desenvolvedores acabará por prover pontos para o Global Masters. Para orientá-los preparamos um pequeno guia de como ganhar pontos no Global Masters: COMO GANHAR PONTOS NO GLOBAL MASTERS Cada post publicado na Comunidade de Desenvolvedores em Inglês Cada post publicado na Comunidade de Desenvolvedores em Português / Espanhol / Chinês / Japonês 200 400 1° Comentário na Comunidade de Desenvolvedores Cada Comentário na Comunidade de Desenvolvedores em Inglês* Cada Comentário na Comunidade de Desenvolvedores em Português* 300 30 60 Primeira resposta marcada como Aceita / cada resposta aceita 1 000 / 150 Tradução de um artigo 100 Publicação de 1 / 5 / 10 / 25 / 50 artigos na Comunidade de Desenvolvedores 1 500 / 7 500 / 15 000 / 40 000 / 75 000 Publicação de 1 / 5 / 10 / 25 / 50 perguntas na Comunidade de Desenvolvedores 500 / 2 000 / 5 000 / 15 000 / 30 000 Cada Aplicação no Open ExchangePontos Bônus para cada aplicação ZPM Publicação de 1 / 5 / 10 / 25 aplicações no Open Exchange 8004001 000 / 10 000 / 25 000 / 75 000 1 / 5 / 10 / 25 / 50 respostas aceitas na Comunidade de Desenvolvedores 1 000 / 4 000 / 8 000 / 20 000 / 40 000 750+ / 2000+ / 5000+ / 15000+ visualizações de sua publicação 600 / 2 500 / 7 000 / 20 000 Ler um artigo na Comunidade de DesenvolvedoresVer o vídeoCompartilhar um artigo / vídeo nas Redes Sociais 102040 Escrever 1 / 2 / 3 / 4 / 5 Artigos com a tag Melhores Práticas 1000 / 3000 / 7000 / 10 000 / 15 000 50 / 100 / 250 / 500 / 1000 downloads de sua aplicação no Open Exchange 2 500 / 5 000 / 7 500 / 12 500 / 25 000 Escrever uma avaliação da InterSystems / produtos InterSystems 2 000 / 3 000 Convidar um amigo para a Comunidade de Desenvolvedores 600 Criar um vídeo sobre sua aplicação OEX 3000 *contados somente os comentários que foram publicados após o registro no Global Masters . Completem os desafios, adquiram os distintivos, aumente seu nível. Quanto maior for o seu nível, melhores e mais interessantes são os prêmios disponíveis ! Vejam as informações adicionais sobre o Global Masters: O que é o Global Masters ? Comece sua jornada aqui ! Descrição dos Distintivos do Global Masters Descrição dos Níveis do Global Masters
Artigo
Guillaume Rongier · jan 11, 2021

iOS, FHIR e IRIS for Health

# Swift-FHIR-Iris Aplicativo iOS para exportar dados HealthKit para o InterSystems IRIS for Health (ou qualquer repositório FHIR) ![main](https://raw.githubusercontent.com/grongierisc/Swift-FHIR-Iris/main/img/gif/FHIR.png) # Índice * [Objetivo desta demonstração](#goal) * [Como executar esta demonstração](#rundemo) * [Pré-requisitos](#prerequisites) * [Instale o Xcode](#installxcode) * [Abra o projeto SwiftUi](#openswiftui) * [Configure o simulador](#simulator) * [Inicie o servidor InterSystems FHIR](#lunchfhir) * [Brinque com o aplicativo iOS](#iosplay) * [Como funciona](#howtos) * [iOS](#howtosios) * [Como verificar a autorização para dados de saúde](#authorisation) * [Como se conectar a um repositório FHIR](#howtoFhir) * [Como salvar um paciente no repositório FHIR](#howtoPatientFhir) * [Como extrair dados do HealthKit](#queryHK) * [Como transformar dados HealthKit em FHIR](#HKtoFHIR) * [Backend (FHIR)](#backend) * [Frontend](#frontend) * [Tarefas](#todo) Objetivo desta demonstração O objetivo é criar uma demonstração de ponta a ponta do protocolo FHIR. O que quero dizer com de ponta a ponta é, de uma fonte de informação como um iPhone. Colete seus dados de saúde no formato Apple (HealthKit), transforme-os em FHIR e envie para o repositório InterSystems IRIS for Health. Essas informações devem ser acessíveis por meio de uma interface web. iPhone -> InterSystems FHIR -> Página Web. Como executar esta demonstração Pré-requisitos Para a parte do cliente (iOS) Xcode 12 Para o servidor e aplicativo web Docker Instale o Xcode Não há muito o que falar aqui, abra a AppStore, procure por Xcode, instale. Abra o projeto SwiftUi Swift é a linguagem de programação da Apple para iOS, Mac, Apple TV e Apple Watch. É o substituto do objective-C. Clique duas vezes em Swift-FHIR-Iris.xcodeproj Abra o simulador clicando na seta superior esquerda. Configure o simulador Vá em Health Clique em Steps Add Data Inicie o servidor InterSystems FHIR Na pasta raiz deste git, execute o seguinte comando: docker-compose up -d No final do processo de construção, você será capaz de se conectar ao repositório FHIR: http://localhost:32783/fhir/portal/patientlist.html Este portal foi feito por @diashenrique. Com algumas modificações para lidar com os passos de atividade da Apple. Brinque com o aplicativo iOS O aplicativo primeiro solicitará que você aceite o compartilhamento de algumas informações. Clique em authorize Então você pode testar o servidor FHIR clicando em 'Save and test server' As configurações padrão apontam para a configuração do docker. Se tiver sucesso, você pode inserir as informações do seu paciente. Nome, Sobrenome, Aniversário, Gênero. Salve o paciente para FHIR. Um pop-up mostrará seu ID FHIR único. Consulte este paciente no portal: Acesse: http://localhost:32783/fhir/portal/patientlist.html Podemos ver aqui, que há um novo paciente "toto" com 0 atividades. Envie suas atividades: Volte para o aplicativo iOS e clique em Step count Este painel resume a contagem de passos da semana. No nosso caso, 2 entradas. Agora você pode enviá-los para o InterSystems IRIS FHIR clicando em enviar. Consulte as novas atividades no portal: Podemos ver agora que o Toto tem duas novas observações e atividades. Você pode eventualmente clicar no botão do gráfico para exibi-lo como um gráfico. Como funciona iOS A maior parte desta demonstração é construída em SwiftUI. https://developer.apple.com/xcode/swiftui/ Que é o framework mais recente para iOS e co. Como verificar a autorização para dados de saúde Ele está na classe SwiftFhirIrisManager. Esta classe é um singleton e estará carregando todo o aplicativo com a anotação @EnvironmentObject. Mais informações em: https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-environmentobject-to-share-data-between-views O método requestAuthorization: // Solicita autorização para acessar o HealthKit. func requestAuthorization() { // Solicitando autorização. /// - Tag: RequestAuthorization let writeDataTypes: Set<HKSampleType> = dataTypesToWrite() let readDataTypes: Set<HKObjectType> = dataTypesToRead() // pedido de autorização healthStore.requestAuthorization(toShare: writeDataTypes, read: readDataTypes) { (success, error) in if !success { // Trata o erro aqui. } else { DispatchQueue.main.async { self.authorizedHK = true } } } } Onde healthStore é o objeto de HKHealthStore(). O HKHealthStore é como um banco de dados de dados de saúde no iOS. dataTypesToWrite e dataTypesToRead são os objetos que gostaríamos de consultar no banco de dados. A autorização precisa de um propósito e isso é feito no arquivo xml Info.plist adicionando: <key>NSHealthClinicalHealthRecordsShareUsageDescription</key> <string>Read data for IrisExporter</string> <key>NSHealthShareUsageDescription</key> <string>Send data to IRIS</string> <key>NSHealthUpdateUsageDescription</key> <string>Write date for IrisExporter</string> Como conectar a um repositório FHIR Para esta parte usei o pacote FHIR do Smart-On-FHIR: https://github.com/smart-on-fhir/Swift-FHIR A classe usada é a FHIROpenServer. private func test() { progress = true let url = URL(string: self.url) swiftIrisManager.fhirServer = FHIROpenServer(baseURL : url! , auth: nil) swiftIrisManager.fhirServer.getCapabilityStatement() { FHIRError in progress = false showingPopup = true if FHIRError == nil { showingSuccess = true textSuccess = "Connected to the fhir repository" } else { textError = FHIRError?.description ?? "Unknow error" showingSuccess = false } return } } Isso cria um novo objeto fhirServer no singleton swiftIrisManager. Em seguida, usamos getCapabilityStatement() Se pudermos recuperar a declaração de capacidade do servidor FHIR, isso significa que nos conectamos com sucesso ao repositório FHIR. Este repositório não está em HTTPS, por padrão, a apple bloqueia este tipo de comunicação. Para permitir o suporte HTTP, o arquivo xml Info.plist pode ser editado assim: <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>localhost</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> Como salvar um paciente no repositório FHIR Operação básica verificando primeiro se o paciente já existe no repositório Patient.search(["family": "\(self.lastName)"]).perform(fhirServer) Isso pesquisa por paciente com o mesmo sobrenome. Aqui, podemos imaginar outros cenários, como token Oauth2 e JWT para unir o patientid e seu token. Mas para esta demonstração, mantemos as coisas simples. Em seguida, se o paciente existe, nós o recuperamos, caso contrário, criamos o paciente: func createPatient(callback: @escaping (Patient?, Error?) -> Void) { // Cria um novo paciente let patient = Patient.createPatient(given: firstName, family: lastName, dateOfBirth: birthDay, gender: gender) patient?.create(fhirServer, callback: { (error) in callback(patient, error) }) } Como extrair dados do HealthKit Isso é feito consultando o healthkit Store (HKHealthStore()) Aqui nós estamos consultando os passos. Prepare a consulta com o predicado. //Semana passada let startDate = swiftFhirIrisManager.startDate //Agora let endDate = swiftFhirIrisManager.endDate print("Collecting workouts between \(startDate) and \(endDate)") let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions.strictEndDate) Em seguida, a própria consulta com seu tipo de dados (HKQuantityType.quantityType(forIdentifier: .stepCount)) e o predicado. func queryStepCount(){ //Semana passada let startDate = swiftFhirIrisManager.startDate //Agora let endDate = swiftFhirIrisManager.endDate print("Collecting workouts between \(startDate) and \(endDate)") let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions.strictEndDate) let query = HKSampleQuery(sampleType: HKQuantityType.quantityType(forIdentifier: .stepCount)!, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { (query, results, error) in guard let results = results as? [HKQuantitySample] else { return } process(results, type: .stepCount) } healthStore.execute(query) } Como transformar dados HealthKit em FHIR Para esta parte, usamos o pacote Microsoft HealthKitToFHIR https://github.com/microsoft/healthkit-to-fhir Este é um pacote útil que oferece factories para transformar HKQuantitySample em FHIR Observation let observation = try! ObservationFactory().observation(from: item) let patientReference = try! Reference(json: ["reference" : "Patient/\(patientId)"]) observation.category = try! [CodeableConcept(json: [ "coding": [ [ "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "activity", "display": "Activity" ] ] ])] observation.subject = patientReference observation.status = .final print(observation) observation.create(self.fhirServer,callback: { (error) in if error != nil { completion(error) } }) Onde item é um HKQuantitySample, em nosso caso, um tipo stepCount. O factory faz a maioria do trabalho de converter 'unit' e 'type' para FHIR codeableConcept e 'value' para FHIR valueQuantity. A referência ao PatientId é feita manualmente, lançando uma referência json fhir. let patientReference = try! Reference(json: ["reference" : "Patient/\(patientId)"]) O mesmo é feito para a categoria: observation.category = try! [CodeableConcept(json: [ "coding": [ [ "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "activity", "display": "Activity" ] ] ])] Por fim, a observação é criada no repositório fhir: observation.create(self.fhirServer,callback: { (error) in if error != nil { completion(error) } }) Backend (FHIR) Não há muito a dizer, é baseado no modelo fhir da comunidade InterSystems: https://openexchange.intersystems.com/package/iris-fhir-template Frontend É baseado no trabalho de Henrique, que é um bom front end para repositórios FHIR feitos em jquery. https://openexchange.intersystems.com/package/iris-fhir-portal
Artigo
Larissa Prussak · Mar. 12, 2021

Agende tarefas com uma linha usando iris-cron-task

Oi pessoal! Às vezes, preciso agendar uma tarefa programaticamente. E em 99% preciso que algum método de classe seja chamado periodicamente. E eu quero que a programação seja iniciada por uma linha. Como um trabalho no crontab. Decidi apresentar esse módulo com o módulo iris-cron-task. Veja os detalhes abaixo! Instale o módulo com: USER> zpm "install iris-cron-task" E então você poderá agendar tarefas com uma linha. Por exemplo, se eu quiser o seguinte comando: set ^A($I(^A))=$H ser iniciado a cada minuto, posso ligar para o seguinte: zw ##class(dc.cron.task).Start("Task name","* * * * *","set ^A($I(^A))=$H",1,.taskid) isso criará uma tarefa com taskid que será executada a cada minuto. Quando você não precisar mais da tarefa, pode excluí-la com: zw ##class(dc.cron.task).Kill(taskid) Eu suportei apenas algumas configurações de cron, como a cada minuto: * * * * * Toda hora: 0 * * * * E todos os dias em uma certa hora: 0 0 * * * Você pode achar útil o site cronmaker para obter a expressão cron para qualquer programação de que precisar. Obrigado a @Lorenzo Scalese por apresentar o suporte para uma expressão cron arbitrária. PR são bem-vindos se você precisar de mais! Espero que gostem, qualquer feedback é apreciado! Verifique o aplicativo relacionado no InterSystems Open Exchange
Anúncio
Angelo Bruno Braga · Mar. 31, 2022

Conheçam Lorenzo Scalese – o Novo Moderador da Comunidade de Desenvolvedores!

Olá Comunidade, Dêem as boas-vindas ao @Lorenzo.Scalese nosso novo Moderador em Francês na Equipe da Comunidade de Desenvolvedores! 🎉 Vamos receber o Lorenzo com muitos aplausos e dar uma olhada em sua biografia! @Lorenzo.Scalese é Arquiteto de Soluções na Zorgi. > Zorgi é especialista e líder no mercado belga em soluções de TI para o setor de saúde. Um pouco sobre o Lorenzo: Ele começou sua carreira 2007 como desenvolvedor e trabalhou em vários projetos relacionados a industria de saúde: Soluções de Registro Médico Eletrônico (EMR), soluções de radiologia, conectividade com RIS\PACS e modalidades ionizantes, intercâmbio de dados médicos nacional,... Ele tem trabalhado com tecnologias InterSystems desde que ele iniciou sua carreira, desde o Caché 5.2 até o IRIS hoje. Hoje seu trabalho é principalmente definir a arquitetura geral de uma solução de EMR, criando ferramentas de desenvolvimento, scripts de implantação e migrar as aplicações baseadas em Caché/HealthShare para IRIS utilizando contêineres. Alguns outros fatos sobre o Lorenzo: Ele nasceu na Bélgica em 1984, seus pais são Italianos. Ele mora em uma vila rural, casado e pai de dois meninos (11 e 8 anos de idade). Seus hobbies são tecnologia, codificar, passeios de mountain bike, Faça-você-mesmo e vídeo games. BOAS-VINDAS CALOROSAS! Obrigado e seja bem-vindo @Lorenzo.Scalese 👏🏼 Que a força de Moderador da Comunidade de Desenvolvedores esteja com você ;)