Visão geral do mapeamento de destino FHIR do serviço de tecnologia médica

Este artigo fornece uma visão geral do mapeamento de destino FHIR® do serviço de tecnologia médica.

O serviço de tecnologia médica requer dois tipos de mapeamentos JSON que são adicionados ao seu serviço de tecnologia médica por meio do portal do Azure ou da API do Azure Resource Manager. O mapeamento do dispositivo é o primeiro tipo e controla os valores de mapeamento nos dados do dispositivo enviados ao serviço de tecnologia médica para um objeto de dados interno normalizado. O mapeamento de dispositivo contém expressões que o serviço de tecnologia médica usa para extrair tipos, identificadores de dispositivo, data e hora da medição e valores de medição. O mapeamento de destino FHIR é o segundo tipo e controla como os dados normalizados são mapeados para Observações FHIR.

Observação

Os mapeamentos de destino do dispositivo e do FHIR são reavaliados sempre que uma mensagem de dispositivo é processada. Todas as atualizações de qualquer mapeamento entrarão em vigor imediatamente.

Noções básicas de mapeamento de destino FHIR

O mapeamento de destino FHIR controla como os dados normalizados extraídos de uma mensagem de dispositivo são mapeados em uma Observação FHIR.

  • Uma observação deve ser criada para um período pontual ou durante um período de uma hora?
  • Quais códigos devem ser adicionados à observação?
  • O valor deve ser representado como SampledData ou um Quantity?

Esses tipos de dados são todas as opções dos controles de configuração de mapeamento de destino FHIR.

Uma vez que os dados do dispositivo são transformados em um modelo de dados normalizado, os dados normalizados são coletados para transformação em uma Observação FHIR. Se o tipo de observação for SampledData, os dados serão agrupados de acordo com o identificador do dispositivo, o tipo de medição e o período de tempo (o período de tempo pode ser de 1 hora ou 24 horas). A saída desse agrupamento é enviada para conversão em um único Observação FHIR que representa o período de tempo para esse tipo de dados. Para outros tipos de Observação (Quantity, os dados CodeableConcept e String) não são agrupados, mas cada medida é transformada em uma única Observação representando um ponto no tempo.

Dica

Para obter mais informações sobre como o serviço de tecnologia médica processa dados de mensagens de dispositivo em Observações FHIR para persistência no serviço FHIR, consulte Visão geral dos estágios de processamento de mensagens de dispositivo de serviço de tecnologia médica.

Este diagrama fornece uma ilustração do que acontece durante o estágio de transformação dentro do serviço de tecnologia médica.

Diagram example of the MedTech service device message transformation stage.

Observação

A Observação FHIR neste diagrama não é o recurso completo. Veja Exemplo nesta visão geral para toda a Observação FHIR.

CollectionFhir

CollectionFhir é o tipo de modelo raiz usado pelo mapeamento de destino FHIR do serviço de tecnologia médica. CollectionFhir é uma lista de todos os modelos que são usados durante o estágio de transformação. Você pode definir um ou mais modelos dentro do CollectionFhir, com cada mensagem normalizada avaliada em relação a todos os modelos.

Diagram showing MedTech service FHIR destination mapping template and code architecture.

CodeValueFhir

CodeValueFhir é atualmente o único modelo com suporte no mapeamento de destino FHIR. Ele permite que você defina códigos, o período efetivo e o valor da observação. Há suporte para vários tipos de valor: SampledData, CodeableConcept, Quantity e String. Junto com esses valores configuráveis, o identificador do recurso de observação e o vínculo com os recursos apropriados do dispositivo e do paciente são tratados automaticamente.

Importante

O tipo Resolução especifica como o serviço de tecnologia médica associa os dados do dispositivo aos recursos do dispositivo e aos recursos do paciente. O serviço de tecnologia médica lê os recursos de dispositivo e paciente do serviço FHIR usando identificadores de dispositivo e identificadores de paciente. Se um identificador de encontro for especificado e extraído da carga de dados do dispositivo, ele será vinculado à observação se existir um encontro no serviço FHIR com esse identificador. Se o identificador de encontro for normalizado com êxito, mas nenhum encontro FHIR existir com esse identificador de encontro, uma exceção FhirResourceNotFound será lançada. Para obter mais informações sobre como configurar o serviço de tecnologia médica Tipo de resolução, consulte Configurar a guia destino.

Element Descrição Necessário
typeName O tipo de medida ao qual este modelo deve se associar. Nota: deve haver pelo menos um modelo de mapeamento de dispositivo que tenha esse mesmo typeName. O elemento typeName é usado para vincular um modelo de mapeamento de destino FHIR a um ou mais modelos de mapeamento de dispositivo. Os modelos de mapeamento de dispositivo com o mesmo elemento typeName geram dados normalizados que são avaliados com um modelo de mapeamento de destino FHIR que tem o mesmo typeName. Verdadeiro
periodInterval O período de tempo que a observação criada deve representar. Os valores com suporte são 0 (uma instância), 60 (uma hora), 1440 (um dia). True quando o tipo de observação é SampledData; Ignored para outros tipos de Observação.
category Qualquer número de CodeableConcepts para classificar o tipo de observação criado. Falso
codes Um ou mais Codings a serem aplicados à observação criada. Verdadeiro
codes[].code O código de uma Codificação no elemento codes. Verdadeiro
codes[].system O sistema para um Codificação no elemento codes. Falso
codes[].display A exibição de um Codificação no elemento codes. Falso
value O valor a ser extraído e representado na observação. Para obter mais informações sobre os elementos que o elemento value contém, consulte Tipos de valor. True quando o elemento components não é usado (a menos que o tipo Observation seja CodebleConcept, caso em que esse elemento não é apenas "não obrigatório", mas também ignorado).
components Um ou mais componentes a serem criados na observação. True quando o elemento value não é usado.
components[].codes Um ou mais Codings a serem aplicados ao componente. Falso
components[].value O valor a ser extraído e representado no componente. Para obter mais informações sobre os elementos que o elemento components[].value contém, consulte Tipos de valor. True quando o elemento components é usado (a menos que o tipo Observation seja CodebleConcept, caso em que esse elemento não é apenas 'não obrigatório', mas também ignorado).

Tipos de valor

Todos os value elementos dos modelos CodeValueFhir contêm estes elementos:

Element Descrição Necessário
valueType Tipo do valor. Esse valor seria "SampledData", "Quantity", "CodeableConcept" ou "String", dependendo do tipo de valor. Verdadeiro
valueName Nome do valor. True a menos que valueType seja CodeableConcept.

Esses tipos de valor são suportados no mapeamento de destino FHIR do serviço de tecnologia médica:

SampledData

Representa o tipo de dados do FHIR do SampledData. As medidas de observação são gravadas em um fluxo de valor, começando em um período pontual e incrementando para frente usando o período definido. Se nenhum valor estiver presente, um E será gravado no fluxo de dados. Se o ponto for tal que dois ou mais valores ocupem a mesma posição no fluxo de dados, o valor mais recente será usado. A mesma lógica é aplicada quando uma observação usando o SampledData é atualizada. Para um modelo CodeValueFhir com o tipo de valor SampledData, o elemento value do modelo contém os seguintes elementos:

Element Descrição Necessário
defaultPeriod O período padrão em milissegundos a ser usado. Verdadeiro
unidade A unidade a ser definida na origem do SampledData. Verdadeiro

Quantidade

Representa o tipo de dados do FHIR do Quantity. Esse tipo cria uma única observação, point-in-time. Se chegar um novo valor que contenha o mesmo identificador de dispositivo, tipo de medida e carimbo de data/hora, a observação anterior será atualizada para o novo valor. Para um modelo CodeValueFhir com o tipo de valor Quantidade, o elemento value do modelo contém os seguintes elementos:

Element Descrição Necessário
unidade Representação da unidade. Falso
code Forma codificada da unidade. Falso
system Sistema que define a forma de unidade codificada. Falso

CodeableConcept

Representa o tipo de dados do FHIR do CodeableConcept. O valor no modelo de dados normalizado não é usado e, em vez disso, quando esse tipo de dados é recebido, uma observação é criada com um código específico representando que uma observação foi registrada em um ponto específico no tempo. Para um modelo CodeValueFhir com o tipo de valor CodeableConcept, o elemento value do modelo contém os seguintes elementos:

Element Descrição Obrigatório
text Representação de texto sem formatação. Falso
codes Um ou mais Codings a serem aplicados à observação criada. Verdadeiro
codes[].code O código de uma Codificação no elemento codes. Verdadeiro
codes[].system O sistema para um Codificação no elemento codes. Falso
codes[].display A exibição de um Codificação no elemento codes. Falso

String

Representa a cadeia de caracteres do tipo de dados FHIR. Esse tipo cria uma única observação, point-in-time. Se chegar um novo valor que contenha o mesmo identificador de dispositivo, tipo de medida e carimbo de data/hora, a observação anterior será atualizada para o novo valor. Nenhum outro elemento é definido.

Exemplo

Dica

Você pode usar o serviço Depurador de mapeamento do MedTech para obter assistência na criação, atualização e solução de problemas do dispositivo de serviço de tecnologia médica e mapeamentos de destino FHIR. O depurador de mapeamento permite que você exiba e faça ajustes embutidos facilmente em tempo real, sem precisar sair do portal do Azure. O depurador de mapeamento também pode ser usado para carregar mensagens de dispositivo de teste para ver como elas ficarão depois de serem processadas em mensagens normalizadas e transformadas em observações FHIR.

Observação

Este exemplo e a mensagem normalizada são uma continuação de Visão geral do mapeamento de dispositivo de serviço de tecnologia médica.

Neste exemplo, estamos usando uma mensagem normalizada que captura dados heartRate:

[
  {
    "type": "heartrate",
    "occurrenceTimeUtc": "2023-03-13T22:46:01.875Z",
    "deviceId": "device01",
    "properties": [
      {
        "name": "hr",
        "value": "78"
      }
    ]
  }
]

Estamos usando este mapeamento de destino FHIR para o estágio de transformação:

{
  "templateType": "CollectionFhir",
  "template": [
    {
      "templateType": "CodeValueFhir",
      "template": {
        "codes": [
          {
            "code": "8867-4",
            "system": "http://loinc.org",
            "display": "Heart rate"
          }
        ],
        "typeName": "heartrate",
        "value": {
          "system": "http://unitsofmeasure.org",
          "code": "count/min",
          "unit": "count/min",
          "valueName": "hr",
          "valueType": "Quantity"
        }
      }
    }
  ]
}

A observação FHIR resultante ficará assim após o estágio de transformação:

[
  {
    "code": {
      "coding": [
        {
          "system": {
            "value": "http://loinc.org"
          },
          "code": {
            "value": "8867-4"
          },
          "display": {
            "value": "Heart rate"
          }
        }
      ],
      "text": {
        "value": "heartrate"
      }
    },
    "effective": {
      "start": {
        "value": "2023-03-13T22:46:01.8750000Z"
      },
      "end": {
        "value": "2023-03-13T22:46:01.8750000Z"
      }
    },
    "issued": {
      "value": "2023-04-05T21:02:59.1650841+00:00"
    },
    "value": {
      "value": {
        "value": 78
      },
      "unit": {
        "value": "count/min"
      },
      "system": {
        "value": "http://unitsofmeasure.org"
      },
      "code": {
        "value": "count/min"
      }
    }
  }
]

Dica

Para obter assistência para corrigir erros comuns de implantação do serviço de tecnologia médica, consulte Solucionar problemas de erros de implantação do serviço de tecnologia médica.

Para obter assistência na correção de erros de serviço de tecnologia médica, consulte Solucionar problemas de erros usando os logs de serviço de tecnologia médica.

Próximas etapas

Visão geral do mapeamento de dispositivos de serviço de tecnologia médica

Como usar modelos CalculatedContent com o mapeamento de dispositivo de serviço de tecnologia médica

Como usar modelos IotJsonPathContent com o mapeamento de dispositivo de serviço de tecnologia médica

Como usar funções personalizadas com o mapeamento de dispositivo de serviço de tecnologia médica

Visão geral dos exemplos de mapeamentos baseados em cenários do serviço de tecnologia médica

Observação

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.