Limpar filtro
Artigo
Anastasia Dyubaylo · Fev. 18, 2021
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
# Swift-FHIR-Iris
Aplicativo iOS para exportar dados HealthKit para o InterSystems IRIS for Health (ou qualquer repositório FHIR)

# Í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
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
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ê ;)
Artigo
Claudio Devecchi · Mar. 11, 2021
### Healthshare - Unified Care Record
Todas as instituições de saúde hoje, sejam públicas ou privadas, enfrentam os mesmos desafios:
Como fazer com que todas as informações de cada paciente sejam facilmente transmitidas dos seus sistemas de origem para as pessoas que precisam delas e vice-versa?
E como utilizar todas estas informações para melhorar a tomada de decisões, a qualidade do atendimento e os resultados?
Para atingir estes objetivos e fazer com que a informação consolidada do indivíduo seja finalmente disponibilizada para os diversos usos é preciso que as informações fluam por uma série de processos que vão desde a coleta da informação no sistema de origem, o seu tratamento, até as diferentes formas de disponibilização para os usuários finais.
E é exatamente esta a especialidade do produto [HealthShare Unified Care Record](https://learning.intersystems.com/enrol/index.php?id=26) da InterSystems. Ele atua em todas as etapas do processo, de forma rápida, através de inúmeras ferramentas e funcionalidades, as quais explanarei a seguir:
### Interoperabilidade e Governança
Esta etapa engloba todos os mecanismos de coleta e tratamento das informações nos sistemas de origem, seja através de API’s com protocolos específicos de saúde como o HL7, seja através de processos específicos ou customizados.
Neste ponto, é importante que a plataforma de integração assegure flexibilidade, governança e segurança, além de performance e escalabilidade. Se qualquer sistema de origem “cair” a plataforma deve ter mecanismos de notificação para o time que gerencia o processo, assegurando que se o sistema voltar nenhuma informação será perdida.
A plataforma deve ser escalável tanto para “plugar” novas fontes de informação, quanto para suportar todas as requisições dos consumidores e usuários.
É muito comum sistemas de prontuário eletrônico internacionais fornecerem nativamente exportações de dados usando o protocolo HL7, que neste caso também é nativo nos produtos da Intersystems.
Os sistemas nacionais geralmente demandam processos menos padronizados, e é por isso que é necessário que a plataforma seja de fácil e rápida implementação, e que esteja preparada para trabalhar com os sistemas de prontuário eletrônico conhecidos no mercado brasileiro e fornecer outras abordagens de captura de dados que não exijam que o sistema de origem tenha API’s prontas para fornecer as informações necessárias.
### Gestão de Terminologia
Quando se junta informações de diferentes sistemas e fontes, se junta também inúmeros sistemas de codificações, sejam eles públicos ou proprietários. Exemplos: CID10, TUSS, LOINC, SNOMED CT, CBHPMl, etc.
Isso pode gerar uma dificuldade para interpretar todos estes distintos sistemas de codificação.
Um exemplo hipotético de terminologia:
0 sistema A registrou no episódio de atendimento de um determinado paciente o código “S53 – Luxação, entorse e distensão das articulações e dos ligamentos do cotovelo”, referente ao sistema de codificação CID10. O mesmo código foi registrado pelo sistema B com uma ligeira diferença na descrição, por exemplo “Luxação e dist. das art. e dos ligamentos do cotovelo”, sofrendo uma abreviação por uma questão de limitação do campo descrição no sistema de origem.
Se os diagnósticos tratarem da mesma pessoa e do mesmo sistema de codificação, o profissional usuário da informação consolidada espera ver e interpretar as informações apresentadas da mesma maneira, não com descrições distintas.
Se os diagnósticos tratarem da mesma pessoa, mas de sistemas de codificações distintos, é importante que o sistema ofereça mecanismos de De/Para das tabelas de codificação para serem aplicadas apenas no consumo das informações, facilitando assim a interpretação das informações aos seus usuários e a aplicação de algoritmos pelos cientistas de dados.
Também é fundamental que todo tratamento de terminologia não altere e mantenha a informação que foi registrada no seu sistema de origem, com o seu devido sistema de codificação. Esse princípio é importante para que se mantenha e respeite todo o lastro da informação original e evite interpretações equivocadas em função do tratamento do dado.
### Modelo Canônico de Dados e múltiplas formas de “input” ou consumo
Considerando apenas trocas de informações da área da saúde, há uma infinidade de protocolos. Temos por exemplo o HL7v2, o CCD, o PIX, o PDQ, DICOM para imagens, ASTM para laboratórios e o mais moderno HL7 FHIR, em diversas versões. No mercado nacional temos o TISS, que é utilizado para a saúde suplementar, entre muitos outros.
Todos estes padrões de interoperabilidade carregam informações relevantes do paciente e muitos deles são baseados em modelos de dados completamente distintos. E mesmo quando não surge um novo, todos estes citados anteriormente sofrem constantes atualizações. Sem considerar os modelos de mensagens proprietários no mercado brasileiro.
Levando em conta toda a variedade e dinamismo das mensagens, a InterSystems decidiu construir um modelo de dados central chamado de SDA (Summary Document Architecture) que fosse de simples entendimento, extensível e completo o suficiente para realizar a tradução, importação e exportação de todos estes protocolos que carregam as mensagens dos pacientes.
Isso dá uma enorme vantagem para quem irá construir regras de negócio para notificações clínicas, para sistemas de decisões clínicas (CDSS), algoritmos de predição ou para quaisquer outros processos ou fluxos de negócio.
Isso porque não exige que o especialista do negócio conheça os protocolos de entrada e saída, mas sim de apenas um único modelo de dados extremamente simplificado.
Outra vantagem é que a própria InterSystems mantem atualizada as bibliotecas de transformações dos protocolos conhecidos, tanto de entrada (captura) quanto de saída (consumo) para este modelo canônico central.
### Gestão de Consentimento
Em 2018, o Brasil passou a fazer parte dos países que contam com uma legislação específica para proteção de dados e da privacidade dos seus cidadãos. Isso significa que os dados pessoais e sensíveis não podem ser deliberadamente utilizados sem a obtenção da expressa autorização do seu proprietário.
Mesmo antes de entrar em vigor esta legislação, a plataforma HealthShare já contava com as seguintes funcionalidades:
• Cadastrar e manter políticas de consentimento dos dados em nível de ecossistema, de estabelecimento, ou por indivíduo, dando a opção de quais dados serão utilizados e para qual finalidade.
• Armazenar o registro do consentimento, considerando-o também como parte das informações do paciente.
• Aplicar as políticas de consentimento em toda a plataforma, fornecendo aos consumidores logs e mensagens específicas do motivo da não exibição de determinado grupo de informação.
• Fornecer API’s para que além da plataforma, outros sistemas e usuários possam acessar e utilizar estes registros de consentimento.
### Visualizador Clínico, Serviços e API’s
Depois que todas as informações do paciente são captadas, normalizadas e trabalhadas pela plataforma em todas as etapas descritas anteriormente, elas são disponibilizadas através de serviços na plataforma de Registro Unificado de Saúde.
O consumo destes serviços pode ocorrer de diversas maneiras, partindo de diferentes profissionais ou sistemas de informação.
A plataforma HealthShare Unified Care Record fornece nativamente as seguintes formas:
• **Visualizador Clínico**: Trata-se de uma aplicação responsiva que exibe aos profissionais de saúde e times de cuidado todas as informações relevantes do paciente. Nesta aplicação é possível visualizar todo o histórico evolutivo dos exames do paciente, as alergias, os sinais vitais, os exames e laudos de radiologia, etc. Essa aplicação pode ser acessada através do próprio sistema de prontuário eletrônico ou vista através de um “frame” embutido no mesmo.
• **Mensageria**: Consiste na entrega de mensagens clínicas, alertas ou notificações clínicas utilizando todo o potencial da plataforma de interoperabilidade e a riqueza das bibliotecas e protocolos disponíveis.
• **API’s de Consumo**: A plataforma fornece um conjunto de API’s para trabalhar com todos os tipos de interações com a plataforma. Por exemplo:
Serviços de Interação com o **Master Patient Index** (PIX, PDQ, Golden Record, etc.)
Serviços de **Gestão de Consentimento**, podendo ser acessado por outros sistemas para fins de LGPD.
Serviços de **Cadastro de Usuários e Profissionais** possibilitando a sincronização com o Single Sign-On da Organização.
Serviços de **Auditoria** (ATNA). Qualquer interação com a plataforma gera um registro de log.
Serviços de obtenção do *Registro Unificado do Paciente*, expostos de inúmeras formas (Documento PDF, TXT, XML, JSON, CDA, CCD, HL7, etc.)
**HL7 FHIR**: Possibilita o acesso aos dados do paciente utilizando as últimas versões do poderoso protocolo HL7 FHIR e todas as suas capacidades.
### Conclusão
O que as instituições estão buscando, cada vez mais, é uma abordagem holística do cuidado contínuo, da prevenção e da experiência centrada no paciente.
E para viabilizar de forma completa este objetivo tão almejado, é preciso que todas as informações do indivíduo sejam colocadas dentro de uma mesma “caixa”, independentes do local, da instituição, do sistema, da tecnologia e do tipo de informação que é coletada, podendo ser de saúde, administrativo financeira, assistencial, comportamental e social, registro das interações do paciente com a instituição, autorizações do convênio, etc.
É literalmente colocar o paciente no centro de tudo. É quebrar a fronteira dos silos e fazer uso das informações para o benefício do paciente e consequentemente de todos os que estão envolvidos no processo que o suporta.
Claudio,
Excelente a artigo sobre ambas as ferramentas da InterSystems para a área de saúde tanto o UCR quando o PatientIndex. Aqui na empresa fazemos uso do PatientIndex da InterSystems para centralizarmos nossa base de pacientes, bem como integrarmos nossos sistemas que fazem uso destes dados. Ainda estamos finalizando parte da implementação, mas, os ganhos com esta ferramenta são imensos para quem precisa realizar o gerenciamento destas informações, bem como sempre prover o dado correto aos sistemas requisitantes. A simplicidade de implementação das API's também é um fator destacável, visto que praticamente todos os protocolos atualmente são aceitos e é facilmente integrável ao MPI. Oi Djeniffer, muito obrigado pelo comentário, pelo compartilhamento da tua experiência e pelo trabalho que realizamos no Sabin. Eu também aprendo muito trabalhando com vocês.
Artigo
Olga Zavrazhnova · Mar. 19, 2021
Olá Comunidade!
Aqui você encontrará informações dobre os distintivos da Comunidade de Desenvolvedores & InterSystems Global Masters, além da lisa completa de distintivos com suas descrições e como consegui-los.
Informação geral sobre os Níveis e Distintivos no Global Masters
Todos os participantes iniciam no 1° nível "Insider" após se juntarem ao Global Masters. Para subir de nível você deve conquistar o número de distintivos necessários para o próximo nível. Distintivos são conquistados através da realização de vários desafios no Global Masters. Verifique o artigo Descrição dos Níveis do Global Masters para ver a lista completa de Níveis.Você pode verificar os níveis e distintivos no Global Masters aqui:
1. Clique na aba "Progress" na página de desafios:
2. Role a página para baixo até a seção "Achievements" e então dê um clique no link "Level up by unlocking X more badges":
Você pode ver todos os distintivos conquistados também na sua página de perfil da Comunidade de Desenvolvedores, excluindo-se os distintivos da seção Conquistas Global Masters (esses distintivos são relacionados a conquistas no próprio Global Masters e são visiveis apenas na sua página de perfil do Global Masters).
Regras de como conquistar distintivos no Global Masters
Esta tabela será atualizada conforme novos distintivos forem adicionados.
Nome do Distintivo
Regras
Distintivos de Visualizações
Popular Writer - 750 visualizações
Concedido se alguma de suas postagens (perguntas ou artigos) na Comunidade de Desenvolvedores reunir mais de 750/2000/5000 visualizações exclusivas.
A postagem não pode ser deletada; Ela deve estar publicada.
Contamos apenas as postagens com avaliação positiva.
Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
O distintivos é entregue apenas uma vez. Pontos são são fornecidos para cada postagem que reúna a quantidade listada de pontos.
Notable Writer - 2.000 visualizações
Famous Writer - 5.000 visualizações
Gold Writer - 15.000 visualizações
Distintivos de Artigos Publicados
Reporter - 5 artigos
Concedido quando o número de seus artigos (não perguntas) na Comunidade de Desenvolvedores atinge a quantidade de 5/10/25/50 respectivamente.
A postagem não pode ser deletada; Ela deve estar publicada.
Contamos apenas as postagens com avaliação positiva.
Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
Blogger - 10 artigos
Influencer - 25 artigos
Opinion Maker - 50 artigos
DC Best Practices Author Badge - 1 melhor prática
Concedido depois que 1/10/25/50 de seus artigos (não perguntas) forem considerados como Melhores Práticas da Plataforma de Dados InterSystems na Comunidade de Desenvolvedores.
A postagem não pode ser deletada; Ela deve estar publicada.
Contamos apenas as postagens com avaliação positiva.
Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
RecognizableBest Practices Author Badge - 2 melhores práticas
Bronze Best Practices Author Badge - 3 melhores práticas
Silver Best Practices Author Badge- 4 melhores práticas
Gold Best Practices Author Badge - 5 melhores práticas
Master of Answers - 5 respostas aceitas na Comunidade de Desenvolvedores
Concedido após 5/10/25/50 de suas respostas forem marcadas como respostas aceitas na Comunidade de Desenvolvedores.
Bronze Master of Answers - 10 respostas aceitas na Comunidade de Desenvolvedores
Silver Master of Answers - 25 respostas aceitas na Comunidade de Desenvolvedores
Gold Master of Answers - 50 respostas aceitas na Comunidade de Desenvolvedores
Distintivos de Perguntas
Curious Member - 5 perguntas
Concedido quando a quantidade de suas perguntas na Comunidade de Desenvolvedores atinge 5/10/25/50 respectivamente.
As perguntas não devem ser excluídas, devem estar publicadas.
Contamos apenas as perguntas com avaliação positiva.
Perguntas do grupo de Feedback da Comunidade de Desenvolvedores não são contadas.
Thorough Member - 10 perguntas
Inquisitive Member - 25 perguntas
Socratic Member - 50 perguntas
Distintivos de Favoritos
Favorite Post - 10 vezes
Concedido quando sua postagem (artigo, pergunta) na Comunidade de Desenvolvedores foi adicionada aos favoritos 10/50/100 vezes.
A postagem não pode ser deletada; Ela deve estar publicada.
Contamos apenas as postagens com avaliação positiva.
Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
Remarkable Post - 50 vezes
Unforgettable Post - 100 vezes
Distintivos de Votação
Insightful Author - 50 votos
Concedido quando suas postagens (artigos, perguntas) obtiverem o total de 50/100/500/1000 votos na Comunidade de Desenvolvedores.
A postagem não pode ser deletada; Ela deve estar publicada.
Postagens do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
Expert Author - 100 votos
Recognizable Author - 500 votos
Powerful Author - 1000 votos
Insightful Commenter - 50 votos
Concedido quando suas respostas (comentários às perguntas) obtiverem o total de 50/100/500/1000 votos na Comunidade de Desenvolvedores.
Respostas apagadas não são contadas
Respostas no grupo de Feedback da Comunidade de Desenvolvedores não são contadas.
Expert Commenter - 100 votos
Recognizable Commenter - 500 votos
Powerful Commenter - 1000 votos
DC Moderator
Concedido aos moderadores da Comunidade de Desenvolvedores. O distintivo não está vinculado a níveis.
Conquistas Anuais - Os 10 principais autores
Gold Best-Selling Author - 1° lugar
1° / 2° / 3° / 4° a 10° lugares na indicação "Best-Selling Author".
Dado a autores cujos artigos obtiveram a quantidade máxima de visualizações na Comunidade de Desenvolvedores no ano.
Silver Best-Selling Author - 2° lugar
Bronze Best-Selling Author - 3° lugar
DC Best-Selling Author - 4° a 10° lugares
Gold Expert- 1° lugar
1° / 2° / 3° / 4° a 10° lugares na indicação “DC Expert”.
Dado aos autores, que obtiveram o maior número de respostas aceitas no ano.
Silver Expert - 2° lugar
Bronze Expert - 3° lugar
DC Expert - 4° a 10° lugares
Gold Opinion Leader - 1° lugar
1° / 2° / 3° / 4° a 10° lugares na indicação “DC Opinion Leader”.
Dado a autores cujas postagens e respostas obtiveram o maior número de votos na Comunidade de Desenvolvedores no ano.
Silver Opinion Leader - 2° lugar
Bronze Opinion Leader - 3° lugar
DC Opinion Leader - 4° a 10° lugares
Conquistas de Recrutadores
Gold Recruiter - 100 referências
Concedido após 1/10/50/100 de suas referências entrarem na Comunidade de Desenvolvedores.
Silver Recruiter - 50 referências
Bronze Recruiter - 10 referências
DC Recruiter - 1 referências
Contribuições Básicas à Comunidade de Desenvolvedores
DC Author
Concedido depois que você publicar seu primeiro artigo na Comunidade de Desenvolvedores.
A postagem não pode ser deletada; Ela deve estar publicada.
Artigos do grupo de Feedback da Comunidade de Desenvolvedores não são contados.
A postagem deve ser do tipo "Artigo".
InterSystems Researcher
Concedido depois que você publicar sua primeira pergunta na Comunidade de Desenvolvedores.
As perguntas não devem ser excluídas, devem estar publicadas.
Perguntas do grupo de Feedback da Comunidade de Desenvolvedores não são contadas.
A postagem deverá ser do tipo "Pergunta".
DC Commenter
Concedido depois que você publicar seu primeiro comentário na Comunidade de Desenvolvedores.
Classificação positiva (votos para cima) ou zero votos
Comentários feitos no grupo de Feedback da Comunidade de Desenvolvedores não são contados.
DC Problem Solver
Concedido depois que sua resposta foi marcada como a resposta aceita na Comunidade de Desenvolvedores.
Marcado como Aceito
Respostas no grupo de Feedback da Comunidade de Desenvolvedores não serão contadas.
DC Translator
Concedido após você traduzir 1 postagem na comunidade de desenvolvedores.
Como adicionar uma tradução
Winner of Advent Of COS
Concedido aos Vencedores do Advento do Código no ano. Informações aqui.
Global Master of the Month
Concedido depois que você se tornar o "Advocate of the Month" no Global Masters
Gold Advocate of the Year
Concedido depois que você se tornar um dos "Best Advocates of the Year" no Global Masters no ano.
Silver Advocate of the Year
Bronze Advocate of the Year
Conquistas do Open Exchange
InterSystems Open Exchange Developer
Concedido depois que você publicar 1/5/10/25 aplicações no InterSystems Open Exchange.
Bronze Open Exchange Developer
Silver Open Exchange Developer
Gold Open Exchange Developer
Verifique as informações adicionais sobre o Global Masters:
Como se juntar ao InterSystems Global Masters
Descrição dos Níveis do Global Masters
Sinta-se a vontade para deixar seu questionamento sobre níveis e distintivos nos comentários!
Artigo
Andre Larsen Barbosa · Jul. 19, 2021
Ao usar o Studio, ODBC ou uma conexão de terminal para Caché ou Ensemble, você deve estar se perguntando como proteger a conexão. Uma opção é adicionar TLS (também conhecido como SSL) à sua conexão. Os aplicativos cliente Caché - TELNET, ODBC e Studio - todos sabem como adicionar TLS à conexão. Eles só precisam ser configurados para fazer isso.
Configurar esses clientes é mais fácil em 2015.1 e posteriores. Vou discutir esse novo método. Se você já estiver usando o método antigo e legado, ele continuará funcionando, mas eu recomendo que você considere mudar para o novo.
## Background
Esses aplicativos cliente podem ser instalados em uma máquina que não tenha o servidor instalado. Eles não podem depender de ter acesso aos locais normais para armazenar configurações, como o banco de dados CACHESYS ou o arquivo cpf. Em vez disso, suas configurações para os certificados ou protocolos a serem aceitos são armazenadas em um arquivo de texto. Muitas das configurações neste arquivo são semelhantes às configurações em uma configuração SSL / TLS no portal de gerenciamento.
## Onde está o arquivo de configurações?
Você terá que criar seu próprio arquivo. O instalador do cliente não cria um para você.
Por padrão, o arquivo de configurações é chamado SSLDefs.ini e deve ser colocado no diretório InterSystems \ Cache sob o diretório para arquivos de programas comuns de 32 bits. Este diretório é encontrado na variável de ambiente do Windows * CommonProgramFiles (x86) * no Windows de 64 bits ou * CommonProgramFiles * no Windows de 32 bits.
Por exemplo, no Windows 8.1, o arquivo padrão seria:
~~~
C:\Program Files (x86)\Common Files\InterSystems\Cache\SSLdefs.ini
~~~
Se quiser mudar isso, você terá que dizer aos executáveis do cliente onde encontrar o arquivo de configurações. Você pode fazer isso definindo a variável de ambiente * ISC_SSLconfigurations * e configurando-a para todo o caminho e nome de arquivo do seu arquivo. Você pode precisar de permissões de administrador para fazer isso.
## O que há no arquivo de configurações?
O arquivo possui dois tipos de seções. O primeiro tipo combina conexões com configurações TLS. Por exemplo, pode dizer ao Studio para usar a seção chamada "Configurações padrão" para encontrar seus parâmetros TLS ao se conectar a development.intersystems.com.
O segundo tipo define as configurações de TLS a serem usadas para a conexão. Por exemplo, eles definiriam por qual Autoridade de Certificação esperar que o certificado do servidor seja assinado. As configurações nestas seções são muito semelhantes às configurações em uma configuração SSL / TLS em um servidor Caché ou Ensemble.
O primeiro tipo de seção se parece com isto:
~~~
[Development Server]
Address=10.100.0.17
Port=1972
TelnetPort=23
SSLConfig=DefaultSettings
~~~
O nome entre colchetes pode ser o que você quiser. Ele está lá apenas para tornar mais fácil para você manter o controle de qual conexão é essa.
As configurações de Endereço, Porta e TelnetPort são usadas para decidir quais conexões devem corresponder a esta seção. Os endereços IP ou nomes DNS podem ser usados para o endereço em clientes 2016.1 ou posteriores. Tanto o endereço quanto a porta ou TelnetPort devem corresponder ao local onde o aplicativo cliente está se conectando para que a configuração seja usada.
O parâmetro final (SSLConfig) é o nome da configuração da qual obter as configurações de TLS. Ele precisa corresponder ao nome de uma das configurações no arquivo.
O segundo tipo de seção tem a seguinte aparência:
~~~
[DefaultSettings]
VerifyPeer=2
VerifyHost=1
CAfile=c:\InterSystems\certificates\CAcert.pem
CertFile=c:\InterSystems\certificates\ClientCert.pem
KeyFile=c:\InterSystems\certificates\ClientKey.key
Password=
KeyType=2
Protocols=24
CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2
~~~
O nome da seção está listado na primeira linha: [DefaultSettings] e corresponde ao nome listado no parâmetro SSLConfig da primeira seção do exemplo acima. Portanto, esta configuração será usada para conexões com o servidor 10.100.0.17 na porta 1972 ou na porta 23.
Usar copiar e colar no exemplo acima geralmente causa caracteres não imprimíveis em seu arquivo de texto. Certifique-se de ter removido quaisquer caracteres extras, por exemplo, salvando o arquivo como somente texto e abrindo-o novamente.
Aqui está uma descrição do que os parâmetros significam:
- **VerifyPeer**
As opções para isso são 0 = nenhum, 1 = solicitação e 2 = exigir. Exigir é o valor recomendado. Se você não escolher nenhum, é possível que um servidor malicioso finja ser o servidor ao qual você pretende se conectar. Se você escolher requerer, precisará preencher uma Autoridade de certificação em que você confia para verificar os certificados para o valor CAFile. Isso é equivalente a "Verificação do certificado do servidor" no portal. (Observação: a solicitação não faz sentido para uma configuração de cliente, mas eu a incluí aqui para que você possa entender por que as opções são 0 e 2.)
- **VerifyHost**
As opções para isso são 0 = nenhum, 1 = obrigatório. Esta opção verifica se o certificado do servidor lista o nome do host ou IP ao qual você pediu para se conectar nos campos Nome comum do assunto ou subjectAlternativeName. Este campo não possui equivalente no portal, mas é o mesmo tipo de verificação da propriedade SSLCheckServerIdentity da classe% Net.HttpRequest. Só é configurável se o seu cliente estiver usando o Caché / Ensemble 2018.1 ou posterior, ou qualquer versão da InterSystems IRIS Data Platform.
- **CAfile**
O caminho para o arquivo de autoridade de certificação (CA) confiável. Deve ser a CA que assinou o certificado do * outro * lado (o servidor), não o seu próprio certificado. Isso deve ser preenchido se você escolheu um valor VerifyPeer de 2. Isso é o equivalente a "Arquivo contendo certificado (s) de autoridade de certificação confiável (s)" no portal. Os certificados devem estar no formato PEM.
- **CertFile**
O caminho para seu próprio certificado. Deve ficar em branco se o seu cliente não tiver um. Equivale a "Arquivo contendo o certificado deste cliente" no portal. Os certificados devem estar no formato PEM.
- **KeyFile**
O caminho para a chave privada correspondente para CertFile. Deve ser preenchido se você tiver um CertFile e em branco se não tiver. Isso é equivalente a "Arquivo contendo chave privada associada" no portal.
- **Password**
A senha necessária para descriptografar sua chave privada. Deve ficar em branco se você não estiver usando um certificado para este cliente ou se a chave privada do certificado não estiver criptografada no disco.
- **KeyType**
A sua chave privada é RSA (2) ou DSA (1)? O valor é relevante apenas para configurações que possuem CertFile e KeyFile definidos. Se você não tiver certeza de qual é, sua chave provavelmente é RSA.
- **Protocols**
Esta é uma representação decimal de valores de bits para as versões de SSL / TLS suportadas. As opções são: 1 = SSLv2, 2 = SSLv3, 4 = TLSv1, 8 = TLSv1.1, 16 = TLSv1.2. SSLv2 e SSLv3 têm problemas conhecidos e não são recomendados. Mais de uma versão pode ser especificada adicionando números. Por exemplo, 24 é TLSv1.1 e TLSv1.2. Isso equivale às caixas de seleção "Protocolos" do portal. (Observação: os 8 e 16 bits não estão em 2015.1. Se quiser usá-los, você precisa atualizar para 2015.2 ou superior.)
- **CipherList**
Isso é o equivalente a "ciphersuites ativados" no portal. Isso controla exatamente quais tipos de criptografia e hashing serão aceitáveis para este cliente. ** ALL:! ANULL:! ENULL:! EXP:! SSLv2 ** é o valor padrão para esta configuração no portal de gerenciamento. Se você está tendo problemas com sua conexão, provavelmente não é isso. Alterar isso pode tornar sua conexão menos segura, permitindo uma criptografia fraca. Você pode encontrar mais informações sobre este valor no site do openssl.
## Final notes
Isso é tudo que você precisa fazer! Se você criar seu arquivo e colocá-lo no local conhecido, ele será usado automaticamente se o nome ou endereço IP e a porta que você está conectando corresponderem a uma das conexões listadas no arquivo.
### Server setup
Este artigo é sobre como configurar o lado do cliente de sua conexão para usar SSL, mas não se esqueça de que o servidor ao qual você está se conectando também precisa entender como aceitar SSL. A documentação sobre como configurar o SuperServer para usar SSL pode ser encontrada aqui:
[http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver)
E a documentação de configuração do serviço Telnet está aqui:
[http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_telnet_svr](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_telnet_svr)
O método $ SYSTEM.Security.Users.SetTelnetSSLSetting () permite controlar se o servidor Telnet permite ou exige o uso de SSL. Ele está disponível em 2016.1 e posteriores.
### DSN configuration
Você não precisa alterar o DSN para uma conexão ODBC, contanto que tenha um endereço de conexão e uma porta correspondentes em seu arquivo de configurações. SSL será usado mesmo se a senha for selecionada para o método de autenticação no DSN. As opções __Password with SSL / TLS__ e ** SSL / TLS server name ** eram para o estilo pré-2015.1 de configuração de SSL para ODBC.
### Documentation link
A documentação sobre TLS para aplicativos cliente está agora disponível no site de documentos IRIS:
[https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_windotinifile](https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_windotinifile)
Anúncio
Rochael Ribeiro · Maio 24, 2021
Olá Desenvolvedores
Estamos felizes por anunciar @Djeniffer.Greffin7753 como a nova moderadora na nossa comunidade!
Vamos recebe-la com aplausos e deem uma olhada na biografia dela!
Djeniffer trabalha como DBA Consulting no Sabin Medicina Diagnóstica.
E aqui estão algumas palavras de @Djeniffer.Greffin7753:
- Trabalho com tecnologia da InterSystems desde 2009, meu primeiro contato com a tecnologia foi em uma migração de sistemaoriginalmente escrito em MUMPS para um sistema WEB desenvolvido em ZEN, usando classes e mapeamento global.
- Em 2012, fui para uma empresa de desenvolvimento de cuidados de saúde mais especificamente em laboratórios, com um produto LIS (Laboratory Information System). Foi aqui que comecei a trabalhar mais fortemente com interoperabilidade no setor de saúde. Foi neste ponto que comecei a me especializar mais e passei a não só desenvolver, mas também a atuar na performance de aplicações e na afinação de sistemas operacionais.
- Em 2018 fui convidada por um de nossos clientes para fazer parte da equipe responsável pelo ambiente core da empresa. Neste cliente, especializei-me em criar interoperabilidade entre dispositivos de laboratório. Tenho profundo conhecimento dos padrões de comunicação na área de saúde.
- Hoje atuo fortemente na concepção, implementação e segurança de soluções tecnológicas em laboratório.
Portanto, vamos dar as boas-vindas a nossa nova moderadora DC!
Obrigado e parabéns, @Djeniffer.Greffin7753! Espero que nossa comunidade cresça com sua ajuda! 👏🏼
Seja muito bem vinda Djeniffer. Tenho certeza que irá agregar muito na comunidade com a tua experiência. Obrigada Claudio!
Anúncio
Angelo Bruno Braga · Ago. 3, 2022
Olá Desenvolvedores!
Temos incríveis artigos novos para vocês lerem e curtirem graças aos nossos maravilhosos participantes do 3ºConcurso de Artigos Técnicos: Edição Python!
🌟 12 ARTIGOS INCRÍVEIS 🌟
E agora chegou a hora de anunciarmos os ganhadores!
Vamos conhecer os ganhadores e seus artigos:
⭐️ Prêmios por Especialistas – os ganhadores são selecionados por especialistas InterSystems:
🥇 1º lugar: IRIS Embedded Python with Azure Service Bus (ASB) use case por @Yaron.Munz8173
🥈 2º lugar: Getting known with Django part 1 por @Dmitry.Maslennikov
🥉 3º lugar: Introduction to Web Scraping with Embedded Python - Let’s Extract python job’s por @Rizmaan.Marikar2583
⭐️ Prêmio pela Comunidade – o ganhador é selecionado por membros da Comunidade, através do artigo com maior quantidade de likes:
🏆 IRIS Embedded Python with Azure Service Bus (ASB) use case por @Yaron.Munz8173
E...
⭐️ Gostaríamos de agradecer ao @Dmitry.Maslennikov pela séries de 3 artigos! Ele ganhará um Apple HomePod mini ou um Apple Pencil.
Vamos dar os parabéns aos nossos heróis que participaram do nosso terceiro concurso de Artigos Técnicos:
@Yuri.Gomes
@Robert.Cemper1003
@Muhammad.Waseem
@Veerarajan.Karunanithi9493
@Renato.Banzai
@Ramil.TK
OBRIGADO A TODOS VOCÊS! Vocês fizeram uma contribuição incrível para nossa Comunidade de Desenvolvedores!
Os prêmios estão sendo produzidos agora. Entraremos em contato com os participantes quando estiverem prontos para serem despachados.
Artigo
Danusa Calixto · Dez. 27, 2022
Early Access Program (EAP) é uma maneira de fornecer recursos específicos com antecedência para um grupo de pessoas que testarão e fornecerão feedback sobre esse recurso.
A InterSystems lançou diferentes versões (ou peças) de software nos últimos anos e melhorou os recursos antes de serem lançados. Alguns exemplos até agora: Armazenamento Colunar; Python integrado; FHIRSQL; e outros.
Mas uma característica dos EAPs é que eles podem não estar disponíveis para todos. Você tem que se inscrever no Programa.
No caso da descontinuação da instalação do servidor web Apache (a.k.a. NoPWS), a maneira de se registrar é enviar um e-mail para nopws@intersystems.com. Use este mesmo e-mail para feedback.
Depois de receber um e-mail de confirmação, você verá os EAPs aos quais tem acesso no website Serviços de Avaliação. Você deve fazer login para ver o conteúdo.
Assim, após o login:
1) EAPs estão no lado direito da tela:
Clique em "Baixar Programas de Acesso Antecipado" e vá para a próxima tela.
2) Selecione o EAP no qual você está inscrito. Usando o NoPWS como exemplo aqui:
Lembre-se de que você pode ver apenas os EAPs aos quais tem acesso.
3)Após selecionar um EAP, você poderá visualizar todos os documentos e softwares disponíveis para ele:
Sim, você é obrigado a concordar com os Termos de Serviço. Em seguida, o botão Download será ativado para você.
E uma última coisa...
Por favor, forneça feedback! Nós queremos ouvir de você.
Artigo
Claudio Devecchi · Fev. 1, 2021
Quando se fala em tecnologia da informação nas instituições de saúde, principalmente nos hospitais e organizações de medicina diagnóstica, os CIO’s e a área de TI sabem muito bem que para que tudo funcione bem, é necessário que um número muito grande de sistemas e aplicações funcionem de maneira integrada.
Talvez a área da saúde seja uma das áreas mais heterogêneas do ponto de vista de negócio, pois engloba além da gestão administrativo financeira, hospitalar, clínica e diagnóstica, uma infinidade de outros sistemas, como o sistema de controle de estacionamento, de hotelaria, dos restaurantes, da recepção, de farmácias, etc. Isso sem contar os sistemas de informação das empresas terceirizadas.
Com tudo isso, é quase que impossível concentrar em um único sistema ou banco de dados todas as informações geradas durante o ciclo completo de atendimento de um paciente. É muito comum, por se tratar de sistemas, de tecnologias e fornecedores diferentes, que uma única pessoa tenha sido cadastrada facilmente em mais de dez sistemas e bancos de dados diferentes, com identificações próprias para cada um.
Considerando todo este cenário, para conseguir operacionalizar os processos, é imprescindível que as empresas tenham plataformas que promovam a interoperabilidade destes sistemas, assim como o [IRIS for Health](https://learning.intersystems.com/enrol/index.php?id=1081) e [Health Connect da InterSystems](https://learning.intersystems.com/course/view.php?id=1437).
Em outras palavras, é preciso que os sistemas “se conversem” para que as informações geradas sejam automaticamente integradas de um sistema para outro, mantendo assim uma consistência e compatibilidade, mesmo que em sistemas e bancos de dados separados.
Ainda assim, as informações podem ser geradas e coletadas em momentos diferentes. Exemplo: Um determinado paciente passou pelo atendimento em uma clínica e neste evento foi orientado a realizar exames específicos na mesma ou em outra instituição e retornar quando os exames estivessem prontos. Além do cadastro e da coleta de informações demográficas deste paciente na clínica, foram realizados outros cadastros no momento da admissão deste paciente nos sistemas de medicina diagnóstica.
Ou seja, se levarmos em conta o processo assistencial de uma única pessoa, teremos informações pertencentes a diferentes cadastros, sob identificações e dados demográficos distintos, coletados por pessoas e de maneiras diferentes.
O fato é que se as empresas não fizerem nada para tratar especificamente desta questão, elas ficarão reféns da segregação dos dados gerados por cadastro, e não consolidados por indivíduo, independentes de quando e onde o mesmo foi atendido. Sempre terão uma visão parcial e não integral de todo o processo, tanto para fins assistenciais, quanto para quaisquer outros fins.
Cada vez mais, os gestores e profissionais de saúde sabem do valor de se ter a visão consolidada de todas as informações geradas em torno do paciente, independentes do tempo e do local, sejam elas administrativas, financeiras, comportamentais e principalmente relacionadas à saúde. Se pararmos pra pensar, nós mesmos gostaríamos de ver num único aplicativo todos os nossos dados de saúde, como os exames por exemplo, independente da instituição que nos atendeu.
Este sonho já está virando realidade em muitas instituições. Graças às plataformas de saúde como [InterSystems Healthshare](https://learning.intersystems.com/enrol/index.php?id=26), e produtos como [Healthshare Patient Index](https://learning.intersystems.com/enrol/index.php?id=632) é possível levar a gestão de informações na área da saúde para o próximo patamar.
No próximo artigo, falaremos um pouco de como funciona o [Healthshare Patient Index](https://learning.intersystems.com/course/view.php?id=632) e de como ele é fundamental para ajudar as empresas a visualizarem o paciente como um único indivíduo e não apenas como um ou mais cadastros.
Artigo
Anastasia Dyubaylo · Mar. 18, 2021
Olá Comunidade!
Nesta publicação você irá encontrar informações sobre os Níveis da Comunidade de Desenvolvedores e InterSystems Global Masters.
Todos os membros do Global Masters podem alcançar vários Níveis dependendo das contribuições feitas na Comunidade de Desenvolvedores e da atividade no Global Masters.
Cada novo Nível libera novos tipos de desafios/tarefas e novos tipos de recompensas.
Para subir de nível você precisa ganhar um número de distintivos para o próximo nível. Distintivos podem ser ganhos completando vários desafios no Global Master.
Atualmente temos 6 Níveis:
0. Insider (você começa aqui)1. Advocate2. Specialist 3. Expert4. Ambassador5. VIP
➡️ Coloque o cursos do mouse sobre o distintivo para verificar como conseguí-lo.
Nome do Nível
Regras
Nível Insider
Você inicia no nível "Insider" quando você se junta ao Global Masters.
Nível Advocate
O próximo nível requer dois distintivos dos relacionados abaixo:
DC Author
InterSystems Researcher
DC Commenter
DC Problem Solver
DC Translator
1.500 pontos
500 pontos
300 pontos
1.000 pontos
100 pontos
Pull RequestContributor
InterSystemsOpen Exchange Developer
DC Recruiter
Best PracticesAuthor
Global Masterof the Month
500 pontos
1.000 pontos
600 pontos
1.000 pontos
1.000 pontos
Ou seja, bastaria fazer uma pergunta, responder uma pergunta ou convidar um amigo para a Comunidade!
Nível Specialist
O Nível Specialist requer 3 distintivos da lista abaixo:
InsightfulCommenter750 pontos
Insightful Author1.500 pontos
Advanced PullRequest Contributor500 pontos/cada PR
PopularWriter600 pontos
ReporterBadge7.500 pontos
CuriousMember2.000 pontos
Masterof Answers4.000 pontos
PopularApp badge2.500 pontos
Bronze OpenExchange Developer10.000 pontos
BronzeRecruiter600 pontos/cada
RecognizableBest Practices Author3.000 pontos
Distintivos de Conquistas Anuais
DC Best-SellingAuthor
DC Expert
DC Opinion Leader
InterSystemsDeveloperof the Year
InterSystemsApplicationof the Year
Não é fácil alcançar o nível specialist mas, é possivel!
Nível Expert
O Nível Expert requer 4 dos distintivos abaixo:
ExpertCommenter1.500 pontos
Expert Author3.000 pontos
Bronze PullRequest Contributor500 pontos/cada PR
NotableWriter2.500 pontos
BloggerBadge15.000 pontos
Thorough Member5.000 pontos
Bronze Masterof Answers8.000 pontos
Bronze Popular App badge5.000 pontos
Silver OpenExchange Developer25.000 pontos
SilverRecruiter600 pontos/cada
Bronze BestPractices Author7.000 pontos
Distintivos de Conquistas Anuais
Bronze Best-Selling Author
BronzeExpert
BronzeOpinion Leader
Bronze InterSystemsDeveloper of the Year
Bronze InterSystemsApplication of The Year
É bem difícil se tornar um membro do nível expert em Plataforma de Dados! E ficamos felizes em conhecer esses caras!
Nível Ambassador
O Nível Ambassador requer 4 dos distintivos abaixo:
RecognizableCommenter7.500 pontos
RecognizableAuthor15.000 pontos
Silver PullRequest Contributor500 pontos/cada PR
FamousWriter7.000 pontos
Influencerbadge40.000 pontos
InquisitiveMember15.000 pontos
Silver Masterof Answers20.000 pontos
Silver Popular App badge7.500 pontos
Gold OpenExchange Developer50.000 pontos
GoldRecruiter600 pontos/cada
Silver BestPractices Author10.000 pontos
Distintivos de Conquistas Anuais
Silver Best-Selling Author
SilverExpert
SilverOpinion Leader
Silver InterSystemsDeveloper of the Year
Silver InterSystemsApplication of The Year
Nível VIP
O Nível VIP requer 5 distintivos dos relacionados abaixo:
PowerfulCommenter15.000 pontos
PowerfulAuthor30.000 pontos
Gold PullRequest Contributor500 pontos/cada PR
GoldWriter20.000 pontos
OpinionMaker75.000 pontos
SocraticMember30.000 pontos
Gold Masterof Answers40.000 pontos
Gold PopularApp Badge12.500 pontos
Platinum Popular App badge100.000 pontos
PlatinumRecruiter600 pontos/cada
Gold BestPractices Author15.000 pontos
Distintivos de Conquistas Anuais
Gold Best-Selling Author
Gold Expert
Gold Opinion Leader
Gold InterSystemsDeveloper of the Year
Gold InterSystemsApplication of The Year
Bronze Advocateof the Year
Silver Advocateof the Year
Gold Advocateof the Year
Este é um nível fantástico! Obrigado pela sua incrível colaboração!
Então...
Verifiquem as informações adicionais sobre o Global Masters:
Como se juntar ao InterSystems Global Masters
Distintivos do Global Masters: descrição e regras para obtê-los
Se você ainda não se juntou ao Global Masters , não perca tempo e junte-se já!
Fiquem a vontade para deixar suas perguntas nos comentários desta publicação.
Artigo
Kevin Koloska · Nov. 15, 2022
Construção de um repositório FHIR + o servidor de autorização/recurso OAuth2 no IRIS for Health - Parte 2
IRIS para #FHIR #OAuth2 #InterSystems de Saúde
Olá, caros desenvolvedores!
Neste artigo, vamos focar-nos na OAuth2, um protocolo que é cada vez mais utilizado em combinação com o FHIR para realizar permissões.
Nesta parte 1, iniciaremos o contentor Docker para IRIS para a Saúde e Apache, configuraremos a função do servidor de autorização OAuth2 na IRIS for Health, acedemos-lhe a partir da ferramenta de desenvolvimento do Postman REST e obteremos um token de acesso. Além disso, na segunda parte e além, adicionaremos a funcionalidade de repositório FHIR à IRIS for Health, adicionamos a configuração do servidor de recursos OAuth2 e explicaremos como executar consultas de FHIR com fichas de acesso de dentro do Carteiro.
Vários artigos excelentes já foram publicados dentro da comunidade de desenvolvedores para explicar a funcionalidade OAuth2 dos produtos InterSystems; No entanto, gostaria de explicar mais uma vez como criar a versão mais recente.
Implementação do Quadro de Autorização Aberta IRIS InterSystems (Oauth 2.0) - Parte 1
Neste artigo, utilizaremos a versão mais recente da InterSystems IRIS for Health 2020.3 Preview Edition. Se pretender criar um ambiente baseado neste artigo, não se esqueça de utilizar esta ou uma versão posterior do kit. Algumas funcionalidades não estão incluídas em produtos antes desta versão.
Preparativos preliminares
O primeiro passo é fazer os preparativos preliminares. Há muitas coisas para se preparar para construir um ambiente seguro.
IRIS for Health 2020.3 Preview Edition só está disponível como uma versão de recipiente Docker. (InterSystems Docker Hub/IRIS for Health)Para executar a configuração OAuth2, também terá de executar o servidor web e a configuração SSL. Neste artigo, utilizaremos Apache.Quando configurar o SSL em Apache, o certificado de configuração SSL deve corresponder ao nome de anfitrião do servidor. Por favor, tenha isso em conta.
Obtenha ficheiros de amostra do repositório Do GitHub interssistema-jp
O estivador-compose.yml/Dockerfile e outros ficheiros de amostras utilizados nesta configuração estão disponíveis no repositório GitHub para a comunidade de desenvolvedores intersystems.Em primeiro lugar, desaperte este ficheiro no seu ambiente utilizando o seguinte comando. (Também pode fazê-lo a partir do anexo a este artigo.) Este docker-compose.yml/Dockerfile e outros ficheiros são criados referindo-se à aplicação iris-webgateway-exemplo publicada no OpenExchange.
https://github.com/Intersystems-jp/IRIS4H-OAuth2-handson.git de clone de Git
Alterar a configuração de acordo com o kit utilizado
Neste ficheiro docker-compose.yml, estão configurados dois contentores: o contentor IRIS for Health e o contentor Apache (httpd) serão criados pelo comando de construção de estivadores. O ficheiro docker-compose.yml, disponível no GitHub, refere IRIS for Health Community Edition Preview Edition (2020.3.200.0). A Edição Comunitária pode ser utilizada para a avaliação dos produtos InterSystems.
íris:
Imagem: loja/intersistemas/irishealth-comunidade:2020.3. 0.200. 0
Se estiver a utilizar uma versão diferente (versão oficial ou mais recente), altere esta parte da especificação.
O recipiente Apache será construído com o conteúdo do Dockerfile, que requer um kit WebGateway para ligar ao IRIS a partir de Apache.Para obter informações sobre como obter este kit, os parceiros da InterSystems podem visitar o site de descarregamento do WRC ou contactar o Centro de Suporte do WRC. Se tiver mais alguma questão, contacte-nos neste endereço.
Modifique as seguintes partes do Dockerfile dependendo do produto que obteve. Independentemente do sistema operativo da máquina hospedeira (Windows/Ubuntu/CentOS), a plataforma será lnxubuntux64 porque o sistema operativo do recipiente httpd base é Debian.
Versão ARG=2020.3. 0.200. 0
Plataforma ARG =inxubuntux64
ADD WebGateway-${versão}-${plataforma}.tar.gz /tmp/
Preparação de um certificado SSL
No passo seguinte, é preparado um certificado SSL. Ao aceder à autorização OAuth2, o certificado SSL definido no servidor web é verificado para ver se corresponde ao URL a ser acedido. Não é necessário utilizar um certificado oficial; é possível utilizar o OpenSSL, etc. Introduza o nome de anfitrião no campo "Nome Comum" ao criar o certificado.
Além disso, uma vez que o certificado que criou será carregado automaticamente no momento do lançamento, tem de modificar o ficheiro para que este não exija uma palavra-passe. Por favor, consulte o seguinte comando.
$ openssl rsa -in cert.key.org -out cert.key
Coloque os ficheiros CRT e KEY criados no mesmo diretório que o Dockerfile, com os nomes de ficheiros server.crt/servidor.key respectivamente.
Além de o utilizar com o servidor web Apache, precisará de um certificado SSL para a configuração OAuth2. Não precisa de introduzir um nome de anfitrião, etc., mas precisa de criar três conjuntos. (Nas seguintes configurações, aparecem como auth.cer/auth.key , cliente.cer/cliente.key, resserver.cer/resserver.key)
Construindo um estivador e iniciando um contentor de estivadores
Agora está finalmente pronto! Além dos quatro ficheiros que descarregou, tem agora um conjunto de instalações web gateway e dois certificados SSL no seu diretório. Preste atenção às permissões de acesso e execução de cada ficheiro. (Por exemplo, adicionei a permissão de execução a webgateway-entrypoint.sh.)
estiva-composição construção
estiva-composição -d
Uma vez lançado, utilize o comando do PS para verificar se ambos os contentores estão a funcionar.
Nome do recipiente Apache:_web
IRIS for Health:store/intersystems/irishealth-community container name:2020.3.0.200.0 (ou outro nome dependendo do conjunto)
Agora tente aceder ao portal de gestão nas seguintes três formas. Se o terceiro método funcionar, a sua configuração SSL através do servidor web Apache é um sucesso!
http://[nome anfitrião]:52773/csp/sys/UtilHome.csp:Este URL é acedido através do Apache Privado no contentor IRIS. Não passa pelo Apache configurado.
http://[hostname]/csp/sys/UtilHome.csp: Este URL fornece acesso ao portal de gestão através do Apache configurado.
https://[hostname]/csp/sys/UtilHome.csp: Este URL fornece acessoao portal de gestão utilizando uma ligação SSL via Apache, que configurae.
Criação de uma configuração SSL
Agora que a IRIS for Health está a funcionar e temos acesso ao portal de gestão, vamos criar a configuração SSL para os preparativos finais.
Aceda ao Portal de Gestão -> Administração do Sistema -> Configuração SSL/TLS de Segurança -> e crie três configurações SSL utilizando os três pares de chaves de certificado que preparou.
Pode escolher o nome que quiser, mas neste artigo utilizaremos SSL4AUTH/SSL4CLIENT/SSL4RESSERVER, de acordo com artigos anteriores sobre AAuth2.
*Sobre a partilha de diretórios entre anfitriões e contentores
Especificar os seguintes volumes no ficheiro de composição de estiva indica a localização atual do diretório de anfitriões = /ISC no recipiente. Utilize este diretório ao especificar o ficheiro do certificado nas definições acima, etc.
Volumes:
- .:/ Isc
Este diretório conterá não só ficheiros de ficheiros, mas também ficheiros de base de dados IRIS e ficheiros de configuração. Consulte o documento "Persistente
%SYS for Persistent Instance Data Storage" para obter mais informações.
Configuração OAuth2 na IRIS para a Saúde
Agora é hora de entrar nos detalhes do acesso ao IRIS para a Saúde usando OAuth2!
Configurar o servidor de autorização OAuth2
Primeiro, vamos configurar o servidor de autorização OAuth2! Vá ao Portal de Gestão →
Administração do Sistema → Segurança → OAuth 2.0 → Server.
Siga as instruções abaixo para configurar as definições.
Definições no separador "Geral"
Ponto final do transmissor: Nome anfitrião Insira o nome de anfitrião.
Ponto final do transmissor: Prefixo Pode introduzir o valor da sua escolha, mas aqui definimo-lo como "authserver".
Tipos de subvenções apoiadas Neste artigo, só usaremos o "Código de Autorização", mas se quiser testar outros "Tipos de subvenções", por favor adicione uma marca de verificação. Adicione também uma marca de verificação à "Autorização JWT"
SSL/TLS de configuração Especifique a configuração SSL que acabou de adicionar.
No separador "Âmbitos", clique em "Adicionar um âmbito suportado" para os adicionar. Mais tarde, o ecrã de início de sessão de código de autorização apresentará a "descrição" que escreveu aqui.
Não altere o separador "Intervalos" a partir do valor predefinido. No separador "Definições JWT", vamos selecionar "RS512" como algoritmo de assinatura.
No último separador "Personalização", altere a especificação "Token Class Generation" para %OAuth2.Server.JWT.
Uma vez introduzido a informação, clique no botão "Guardar" para guardar a configuração.
Agora que tem a configuração necessária para que a IRIS for Health funcione como um servidor de autorização OAuth2, está pronto para tentar! Vamos tentar aceder-lhe do Carteiro e ver se conseguimos um sinal de acesso!
No entanto, antes de o fazermos, temos de realizar duas outras configurações.
Adicionar uma descrição do cliente
Primeiro, adicione a informação do Carteiro a que pretende aceder como cliente OAuth2. O registo do cliente OAuth2 pode ser adicionado através de registo dinâmico ou outros métodos.
Clique em "Descrição do Cliente" na página de configuração do servidor para continuar.
Clique em "Criar descrição do cliente" para adicionar uma entrada.
Siga as instruções abaixo para criar uma subscrição do cliente.
Definições no separador "Geral"
Nome Insira um nome à sua escolha. Neste caso, escolhemos "carteiro".
Tipo de Cliente Selecione "Confidencial"
Redirecionamento de URL Clique no botão "Adicionar URL" para adicionar um URL de redirecionamento para o Carteiro. https://www.getpostman.com/oauth2/callback como URL de redirecionamento para carteiro.
Tipos de subvenções apoiadas Especifique o mesmo "Código de Autorização" que foi configurado nas definições do servidor de autorização OAuth2. (Predefinição) Adicione um controlo se quiser testar outros tipos de bolsas também. No entanto, as definições devem ser as mesmas que a configuração do servidor de autorização. Verifique também a caixa "Autorização JWT". Especificar aqui
Algoritmo de assinatura autenticado Verifique "autorização JWT" ao abrigo de tipos de subvenção suportados para poder selecioná-la. Selecione "RS512".
Uma vez inserida a informação, clique no botão "Guardar" para guardar a descrição do cliente.
Clique no separador "Referências ao Cliente" para ver o ID do cliente e a chave privada do cliente para esta entrada. Você vai precisar desta identificação e chave privada quando fizer testes do POSTMAN.
Adicionar uma aplicação web
Deve ser adicionado outro parâmetro importante antes de aceder ao mesmo a partir do POSTMAN. O ecrã de configuração do servidor de autorização OAuth2 determinou que o ponto final para esta configuração é https:///authserver/oauth2. Para que o acesso a este ponto final seja tratado corretamente pela IRIS, precisamos de adicionar uma aplicação web para esta rota URL.
Vá à Administração do Sistema→SSecurity →Applicações→Web Applications, e clique em "Criaruma nova aplicação Web".
É fornecido um modelo de aplicação web OAuth2, por isso selecione primeiro "/oauth2" em "Copy from".
Definições de "Editar aplicações web"
Cópia de "/oauth2": Selecione sempre este primeiro na lista de drop-down.
Nome /authserver/oauth2
Ativação Verifique o botão de rádio "REST".
Depois de introduzir cada valor, guarde-o.
Teste OAuth2 do POSTMAN
Vamos testá-lo do CARTMAN. Os testes também podem ser feitos a partir de outras ferramentas ou do próprio programa. A explicação detalhada do POSTMAN está fora do âmbito deste artigo, mas um ponto a notar é que a verificação do certificado SSL deve ser alterada para OFF nas definições do POSTMAN.
Depois de criar um novo pedido no POSTMAN, selecione "OAuth 2.0" no separador TIPO DE PERMISSÃO e clique em "Obter Novo Token de Acesso".
No ecrã seguinte, insira os valores da seguinte forma.
Configurações「GET NOVO TOKEN DE ACESSO」
Nome simbólico Insira um nome à sua escolha.
Tipo de subvenção Escolha "Código de Autorização".
URL de retorno https://www.getpostman.com/oauth2/callback
Auth URL https:///authserver/oauth2/authorize Insira o valor do ponto final +/authorize. Ao adicionar ?ui_locales=ja, pode exibir o ecrã de login em japonês.
Auth Token URL https:///authserver/oauth2/token. Introduza o valor do ponto final +/token.
ID do cliente Introduza o ID do cliente apresentado no separador Referências ao Cliente depois de guardar a descrição do cliente.
Segredo do Cliente Introduza a chave privada do cliente, que é apresentada no separador Referências ao Cliente depois de guardar a descrição do cliente.
Campo Introduza o âmbito guardado na configuração do servidor de autorização, por exemplo "scope1". Também pode especificar vários campos separados por espaços.
Estado Introduza o parâmetro de estado "Estado", que é utilizado para contramedidas contra o CSRF. Não é explicitamente usado, mas não pode ser deixado vazio, por isso entramos numa corda arbitrária.
Depois de introduzir as definições e clicar no botão "Request Token", verá o ecrã de login como mostrado abaixo.
Tente iniciar sedução com a informação do utilizador (por exemplo, _SYSTEM) que tem acesso ao portal de gestão.
No ecrã seguinte após o início de sessão, pode decidir conceder permissões a esta aplicação. Depois de clicar em "Permitir", se o token de acesso for apresentado no ecrã seguinte, como mostrado abaixo, o teste de aquisição de token de acesso é bem sucedido!
Teste OpenID Connect
IRIS for Health pode realizar o processamento de autorização OAuth2, bem como o processamento de autenticação compatível OpenID Connect.Para mais detalhes consulte este documento.
Nesta configuração, o OpenID Connect está ativado, por isso vamos testar se também conseguimos obter o token OpenID Connect ID!
É fácil de implementar. No ecrã GET NEW ACCESS TOKEN, adicione "openid" ao seu âmbito e faça um pedido.
O OpenID Connect também será apresentado na página de pedido de permissão. Depois de iniciar sessão e dar as suas permissões, certifique-se de que também obtém um token de identificação (id_token) quando vir o ecrã seguinte. (Pode ser necessário rolar.)
Conseguiu o sinal de acesso e id_token?
Embora alguns preparativos, como certificados, exijam um pouco de tempo e esforço, poderíamos construir um servidor de autorização OAuth2 com tal simplicidade usando IRIS para a Saúde, uma plataforma de base de dados.
Na próxima parte desta série, vou finalmente mostrar-lhe como construir um repositório FHIR, registar o repositório FHIR como um servidor de recursos OAuth2, e mostrar-lhe como descansar o repositório FHIR usando um token de acesso OAuth2 da POSTMAN.
Ir para a publicação inicial escrita por @Shintaro Kaminaka
Artigo
Yuri Marx · jan 13, 2022
O recurso InterSystems IRIS IntegratedML é usado para obter previsões e probabilidades usando a técnica AutoML. O AutoML é uma tecnologia de Machine Learning usada para selecionar o melhor algoritmo/modelo de Machine Learning para prever status, números e resultados gerais com base nos dados anteriores (dados usados para treinar o modelo AutoML). Você não precisa de um Cientista de Dados, pois o AutoML testará os algoritmos de Machine Learning mais comuns e selecionará o melhor algoritmo para você, com base nos recursos de dados analisados. Veja mais aqui, neste artigo.
O InterSystems IRIS possui um mecanismo AutoML integrado, mas também permite que você use H2O e DataRobot. Neste artigo, mostrarei a você cada etapa para usar o mecanismo InterSystems AutoML.
Passo 1 - Download a aplicação de exemplo e faça os exercícios
1. Vá em https://openexchange.intersystems.com/package/Health-Dataset
2. Clone/git pull do repositório para qualquer diretório local
$ git clone https://github.com/yurimarx/automl-heart.git
3. Abra o terminal, vá no diretório do projeto e execute:
$ docker-compose build
4. Execute o IRIS no container:
$ docker-compose up -d
Passo 2 - Entendendo o cenário de negócio e os dados disponíveis
O cenário de negócio é para prever, usar dados passados e assim prever doenças cardíacas. Os dados para fazer isto são:
SELECT age, bp, chestPainType, cholesterol, ekgResults,
exerciseAngina, fbsOver120, heartDisease, maxHr,
numberOfVesselsFluro, sex, slopeOfSt, stDepression, thallium
FROM dc_data_health.HeartDisease
Segue o dicionário de dados da tabela (source: https://data.world/informatics-edu/heart-disease-prediction/workspace/data-dictionary):
Column name
Type
Description
age
Integer
em anos
sex
Integer
(1 = masculino; 0 = feminino)
chestPainType
Integer
Valor 1: angina típica -- Value 2: agina atípica -- Value 3: angina não presente -- Value 4: assíntomático
bp
Integer
Pressão sanguínea (in mm Hg no momento da admissão no hospital)
cholesterol
Integer
Colesterol em mg/dl
fbsOver120
Integer
(açucar no sangue > 120 mg/dl) (1 = true; 0 = false)
ekgResults
Integer
Resultados do eletrocardiograma -- Valor 0: normal -- Valor 1: tem ST-T com ondas anormais (onda T com inversões e/ou elevação ST ou depressão de > 0.05 mV) -- Valor 2: apresenta provável hipertrofia ventricular no lado esquerdo
maxHr
Integer
Pulsação máxima do coração atingida
exerciseAngina
Integer
Angina induzida a exercícios (1 = yes; 0 = no)
stDepression
Double
Depressão ST induzida por exercício
slopeOfSt
Integer
A inclinação do segmento ST de exercício de pico -- Valor 1: ascendente -- Valor 2: regular -- Valor 3: descendente
numberOfVesselsFluro
Integer
Número de vasos principais (0-3) coloridos por fluoroscopia
thallium
Integer
3 = normal; 6 = defeito corrigido; 7 = defeito reversível
heartDisease
String
Valor 0: < 50% estreitamento do diâmetro -- Valor 1: > 50% estreitamento do diâmetro
A heartDisease é a propriedade que precisamos prever.
Passo 3 - Preparar o treinamento dos dados
A tabela HeartDisease tem 270 linhas. Receberemos 250 para treinar nosso modelo de previsão. Para fazer isso, vamos criar a seguinte view dentro do Management Portal > Systems Explorer > SQL:
CREATE VIEW automl.HeartDiseaseTrainData AS
SELECT * FROM SQLUser.HeartDisease WHERE ID < 251
Passo 4 - Preparar validação dos dados
Obteremos 20 linhas para validar os resultados da previsão. Para fazer isso, vamos criar a seguinte view dentro do Management Portal > Systems Explorer > SQL:
CREATE VIEW automl.HeartDiseaseTestData AS
SELECT * FROM SQLUser.HeartDisease WHERE ID > 250
Passo 5 - Criar o modelo AutoML para a predição
O IntegratedML permite criar um modelo AutoML para fazer previsões e probabilidades (veja mais em https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_BASICS). Para fazer isso, vamos criar o seguinte modelo dentro do Management Portal > Systems Explorer > SQL:
CREATE MODEL HeartDiseaseModel PREDICTING (heartDisease) FROM automl.HeartDiseaseTrainData
O modelo do qual vamos obter dados de treinamento (learning) é da view automl.HeartDiseaseTrainData.
Passo 6 - Executar o treinamento
Para fazer isso, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL:
TRAIN MODEL HeartDiseaseModel
Passo 7 - Validar o modelo treinado
Para validar o treinamento, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL:
VALIDATE MODEL HeartDiseaseModel FROM automl.HeartDiseaseTestData
Nós validamos o HeartDiseaseModel usando dados de teste da view automl.HeartDiseaseTestData.
Passo 8 - Obter as métricas de validação
Para ver as métricas de validação do processo de validação, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL:
SELECT * FROM INFORMATION_SCHEMA_ML_VALIDATION_METRICS
Para entender os resultados retornados, consulte: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML_VALIDATEMODEL.
A documentação do InterSystems IRIS detalha o seguinte dos resultados da validação:
A saída de VALIDATE MODEL é um conjunto de métricas de validação que podem ser visualizadas na tabela INFORMATION_SCHEMA_ML_VALIDATION_METRICS.
Para modelos de regressão, as seguintes métricas são salvas:
Variance
R-squared
Mean squared error
Root mean squared error
Para modelo de classificação, as métricas a seguir são retornadas:
Precision — Isso é calculado dividindo o número de verdadeiros positivos pelo número de positivos previstos (soma de verdadeiros positivos e falsos positivos).
Recall — Isso é calculado dividindo o número de verdadeiros positivos pelo número de reais positivos (soma de verdadeiros positivos e falsos negativos).
F-Measure — Isso é calculado pela seguinte expressão: F = 2 * (precision * recall) / (precision + recall)
Accuracy — Isso é calculado dividindo o número de verdadeiros positivos e verdadeiros negativos pelo número total de linhas (soma de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos) em todo o conjunto de teste.
Passo 9 - Execute as predições usando seu novo modelo AutoML - o último passo!
Para ver as métricas de validação do processo de validação, executaremos a seguinte instrução SQL dentro do Management Portal > Systems Explorer > SQL:
SELECT *, PREDICT(HeartDiseaseModel ) AS heartDiseasePrediction FROM automl.HeartDiseaseTestData
Compare as colunas heartDisease (valor real) e heartDiseasePrediction (o valor de predição)
Aproveite!
Anúncio
Danusa Calixto · Maio 11, 2023
Olá Desenvolvedores,
No mês de Abril, foram postadas 65 novas perguntas na Comunidade de Desenvolvedores EN :
Questions
#InterSystems IRIS
NOT %INLISTby Matjaz Murko
SQL CREATE DATABASE from templateby Dmitry Maslennikov
How to list all the tables available in a current database?by Evgeny Shvarov
Port Authority Error - ERROR #794: Doc DB IRISInteroperabilityPorts in namespaceby Scott Roth
DML exportby Eduard Lebedyuk
Why loading X509 credentials fails when called under context of a CSP request ?by Norman W. Freeman
How To Create XML Document in BPLby Sridhar Sanjeevi
sharing a deployment on IRIS Cloud SQLby Robert Cemper
how to quickly move data to oracleby water huang
confusing content on IRIS Cloud SQLby Robert Cemper
How can I change the default string collation of a SQL stored procedure?by Pravin Barton
Any chance I can provide a password to a vanilla iris docker instance?by Evgeny Shvarov
IRIS start and stop too slowby Dmitry Maslennikov
Code to copy class definition from one Namespace to another?by Ben Spead
Quick Process to Start/Stop an Objectby Scott Roth
Read a long Stream into JSON Dynamic Object - MAXSTRING errorby Oliver Wilms
Error with AutoMLby andrey mikov
Simple example of SOAP service to transfer files between systemsby Punit Yogesh Shah
IRIS cloud SQL in contest - false promiseby Robert Cemper
Dissecting an OREFby Jeffrey Drumm
Error when changing legacy VB.Net code from InterSystems.Data.CacheClient to InterSystems.Data.IRISClientby Jon Astle
Allow string or number values for a property with JSON adaptorby Pravin Barton
VSCode: "ObjectScript Class" As "New File" Option?by Jean Millette
Is there a way to convert svg to jpg or pngby Wanbo Wang
ERROR #5034: Invalid status code structure - Writing to Fileby Scott Roth
Security Advisor - Application Errorby Scott Roth
Bulk FHIR DataLoaderby Ron Sweeney
Compile for a previous version of Health Connect?by Adam Lees
Restoring a backupby William Caldwell
Indexing on a Multivalue fileby Mindy Caldwell
REST API Versioning in Headerby Michael Davidovich
Interoperability "Productions" Stop and Start from command lineby Phillip Wu
Using %Stream.FileBinary's ClassMethods to set where a Stream is savedby Punit Yogesh Shah
How to escape ')#' inside a CSP Runtime Expression?by Ben Spead
Issues with Publishing Power BI Reports with DirectQuery Connection to IRIS?by Jean Millette
Memory leak and IRIS container freeze... or just my curvy handsby Rostislav Dublin
#Ensemble
SQL query in Dropdownby Rochdi Badis
Transform HL7 message to multi-line output flat fileby Doug Strzalko
How to Download files using %Net.HttpRequestby Thembelani Mlalazi
Refreshing Comboby Rochdi Badis
Find a specific column in a dataComboby Rochdi Badis
Uninstalling Ensembleby Colin Brough
i meet a problem when use %SQLGatewayConnectionby water huang
Basics for JSON in ensembleby Joe Jones
Show display mode in SQL queryby Rochdi Badis
Collecting all elements of a Productionby Andrew Makinson
Custom Dashboardby Larry Pinsky
#HealthShare
How to know which users did patient searches on clinical viewerby Ephraim Malane
What type of inbound connection send an ACK back by default?by Jason Pribble
#Caché
ERROR #6301: SAX XML Parser Error: XML or TEXT declaration must start at line 1, column 1by Colin Brough
Document SDA deletionby Akshay Pandey
Using %Stream.FileCharacter to create and append to files - Permissions Issueby Scott Roth
Breaking a string into wordsby Anna Golitsyna
Replace text by argsby Kurro Lopez
Need to understand message in console logby Kevin McGinn
Post form data and redirect not workingby Tiana Andria
checksum calculation, , shift byteby Sergio Carvalho
import global (2012.5 to 2018.1.4)by Lucas Galdino
How to Set and Check session for CSP Pageby Vinay Purohit
#InterSystems IRIS BI (DeepSee)
I need to group two or more values into one. What is the right syntax ? WITH [DIMENSIONS].[GENDERCAL] AS [Gender].[H1].[Gender].Currentmember WHEN [Gender].[H1].[Gender].[F] THEN 'FEMALE' WHEN [Gby Jacinto Busquets
#InterSystems IRIS for Health
Docker container - enable TLS/HTTPS on private web serverby John McBride
Need to have TCP/IP HL7 Inbound service/adapter just write to file - no persistence anywhere in the engineby Ryan Hulslander
After upgrade SYS.Task.BackupAllDatabases notby Mark OReilly
IRIS/REST, how could I get all HTTP headers?by Dmitry Baranov
IRIS on Azure, access through WSL in Win, needed directories not visibleby Prashant Sonnaik
Aqui estão as Perguntas de Abril escolhidas pelos Especialistas da InterSystems:
📌 Quick Process to Start/Stop an Object por @Scott.Roth
📌 Replace text by args por @Francisco.López1549
📌 Code to copy class definition from one Namespace to another? por @Benjamin.Spead
Estas perguntas estarão destacadas com a tag #Key Question, e seus autores receberão o selo Key Question no Global Masters.
Parabéns, e obrigada a todos por suas perguntas. Continuem a perguntar!
Vejo vocês no próximo mês😉