Escolar Documentos
Profissional Documentos
Cultura Documentos
1
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Visão Geral do Curso
Módulo I: Introdução
Introdução ao FHIR
Recursos
2
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Sumário
Conformidade: Publishing 28
ImplementationGuide (Guia de Implementação) 28
Processando o ImplementationGuide 29
4
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Conteúdo da Unidade e Objetivos de Aprendizagem
Esta unidade discute alguns tópicos avançados sobre a criação de perfil FHIR: como definir
extensões e restrições aos recursos FHIR e como documentar essas restrições.
Esta unidade complementa o que você aprendeu na unidade da semana passada: você
pode combinar qualquer recurso e estender o FHIR livremente, mas precisa documentar
suas escolhas: deixe o mundo saber (ou pelo menos seus parceiros na troca de
informações, atuais e futuros) o que cada aplicativo deve enviar e receber e como validar
os recursos antes de ir para (ou mesmo enquanto está a caminho da) produção.
Nosso objetivo para esta unidade NÃO é que você se torne um especialista em
Conformidade e Criação de Perfil FHIR, mas pelo menos familiarizá-lo com os recursos e
ferramentas envolvidos e com o uso esperado, além de fornecer alguns exemplos de
uso.
Também queremos chamar a sua atenção para algumas fontes importantes de guias de
implementação.
5
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Por que precisamos de perfis?
FHIR é uma especificação internacional, usada em contextos múltiplos e diversos. Como
você já deve ter notado, cada servidor pode implementar um subconjunto da
especificação em termos de recursos, conteúdo, formato e mecanismos de transporte.
6
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Figura: Diferentes abordagens de sistemas para o mesmo conceito.
Durante muito tempo, os perfis no HL7 foram desenvolvidos em uma sintaxe diferente
do padrão (Schematron, grandes arquivos do Word, arquivos XML especiais e schemas,
etc.). Expressar perfis sempre foi uma reflexão tardia.
O FHIR traz uma nova visão para conformidade e validação: perfis, declarações de
conformidade e guias de implementação podem ser criados usando recursos FHIR e um
servidor FHIR pode validar instâncias de recursos com base nesses perfis, assumindo uma
das operações definidas.
Na maioria das vezes, todos os componentes para um servidor FHIR podem sofrer
restrições. As perguntas básicas são “O que é usado?”, “O que NÃO é usado” e “O que é
estendido?”.
Elementos em recursos:
Comportamento:
● Quais interações específicas da API RESTful são suportadas por nossos servidores
para cada recurso que gerenciam?
● Permitimos a exclusão de recursos? Apoiamos o versionamento?
● Operações especiais: definição de operação especial não-Crud e seus parâmetros
Pesquisas:
8
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
● Quais parâmetros de pesquisa nossos servidores suportam?
Extensões:
1. De autoria estruturada
2. Publicada em um repositório
3. Usado como base para validação, código e geração de UI
Vamos explorar o uso de cada recurso e suas combinações, dividindo-os em quatro áreas:
9
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Como você já deve ter pensado, o recurso ImplementationGuide agrupa todos os outros
recursos em um pacote para publicação e os disponibiliza para os implementadores.
10
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Conformidade: Operations (Operações)
Esse grupo de recursos é sobre o servidor BEHAVIOR, o que o servidor pode e não pode
fazer e como isso é implementado.
Este é o recurso mais importante neste espaço: permite ver quais chamadas específicas
da API o servidor aceitará e sobre quais tipos de recursos.
Talvez seja a primeira coisa a fazer ao implementar ou confrontar (como um cliente FHIR)
um servidor.
Você também pode procurar a declaração de capacidade do servidor deste curso (ou
qualquer outra) colando-a no navegador da Internet ou no cliente REST (pode demorar
um pouco, seja paciente): http://fhir.hl7fundamentals.org/r4/metadata
11
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
● Por classe de recurso: interações CRUD suportadas, criação/atualização/exclusão
condicional para cada tipo de recurso, inclusões de pesquisa e parâmetros de
pesquisa.
Este recurso inclui a descrição da operação e, para cada parâmetro, o uso (IN/OUT),
Nome, Cardinalidade, Tipo e Binding.
12
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
○ Perfil (Profile): StructureDefinition que aplica restrições adicionais sobre o
recurso.
○ Documentação (Documentation) - uma descrição do uso do parâmetro.
Esta é uma representação JSON muito pequena da operação $ihe_pix definida pelo IHE
PIX Mobile Implementation Guide:
"resource":{
"resourceType":"OperationDefinition",
"name":"$ihe-pix",
"status":"draft",
"type":[
"Patient"
],
"parameter":[
{
"name":"sourceIdentifier",
"use":"in"
},
{
"name":"targetSystem",
"use":"in"
},
{
"name":"_format",
"use":"in"
}
]
},
GET[base]/Pacient/$ihe-
pix?sourceIdentifier=[token]]{&targetSystem=[uri]}{&_format=[mime-type]}
13
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
● Parâmetro 2: targetSystem 0..1 uri - O Patient Identifier Assigning Authority de
destino a partir da qual o identificadores retornados devem ser selecionados;
Exemplo da chamada:
[base]/Pacient/$ihe-
pix?sourceIdentifier=urn:oid:1.3.6.1.4.1.21367.2010.1.2.300|NA5404
Você pode ver uma descrição completa de uma operação FHIR aqui:
https://www.hl7.org/fhir/operation-patient-match.html.
Todos os parâmetros de pesquisa suportados pelos recursos padrão do FHIR são definidos
usando o recurso SearchParameter.
Inclui todas as informações necessárias sobre a maneira como essa classe de recurso
específica pode ser pesquisada dentro de um servidor FHIR:
Nota: Quer saber o que é um ´fhri path´? O FHIR precisava de um equivalente ao XPath
para JSON, ou melhor ainda, de algo que pudesse se referir logicamente ao conteúdo de
um recurso, independentemente da sintaxe. Portanto, 'FHIRPath'. Se você quiser saber
mais sobre o FHIRPath, leia o seguinte: http://hl7.org/fhirpath/
Esse recurso também é usado se você deseja oferecer suporte a pesquisas não definidas
pela especificação principal. Para fazer isso, você precisa criar um novo SearchParameter
para o seu recurso e incluí-lo na declaração de conformidade do servidor e no guia de
implementação do seu projeto.
14
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
http://hl7.org/fhir/searchparameter-example-extension.html
15
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Conformidade: Content (Conteúdo)
Visão geral
1. Limitar cardinalidade
2. Alterar mapeamentos de conjunto de valores
3. Adicionar restrições adicionais
4. Adicionar extensões
5. Definir mapeamento externo ou lógico
Lembre-se do princípio básico: ao fazer tudo isso, você não pode contradizer as definições
básicas da norma: elementos obrigatórios e codificação, etc. Um elemento com perfil
ainda é um elemento do mesmo tipo.
Perfis StructureDefinition
16
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Slicing (Fatiadores) e Discriminadores
Qualquer recurso que permita mais de uma repetição pode ser perfilado usando o slicing.
Por que precisamos re(fazer) um perfil de repetições? Alguns casos de uso a seguir:
Exemplo de slicing:
17
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
erradas etc.), o Ministério da Saúde também criou um Identificador Nacional de
Saúde (NHIB). Para o recurso do paciente, os dois identificadores são obrigatórios.
É assim que o slicing se parece. observe como dividimos o elemento identificador para
que agora sejam necessários dois elementos identificadores. Nesse caso, a fatia é baseada
no atributo identifier.system:
<identifier>
<system value=www.berzerkistan.gov/bni/>
<value value=”73928192”>
</identifier>
<identifier>
18
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
<system value=www.berzerkistan.gov/nhib/>
<value value=”340323-20-09”>
</identifier>
Extensões FHIR
Em nossa primeira unidade, você aprendeu a incluir uma extensão na sua instância de
recurso FHIR. Lembre-se: é composto por um URL e um valor, o URL apontando para a
definição de extensão.
Aqui, você aprenderá como DEFINIR extensões, sendo que uma extensão também é
definida usando um recurso StructureDefinition.
Extensão simples
Uma extensão simples é uma extensão como vimos até agora: valor único.
Você pode ver essa definição no arquivo que se encontra no apêndice da unidade:
SimpleExtensionExample.xml.
Finalmente, a definição inclui o diferencial para a extensão. Extensões simples têm dois
elementos: url e value[x], sendo qualquer URL e uma escolha de valores (quantidade,
string, etc.).
1. Um URL fixo:
http://fhir.hl7fundamentals.org/berzerkistan/StructureDefinition/PatientTaxSitu
ation.
2. Um tipo de valor específico: Codificação.
Talvez você pense: “Algo falta nessa explicação! Por que o governo do Berzerquistão
cobra impostos sobre serviços de saúde?".
Essa é uma ótima questão, mas não era essa pergunta que tínhamos em mente.
Infelizmente não podemos responder a isso.
A pergunta seria “Onde está a tabela de códigos PPH? Como sabemos que estamos
usando o código correto para a situação tributária do paciente em nossa instância?”.
Você pode encontrar mais informações na próxima seção (Terminologia) sobre ValueSets
e CodeSystems e como construí-los.
Extensões Complexas
Extensões complexas são definidas por uma URL e uma lista de elementos. De fato,
extensões complexas podem ser a base de recursos completamente novos, se nenhum
recurso FHIR atender às suas necessidades. Isso pode ser alcançado usando uma nova
entidade chamada de recurso "Básico".
Você pode estender um recurso básico com todas as extensões necessárias (consulte
https://www.hl7.org/fhir/basic.html) e criar seus próprios recursos FHIR. Um exemplo
disso está aqui http://standardhealthrecord.org/fhir/.
Na verdade, o que queremos, é deixar você avisado: isso fará pouco para a
interoperabilidade global geral. Por favor não. Não faça isso. Por favor nããão!
Exemplos disso são: gravar uma instrução para NÃO tomar um medicamento, usar o
recurso Condition para transmitir o fato de que a condição específica pertence a outra
pessoa e não ao próprio paciente, afirmar que um executante NÃO esteve envolvido em
um procedimento.
Portanto, se sua extensão modificar o conteúdo do recurso e o recurso NÃO puder ser
processado com segurança pelos aplicativos que a IGNORAM, elas merecerão o nome de
Modifier Extension.
21
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Declarar uma Modifier Extension é simples: basta incluir isModifier = True na definição da
estrutura.
Todavia, a implementação de Modifier Extensions é mais difícil, uma vez que você
precisará adicionar essas informações no seu sistema e em todo o pipeline para troca com
parceiros e vice-versa.
Binding
<binding>
<strength value="required"></strength>
<description value="PPH Tax Table"></description>
<valueSetReference>
<reference
value=
"http://fhir.hl7fundamentals.org/berzerkistan/ValueSet/PatientTaxSituation">
</reference>
</valueSetReference>
</binding>
22
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Conformidade: Terminology (Terminologia)
Estes são recursos relacionados à terminologia/vocabulário. O mais importante para a
implementação do perfil é o ValueSet: você pode armazenar o seu ValueSet restrito em
um servidor FHIR e referenciar as restrições de vocabulário no seu perfil contra o servidor.
Nota: Deseja entender o que um serviço de terminologia faz? Por favor, leia:
https://www.hl7.org/fhir/terminology-service.html
23
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
CodeSystem (Sistema de códigos)
Os sistemas de códigos publicados externamente têm uma URL especial definida para seu
uso nos artefatos FHIR. Você pode encontrar a maioria deles aqui:
https://www.hl7.org/fhir/terminologies-systems.html.
Você pode encontrar uma definição simples do CodeSystem para o Ministério da Saúde
do Berzerquistão, voltado para a aplicação de um imposto para assistência médica, aqui:
CodeSystemSimpleExample.json.
Esta é a operação terminológica mais simples para uma pesquisa CodeSystem: $ (não é
apenas uma pesquisa de código, podendo implicar na recuperação e no retorno das
informações conceituais das informações subjacentes ao sistema de códigos)
[basefhir]/$lookup?system=[system]&code=[code]
ValueSet são a maneira de expressar exatamente quais valores são aceitos para o
sistema/valor de um elemento codificado. No seu guia ou perfil de implementação, você
pode vincular cada elemento codificado a um conjunto de valores específico. Você pode
criar um conjunto de valores:
Exemplo: https://www.hl7.org/FHIR/valueset-doc-section-codes.html
b) Definindo alguns critérios pelos quais os conceitos são extraídos do sistema de código
original.
25
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Operações ValueSet: $expand e $validate
É claro que são mais complexas do que parecem aqui, mas vamos usá-las apenas para
mostrar o conceito de Operações e o fato de que o perfil, as restrições e o vocabulário do
seu guia de implementação, todas as operações nativas do seu servidor FHIR podem ser
aproveitadas, se implementadas, é claro.
Por uma questão de curiosidade, agora que você conhece a tabela PPH, execute essas
operações em nosso serviço, sem necessidade de usar um cliente FHIR ou REST, apenas
no seu navegador da Internet:
http://fhir.hl7fundamentals.org/r4/ValueSet/17583/$expand.
26
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
http://fhir.hl7fundamentals.org/r4/ValueSet/$validate-co-
de?system=http://fhir.hl7fundamentals.org/berzerkistan/CodeSystem/PatientTaxSituati
on&code=O&display=OTHER.
Você deve receber a mensagem "Código não encontrado".
Este recurso inclui os metadados do mapa (origem e destino, versão, autor etc.) e uma
lista de códigos no sistema de códigos fonte e o relacionamento de cada código com um
ou mais códigos no sistema de códigos de destino.
Você pode ver um exemplo aqui, onde o tipo de amostra para HL7 V2 Tabela 0487
(Specimen type - Tipo de amostra) é mapeado para SNOMED CT:
https://www.hl7.org/fhir/conceptmap-example-specimen-type.html.
Este recurso possui uma operação especial chamada $translate, que permite ao servidor
fornecer a equivalência de um sistema de códigos aos códigos existentes em um sistema
de códigos fonte.
NamingSystem
Esse recurso representa um espaço para nome que emite identificadores exclusivos para
conceitos (classificação, sistemas de códigos, conjuntos de valores etc.) ou entidades
(pessoas, dispositivos, organizações, pedidos, etc.).
27
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
NamingSystem inclui o nome, tipo (sistema de código ou identificador), responsável,
editor, contexto de uso e todos os identificadores exclusivos equivalentes para o sistema.
Conformidade: Publishing
1. Título
2. Sumário
3. Informação do documento
4. Introdução ao guia
5. Princípios e antecedentes
6. Casos de uso funcionais no nível de requisitos
7. Considerações de projeto
8. Conteúdo da embalagem
9. Orientação sobre privacidade e segurança
10. Lista de todos os artefatos utilizados
Os itens de 1 a 9 são apenas páginas (html ou markdown) que você precisa criar, usando
o editor que desejar e os artefatos de formatação auxiliares (arquivos css, js, img). O item
10 é uma lista de todos os recursos restritos agrupados em pacotes. Você também pode
incluir dependências em outras diretrizes de implementação. Você pode criar um guia de
implementação com base nos recursos criados por outro guia de implementação (lembre-
se de que os guias de implementação também são recursos do FHIR, portanto, essa
dependência é realmente computável).
28
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Processando o ImplementationGuide
Para criar e publicar um guia de implementação, mesmo que você tenha o recurso
ImplementationGuide, o processo ainda pode ser complicado.
Algumas opções:
● Salve todos os seus recursos e narrativa no Simplifier e peça ao Simplifier para criar
seu guia de implementação. O guia de implementação será semelhante a este
abaixo:
29
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
● Execute a ferramenta de publicação FHIR IG (baseada em Java/Ruby). A vantagem
desta opção é que o IG será exatamente igual aos IGs publicados pela HL7. Se você
estiver interessado em explorar esta opção, há uma página wiki explicando como
instalar/usar a ferramenta:
http://wiki.hl7.org/index.php?title=IG_Publisher_Documentation e também um
PPT com um guia passo a passo das etapas do processo: https://goo.gl/6hB1ZP.
<meta>
<profile
value= "http://fhir.server.org/ImplementationGuide/HealthCareClaim"
</meta>
30
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Validação de Recursos
1. usando o Schema XML (apenas para instâncias XML), basicamente o que você fez
em nossas primeiras unidades.
2. usando o validador FHIR (é um JAR em java que você pode baixar aqui:
https://www.hl7.org/fhir/validator.zip).
3. perguntando a um servidor FHIR, usando a operação especial $validate. A maneira
mais simples de executar esta operação é postar o recurso em um servidor:
POST[base]/Patient/$validate?profile=http://hl7.org/fhir/StructureDefinition/daf
-patient
Todos esses métodos de validação estão incompletos, uma vez que só podem validar os
aspectos 'computáveis' do desempenho.
Algumas regras narrativas só podem ser verificadas pela inspeção dos recursos. O
Schema/Schematron é o menos capaz pois não verifica a terminologia.
31
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Ferramentas para criar perfis
Você pode criar recursos de conformidade, assim como qualquer outro recurso FHIR,
editando XML ou JSON, mas é um processo muito complicado e complexo.
Várias ferramentas para criar recursos de conformidade com o FHIR foram desenvolvidas
(e continuam evoluido). Abaixo, seguem algumas. Nenhuma delas é a ferramenta oficial
do HL7 para criar perfis. Até pouco tempo atrás, os Workgroups do HL7 usavam para
votação de perfis e artefatos atuais uma ferramenta chamada Microsoft Excel (!).
Você pode fazer o download das ferramentas e experimentá-las (ou apenas usá-las, se
forem baseadas na Web).
32
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Forge
33
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Trifolia
34
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Simplifier
35
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Formulário de pesquisa de recursos:
clinFHIR
Snapper
Você pode importar, editar e exportar ou publicar seus sistemas de códigos, conjuntos de
valores e mapas conceituais usando o Snapper!
Argonaut Project
38
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Descrição: O projeto Argonaut é uma iniciativa do setor privado para desenvolver uma
API baseada em FHIR que permita o compartilhamento de registros eletrônicos de
assistência médica.
Possui perfis para permitir o acesso aos registros do paciente em qualquer hospital -
desde que o hospital tenha adotado o guia - e, em seguida, informações granulares sobre
alergias, plano de saúde, equipe de assistência, condições, dispositivos, testes e relatórios
laboratoriais, imunizações, medicamentos, procedimentos, tabagismo, sinais vitais e
documentos.
Adoção: Talvez este seja o guia mais relevante em termos de adoção. Foi adotado não
apenas pelos patrocinadores do projeto, mas pela Apple, que adotou o R2 deste guia para
seu módulo de Saúde (incorporado no IOS 11.3). A Apple alega já ter centenas de
hospitais/grupos conectados.
39
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Veja mais:
http://www.healthcareitnews.com/news/how-apples-health-records-could-reshape-
patient-engagement.
Também foi adotado (silenciosamente) pela Google por meio de sua subsidiária Apigee,
em um produto chamado Apigee-health-apix (Managed API for Healthcare).
40
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
IHE-on-FHIR
Embora o IHE ainda publique seus guias de implementação como arquivos PDF gigantes,
ele está adotando o padrão FHIR para vários perfis devido ao alinhamento do setor e
talvez também porque o FHIR está finalmente 'atingindo a maioridade'.
O primeiro conjunto de perfis foi uma etapa para habilitar o FHIR para os perfis 'legados'
(e mais relevantes) da IHE:
Se sua empresa investe nos perfis IHE e deseja abrir uma "porta FHIR" ou "fachada FHIR"
(é assim que é tecnicamente descrita), essas são as especificações que você estava
procurando.
41
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Smart-On-FHIR
Guias de implementação pública regional (criada pelo Afiliado HL7, da França, Finlândia,
Noruega, Reino Unido etc.) geralmente são encontrados no Simplifier, em:
https://simplifier.net/search?category=ImplementationGuide.
Pode haver outros guias de implementação do FHIR, mas eles não são anunciados ou são
privados. Portanto, não podemos fornecer mais informações sobre eles.
43
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Mais informações sobre criação de perfil FHIR
Criação de perfis em FHIR (FHIR Profiling) é um assunto complexo. Existe um bom site
para encontrar mais informações sobre isso, se você estiver interessado, publicado pela
empresa da Holanda chamada Firely, que também publicou o Simplifier e Forge.É
chamado de 'Academia de Perfis FHIR' e o link para acesso é:
https://simplifier.net/guide/ProfilingAcademy/Modules.
Alguns dos artigos se concentram em como usar o Forge para criação de perfil. Portanto,
se você não estiver usando o Forge, talvez não os considere de interesse. De qualquer
forma, eles são uma boa fonte de informações sobre o que pode ser representado ou
restringido em FHIR e como.
44
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Tarefa desta semana
Nós vamos tentar:
45
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Resumo e Conclusão da Unidade
Nesta unidade, discutimos os conceitos básicos de criação de perfil e conformidade ao
usar o FHIR.
Criamos perfis para restringir os padrões de nossos cenários e casos de uso específicos e
documentamos nossas decisões, permitindo a validação automática da conformidade
sempre que possível.
A criação de perfil no FHIR é obtida através da criação de recursos do FHIR. Estes são
alguns dos recursos do FHIR usados para documentar restrições: ImplementationGuide,
CapabilityStatement, OperationDefinition, SearchParameter, StructureDefinition,
ConceptMap, NamingSystem, DataElement, ValueSet, CodeSystem.
Algumas das ferramentas disponíveis para criação e teste de perfis são: Trifolia, Forge,
Simplifier (restrição de registro) e clinFHIR. Nem todas as ferramentas suportam a edição
de todos os tipos de recursos de conformidade.
A validação da conformidade pode ser obtida usando o Schema XML para os recursos
(validação simples em relação ao Schema) ou usando a funcionalidade de validação dos
servidores FHIR. Também exploramos alguns Guias de Implementação amplamente
usados ou relevantes.
A criação de perfil FHIR ainda está sendo desenvolvida, mas podemos começar a sonhar
com guias de implementação computáveis e ferramentas adequadas para criá-los.
46
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução
Material de Leitura Adicional
Informações sobre o FHIR
Existem vários lugares onde você pode obter informações sobre o FHIR.
47
© 2020 HL7® Brasil & HL7® International - Proibida Reprodução