Compartilhar via


Mapas do Kit de Ferramentas de Integração de Dados: exemplos e casos de uso

O kit de ferramentas de integração de dados fornece uma extensa coleção de mapas padrão criados para estar em conformidade com a especificação HL7 FHIR.

Os mapas de entidade e os mapas de atributo padrão são implantados como registros do Dataverse e são altamente configuráveis para acomodar os requisitos da sua solução. Este artigo inclui alguns exemplos associados ao uso desses mapas.

Para obter informações sobre como configurar esses mapas, revise Configurar mapas de entidade e Configurar mapas de atributo. As Dataverse Healthcare APIs, o processo de write-back e as tabelas virtuais de dados de saúde usam os mesmos mapas configurados.

Exemplos de mapas de entidades

Esta seção lista alguns exemplos de uso de mapas de entidades.

Exemplo 1: encontro com o paciente

Quando você adiciona uma consulta ao EHR (registros eletrônicos de saúde) de um paciente, o mapa de entidade fornece as regras de transformação que as Dataverse Healthcare APIs precisam para transformar o FHIR em registros do Dataverse.

  1. O mapa da entidade msemr_encounter ↔ Consulta conecta o recurso FHIR do Azure Consulta à entidade do Dataverse msemr_encounter.

    Uma captura de tela mostrando o exemplo de mapa de entidade para encontro com o paciente.

  2. Alterações de dados no recurso Consulta no sistema de registro de saúde do cliente acionam uma nova mensagem para as Dataverse Healthcare APIs. Por exemplo, se o Aplicativo Lógico do Azure da Dataverse Healthcare API for implantado usando o Modelo de pipeline de dados de saúde, um novo pacote FHIR será postado no armazenamento de blobs. Esse aplicativo lógico processa esta pacote e posta-o no Dataverse por meio do Dataverse Healthcare APIs.

  3. As Dataverse Healthcare APIs usam o mapa de entidades msemr_encounter ↔ Consulta. Os mapas de atributos relacionados transformam os recursos FHIR recebidos em seus registros representativos no Dataverse.

Exemplo 2: atualização do paciente no Dataverse e write-back

Esse exemplo considera um cenário em que você atualiza um registro de paciente no Dataverse e deseja que essa alteração seja gravada de volta em seu sistema EMR (registros médicos eletrônicos), por meio dos Serviços de Dados de Saúde do Azure.

  1. O mapa de entidades contato ↔ Paciente do kit de ferramentas de integração de dados relaciona o Recurso FHIR do Azure Paciente à entidade Contato do Dataverse.

    Uma captura de tela mostrando o exemplo de mapa de entidade para atualização de paciente no Dataverse.

  2. Uma alteração de dados em um registro de paciente no Dataverse desencadeia o plug-in de write-back do Dataverse.

  3. Esse plug-in do Dataverse envia uma mensagem sobre o registro alterado para o ponto de extremidade FHIR de saída configurado na seção write-back das configurações de integração.

  4. Neste exemplo, o ponto de extremidade FHIR é configurado para postar diretamente nos Serviços de Dados de Saúde do Azure.

  5. Você também pode configurar uma aplicação de retransmissão, como um Aplicativo Lógico do Azure ou uma Função do Azure, que pode postar a mensagem no serviço EMR e no Serviços de Dados de Saúde do Azure.

    Observação

    Recomendamos que você mantenha seus dados de pacientes, médicos, clínicos gerenciados e clínicos referenciados sincronizados com o Microsoft Cloud for Healthcare.

Para obter mais informações sobre como configurar o write-back, acesse Visão geral do write-back para Dataverse Healthcare APIs.

Exemplos de mapas de atributos

Esta seção inclui exemplos para configurar vários tipos de mapas de atributos que você pode encontrar.

Exemplo 1: Campo existente de cadeia de caracteres simples

O exemplo a seguir obtém o valor do sobrenome de um paciente do FHIR para enviar para o Dataverse ou atualiza o valor do atributo lastname do Dataverse para o elemento family no FHIR.

`{"s": "$.name[?(@.use=='usual')].family"}`

Esse mapeamento presume que o valor name sempre existe e pode ser localizado por meio do JSONPath definido no recurso FHIR.

Exemplo 2: Campo existente ou inexistente

O exemplo a seguir obtém/atualiza o campo city de address[0], se ele existir. Se essa atualização fosse do Dataverse e address[0] não existisse no FHIR, isso criaria um address[0] pai e definiria o valor city do Dataverse. Também cria valores padrão ou de espaço reservado para outros atributos do Dataverse que poderiam estar faltando no FHIR.

{
    "s": "$.address[0].city",
    "c": {
           "p": "address[0]",
           "a": [
                  {
                    "line": ["x"]
                  },
                  {
                    "city": "%"
                  },
                  {
                    "state": "x"
                  },
                  {
                    "postalCode": "x"
                  },
                  {
                    "country": "x"
                  }
                ]
         }
}

Nota

Para valores de cadeia de caracteres, o valor definido é a cadeia de caracteres literal definida na matriz de atributos, a menos que seja uma das sequências de caracteres especiais. Essas sequências de caracteres especiais são substituídas por valores da seguinte forma:

  • % - copia o valor do atributo do Dataverse.
  • %% - copia o tipo do recurso de referência FHIR (por exemplo, Paciente).
  • %%% - copia o tipo e a ID do recurso de referência FHIR (exemplo, Paciente/1234).

Exemplo 3: Nome do paciente

Aplica as regras da seção anterior e usa o seguinte exemplo para atualizar o nome do paciente.

{"s": "$.name[?(@use=='official')].given[0]", "c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]} }
  • "s" = extrair o given name do paciente do FHIR para carregar no Dataverse
  • "c" = criar o given name de um paciente quando ele não existe no FHIR
  • "p" = objeto pai da entrada a ser criada
  • "a" = matriz de parâmetros para usar ao criar "c"

Observação

Os colchetes {} contêm a expressão, enquanto as vírgulas "," separam os segmentos da expressão. No entanto, os colchetes de matriz [] indicam que a expressão contém dois ou mais segmentos completos.

"s": "$.name[?(@use=='official')].given[0]"
"c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]

Exemplo 4: Codeable concept

Combinar codeable concepts do FHIR para o Dataverse é o mesmo que combinar elementos de cadeia de caracteres JSON. A única diferença é que há um nível extra necessário para chegar ao detalhe.

  1. A URL da extensão é http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Queremos acessar o elemento valueCodeableConcept dentro dessa entrada de extensão.
  3. Queremos a primeira entrada na matriz de codificação.
  4. Queremos mapear o display para mostrar as informações no FHIR que estão anexadas a um sistema de codificação.

Recurso de FHIR

Uma captura de tela mostrando os codeable concepts FHIR.

JSONPath

{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].display"}

Exemplo 5: Informações de texto do mapa

  1. A URL da extensão é http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Queremos acessar o elemento valueCodeableConcept dentro dessa entrada de extensão.
  3. Queremos mapear o texto para mostrar as informações fornecidas ao FHIR pelo Epic.

Recurso de FHIR

Uma captura de tela mostrando os codeable concepts FHIR para o exemplo de texto.

JSONPath

{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].text"}

Exemplo 6: Valor mapeado

Para obter outro exemplo, você pode criar um mapa de atributos para gênero. No Dataverse, o nome do atributo é gendercode.

  1. No mapa da entidade para Contato, selecione + Novo Mapa de Atributos do Serviço de Atualização.

  2. Como gênero é uma lista de seleção, o Tipo de Ação é Valor Mapeado.

    O gênero no Dataverse é uma lista de seleção. Como também é uma lista de seleção no FHIR, você mapeia os valores da lista de seleção do FHIR para os valores da lista de seleção do Dataverse.

  3. Selecione Mapa de Elementos FHIR para adicionar o mapa de elementos FHIR para gênero. Neste exemplo, é uma cadeia de caracteres de pesquisa JSON que permite que você chegue ao gênero do elemento FHIR.

  4. Selecione Salvar.

    Em segundo plano, o sistema determina que o gênero é um conjunto de opções. Você precisa mapear vários valores para este conjunto de opções.

  5. Em Mapas de Valores, insira o Valor FHIR do Azure para mapear para o conjunto de opções. Por exemplo, insira masculino para a opção Masculino (o valor do Dataverse é = 1) e insira feminino para a opção Feminino (o valor do Dataverse é = 2).

    Selecione Salvar.

    Uma captura de tela exibindo os mapas de valor.

Exemplo 7: Definir o valor padrão

Neste exemplo, defina um valor padrão para mapas de valores.

  1. No mapa da entidade para Contato, selecione + Novo Mapa de Atributos do Serviço de Atualização.

  2. Para Nome do Atributo, selecione Tipo de Contato (msemr_contacttype).

    O Tipo de Contato no Dataverse é um conjunto de opções. Por apresentar pacientes, você sempre deseja que o tipo de contato seja o valor padrão.

  3. Para Tipo de Ação, selecione Definir Valor Padrão.

    Um mapa de elementos FHIR não é necessário porque você está apenas configurando o valor padrão. Nesse caso, FHIR não tem nenhum conceito de tipo de contato, mas o Dataverse precisa dele.

  4. Selecione Salvar.

  5. Em Mapas de Valores, selecione a primeira linha e selecione Editar.

  6. Em Mapa de Valores de Atributos, selecione Paciente para o campo Rótulo de OptionSet.

    O campo Valor mostra o valor padrão para o tipo de contato. A Dataverse Healthcare API preenche automaticamente o valor do Dataverse.

    Uma captura de tela exibindo um exemplo para definir o valor padrão para um mapa de atributos.

  7. Selecione Salvar e fechar.

    Em Mapas de Valor, o valor padrão do Dataverse está definido. Cada vez que o Dataverse Healthcare API entra e cria um paciente, ele define o campo Tipo de Contato como Paciente.

Exemplo 8: Pesquisa

As etapas a seguir fornecem um exemplo de mapeamento de um atributo do Dataverse do tipo Pesquisa.

  1. No mapa da entidade para Contato, selecione + Novo Mapa de Atributos do Serviço de Atualização.

  2. Para Nome do Atributo, selecione Profissional principal (msemr_generalpractitioner).

    O Tipo de Atributo do atributo Profissional Principal é Pesquisa (uma operação de pesquisa para a entidade Contato).

  3. Para Tipo de Ação, o único tipo de ação é Referência FK (referência de chave estrangeira). Você precisa indicar à Dataverse Healthcare API como definir essa pesquisa.

  4. Adicione o valor Mapa do Elemento FHIR ao profissional principal.

    Uma captura de tela mostrando o valor do mapa do elemento FHIR.

  5. Para Referência de Recurso FHIR, selecione Profissional.

    No Dataverse, a referência da entidade para o profissional principal é Contato. A referência de recurso FHIR é Profissional.

  6. Selecione Salvar.

Se um atributo do Dataverse for do tipo pesquisa, você só poderá criar um mapa que seja uma referência de chave estrangeira (FK). Para configurar a referência FK, especifique o recurso FHIR para o qual você está mapeando a entidade de destino.

Exemplo 9: Mapear codeable concept

O procedimento a seguir é um exemplo de mapeamento de um atributo do Dataverse do tipo codeable concept.

  1. Em Configuração do Mapa, selecione Mapas de Entidades.

  2. Em Nome da entidade, selecione msemr_observation.

  3. Nos mapas de atributos relacionados, selecione + Novo Mapa de Atributos do Serviço de Atualização.

  4. Para Nome do Atributo, selecione Código de Denominador de Proporção (msemr_valueratiodenominatorcode).

    O Tipo de Atributo deste atributo é Pesquisa. É uma operação de pesquisa à entidade msemr_codeableconcept, que é um tipo de entidade especial no modelo de dados. Esse tipo de entidade é tratado de forma diferente de outras entidades.

  5. Para Tipo de Ação, o único tipo de ação é Codeable Concept.

  6. Adicione o valor Mapa do Elemento FHIR para o atributo.

  7. Para Tipo de Codeable Concept, selecione Código de Unidade de Quantidade.

    Um tipo de codeable concept é semelhante a um grande conjunto de opções e cada valor no conjunto de opções tem um tipo. Ele permite que você agrupe e filtre conjuntos de opções. Observe que o campo Valor do Tipo de Codeable Concept é preenchido automaticamente quando você seleciona Código de Unidade de Quantidade como o tipo de codeable concept. Você não precisou saber o valor do conjunto de opções para Código da Unidade de Quantidade.

    Uma captura de tela mostrando um exemplo de tipo de codeable concept.

  8. Selecione Salvar.

Agora, quando o Dataverse cria uma observação, ele precisa definir o codeable concept. O Dataverse encontra esse codeable concept pesquisando nas tabelas todos os codeable concepts com o tipo Código de Unidade de Quantidade que corresponde ao valor do código. Um codeable concept é composto de um texto, um código e o tipo. O FHIR conhece o código e o texto, mas não sabe de qual tipo de codeable concept extrair.

Limitações atuais

  • Uma posição de criação/inserção de matriz dinâmica não pode ser absoluta. A seleção é dinâmica usando JSONPath.
  • Os dados do valor devem estar formatados corretamente no JSON para campos como as cadeias de caracteres UTF-8 do atributo de destino, as datas UTC JSON e os boolianos.

Ferramentas

Você pode usar várias ferramentas para testar as cadeias de caracteres do JSONPath, incluindo os seguintes aplicativos:

Para obter mais informações sobre como usar essas ferramentas, acesse Orientações sobre JSONPath.