Panoramica del mapping di destinazione FHIR del servizio MedTech

Questo articolo offre una panoramica del mapping di destinazione FHIR® del servizio MedTech.

Il servizio MedTech richiede due tipi di mapping JSON aggiunti al servizio MedTech tramite l'API portale di Azure o Azure Resource Manager. Il mapping del dispositivo è il primo tipo e controlla i valori di mapping nei dati del dispositivo inviati al servizio MedTech a un oggetto dati interno normalizzato. Il mapping del dispositivo contiene espressioni usate dal servizio MedTech per estrarre tipi, identificatori del dispositivo, data di misurazione e valori di misura. Il mapping di destinazione FHIR è il secondo tipo e controlla la modalità di mapping dei dati normalizzati alle osservazioni FHIR.

Nota

I mapping di destinazione del dispositivo e FHIR vengono rivalutati ogni volta che viene elaborato un messaggio del dispositivo. Tutti gli aggiornamenti di entrambi i mapping avranno effetto immediatamente.

Nozioni di base sul mapping di destinazione FHIR

Il mapping di destinazione FHIR controlla la modalità di mapping dei dati normalizzati estratti da un messaggio del dispositivo in un'osservazione FHIR.

  • È necessario creare un'osservazione per un punto nel tempo o in un periodo di un'ora?
  • Quali codici devono essere aggiunti all'osservazione?
  • Il valore deve essere rappresentato come SampledData o come Quantity?

Questi tipi di dati sono tutte le opzioni dei controlli di configurazione del mapping di destinazione FHIR.

Una volta trasformati i dati del dispositivo in un modello di dati normalizzato, i dati normalizzati vengono raccolti per la trasformazione in un'osservazione FHIR. Se il tipo di osservazione è SampledData, i dati vengono raggruppati in base all'identificatore del dispositivo, al tipo di misura e al periodo di tempo (il periodo di tempo può essere di 1 ora o 24 ore). L'output di questo raggruppamento viene inviato per la conversione in una singola osservazione FHIR che rappresenta il periodo di tempo per tale tipo di dati. Per altri tipi di osservazione (Quantity, CodeableConcept e String) i dati non vengono raggruppati, ma ogni misura viene invece trasformata in un'unica osservazione che rappresenta un punto nel tempo.

Suggerimento

Per altre informazioni su come il servizio MedTech elabora i dati dei messaggi del dispositivo nelle osservazioni FHIR per la persistenza nel servizio FHIR, vedere Panoramica delle fasi di elaborazione dei messaggi del dispositivo del servizio MedTech.

Questo diagramma fornisce un'illustrazione di ciò che accade durante la fase di trasformazione all'interno del servizio MedTech.

Diagram example of the MedTech service device message transformation stage.

Nota

L'osservazione FHIR in questo diagramma non è la risorsa completa. Vedere Esempio in questa panoramica per l'intera osservazione FHIR.

CollectionFhir

CollectionFhir è il tipo di modello radice usato dal mapping di destinazione FHIR del servizio MedTech. CollectionFhir è un elenco di tutti i modelli usati durante la fase di trasformazione. È possibile definire uno o più modelli all'interno di CollectionFhir, con ogni messaggio normalizzato valutato rispetto a tutti i modelli.

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

CodeValueFhir

CodeValueFhir è attualmente l'unico modello supportato nel mapping di destinazione FHIR. Consente di definire codici, il periodo effettivo e il valore dell'osservazione. Sono supportati più tipi di valore: SampledData, CodeableConcept, Quantity e String. Insieme a questi valori configurabili, l'identificatore per la risorsa Osservazione e il collegamento alle risorse Device e Patient appropriate vengono gestiti automaticamente.

Importante

Il tipo di risoluzione specifica il modo in cui il servizio MedTech associa i dati del dispositivo alle risorse dispositivo e alle risorse paziente. Il servizio MedTech legge le risorse dispositivo e paziente dal servizio FHIR usando identificatori di dispositivo e identificatori dei pazienti. Se un identificatore di rilevamento viene specificato ed estratto dal payload dei dati del dispositivo, viene collegato all'osservazione se esiste un incontro nel servizio FHIR con tale identificatore. Se l'identificatore di rilevamento viene normalizzato correttamente, ma non esiste alcun incontro FHIR con tale identificatore, viene generata un'eccezione FhirResourceNotFound. Per altre informazioni sulla configurazione del tipo di risoluzione del servizio MedTech, vedere Configurare la scheda Destinazione.

Elemento Descrizione Richiesto
typeName Tipo di misura a cui deve essere associato questo modello. Nota: deve essere presente almeno un modello di mapping del dispositivo con lo stesso typeName. L'elemento typeName viene usato per collegare un modello di mapping di destinazione FHIR a uno o più modelli di mapping dei dispositivi. I modelli di mapping dei dispositivi con lo stesso typeName elemento generano dati normalizzati valutati con un modello di mapping di destinazione FHIR con lo stesso typeNameoggetto . Vero
periodInterval Periodo di tempo in cui l'osservazione creata deve rappresentare. I valori supportati sono 0 (un'istanza), 60 (un'ora), 1440 (un giorno). True quando il tipo di osservazione è SampledData; Ignorato per altri tipi di osservazione.
category Qualsiasi numero di CodeableConcepts per classificare il tipo di osservazione creato. False
Codici Uno o più codici da applicare all'osservazione creata. Vero
codes[].code Codice per un oggetto Coding nell'elemento codes . Vero
codes[].system Sistema per un oggetto Coding nell'elemento codes . False
codes[].display Visualizzazione di un oggetto Coding nell'elemento codes . False
value Valore da estrarre e rappresentare nell'osservazione. Per altre informazioni sugli elementi contenuti nell'elemento value , vedere Tipi valore. True quando l'elemento components non viene usato (a meno che il tipo di osservazione non sia CodebleConcept, nel qual caso questo elemento non è solo 'obbligatorio' ma anche ignorato).
Componenti Uno o più componenti da creare sull'osservazione. True quando l'elemento value non viene invece usato.
components[].codes Uno o più codici da applicare al componente. False
components[].value Valore da estrarre e rappresentare nel componente. Per altre informazioni sugli elementi contenuti nell'elemento components[].value , vedere Tipi valore. True quando viene utilizzato l'elemento components (a meno che il tipo di osservazione non sia CodebleConcept, nel qual caso questo elemento non è solo 'obbligatorio' ma anche ignorato).

Tipi di valori

L'elemento di value tutti i modelli CodeValueFhir contiene questi elementi:

Elemento Descrizione Richiesto
valueType Tipo del valore. Questo valore sarà "SampledData", "Quantity", "CodeableConcept" o "String" a seconda del tipo di valore. Vero
valueName Nome del valore. True a meno che valueType non sia CodeableConcept.

Questi tipi di valore sono supportati nel mapping di destinazione FHIR del servizio MedTech:

SampledData

Rappresenta il tipo di dati SampledData FHIR. Le misurazioni di osservazione vengono scritte in un flusso di valori a partire da un punto nel tempo e incrementando in avanti usando il periodo definito. Se non è presente alcun valore, un E oggetto viene scritto nel flusso di dati. Se il punto è tale che due o più valori occupano la stessa posizione nel flusso di dati, viene usato il valore più recente. La stessa logica viene applicata quando viene aggiornata un'osservazione che usa SampledData. Per un modello CodeValueFhir con il tipo di valore SampledData, l'elemento del value modello contiene gli elementi seguenti:

Elemento Descrizione Richiesto
defaultPeriod Periodo predefinito in millisecondi da usare. Vero
unitàà Unità da impostare sull'origine di SampledData. Vero

Quantity

Rappresenta il tipo di dati Quantity FHIR. Questo tipo crea un singolo, punto nel tempo, Osservazione. Se arriva un nuovo valore che contiene lo stesso identificatore del dispositivo, il tipo di misura e il timestamp, l'osservazione precedente viene aggiornata al nuovo valore. Per un modello CodeValueFhir con il tipo di valore Quantity, l'elemento del value modello contiene gli elementi seguenti:

Elemento Descrizione Richiesto
unitàà Rappresentazione unità. False
code Forma codificata dell'unità. False
system Sistema che definisce il modulo dell'unità codificata. False

CodeableConcept

Rappresenta il tipo di dati CodeableConcept FHIR. Il valore nel modello di dati normalizzato non viene usato e, invece, quando viene ricevuto questo tipo di dati, viene creata un'osservazione con un codice specifico che rappresenta che un'osservazione è stata registrata in un momento specifico. Per un modello CodeValueFhir con il tipo di valore CodeableConcept, l'elemento del value modello contiene gli elementi seguenti:

Elemento Descrizione Richiesto
text Rappresentazione in testo normale. False
Codici Uno o più codici da applicare all'osservazione creata. Vero
codes[].code Codice per un oggetto Coding nell'elemento codes . Vero
codes[].system Sistema per un oggetto Coding nell'elemento codes . False
codes[].display Visualizzazione di un oggetto Coding nell'elemento codes . False

Stringa

Rappresenta il tipo di dati String FHIR. Questo tipo crea un singolo, punto nel tempo, Osservazione. Se arriva un nuovo valore che contiene lo stesso identificatore del dispositivo, il tipo di misura e il timestamp, l'osservazione precedente viene aggiornata al nuovo valore. Non sono definiti altri elementi.

Esempio

Suggerimento

È possibile usare il debugger di mapping del servizio MedTech per assistenza per la creazione, l'aggiornamento e la risoluzione dei problemi relativi ai mapping di destinazione del servizio MedTech e FHIR. Il debugger mapping consente di visualizzare e apportare facilmente modifiche inline in tempo reale, senza dover mai lasciare il portale di Azure. Il debugger mapping può essere usato anche per caricare i messaggi del dispositivo di test per vedere come verranno elaborati in messaggi normalizzati e trasformati in osservazioni FHIR.

Nota

Questo esempio e messaggio normalizzato è una continuazione di Panoramica del mapping dei dispositivi del servizio MedTech.

In questo esempio viene usato un messaggio normalizzato che acquisisce heartRate i dati:

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

Questo mapping di destinazione FHIR viene usato per la fase di trasformazione:

{
  "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"
        }
      }
    }
  ]
}

L'osservazione FHIR risultante sarà simile alla seguente dopo la fase di trasformazione:

[
  {
    "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"
      }
    }
  }
]

Suggerimento

Per assistenza nella correzione degli errori comuni di distribuzione del servizio MedTech, vedere Risolvere gli errori di distribuzione del servizio MedTech.

Per assistenza per la correzione degli errori del servizio MedTech, vedere Risolvere gli errori usando i log del servizio MedTech.

Passaggi successivi

Panoramica del mapping dei dispositivi del servizio MedTech

Come usare i modelli CalculatedContent con il mapping dei dispositivi del servizio MedTech

Come usare i modelli IotJsonPathContent con il mapping dei dispositivi del servizio MedTech

Come usare funzioni personalizzate con il mapping dei dispositivi del servizio MedTech

Panoramica degli esempi di mapping basati su scenari del servizio MedTech

Nota

FHIR® è un marchio registrato di HL7 e viene usato con l'autorizzazione di HL7.