Mapping di Data Integration Toolkit: esempi e casi d'uso

Data Integration Toolkit fornisce un'ampia raccolta di mapping predefiniti creati per essere conformi alla specifica HL7 FHIR.

I mapping di entità predefiniti e i mapping attributi vengono distribuiti come record Dataverse e sono altamente configurabili per soddisfare i requisiti della soluzione. Questo articolo include alcuni esempi associati all'utilizzo di questi mapping.

Per informazioni su come configurare questi mapping, consulta Configurare mapping di entità e Configurare mapping attributi. Le Dataverse Healthcare API, il processo di writeback e le tabelle dei dati sanitari virtuali utilizzano gli stessi mapping configurati.

Esempi di mapping di entità

Questa sezione elenca alcuni esempi di utilizzo di mapping di entità.

Esempio 1: incontro con il paziente

Quando si aggiunge un incontro con un paziente alla cartella clinica elettronica (EHR) di quest'ultimo, il mapping di entità fornisce le regole di trasformazione di cui le Dataverse Healthcare API hanno bisogno per trasformare i dati FHIR in record Dataverse.

  1. La mappa di entità msemr_encounter ↔ Incontro connette la risorsa FHIR di Azure Incontro all'entità Dataverse msemr_encounter.

    Screenshot che mostra l'esempio del mapping di entità per l'incontro del paziente.

  2. Le modifiche ai dati nella risorsa Incontro nel sistema di dati sanitari del cliente attivano un nuovo messaggio per le Dataverse Healthcare API. Ad esempio, se l'app per la logica Azure delle Dataverse Healthcare API viene distribuita utilizzando Modello pipeline dati assistenza sanitaria, una nuova aggregazione FHIR viene pubblicata nell'archiviazione BLOB. L'app per la logica quindi elabora questa aggregazione e la pubblica in Dataverse tramite le Dataverse Healthcare API.

  3. Dataverse Healthcare API utilizzano il mapping di entità msemr_encounter ↔ Incontro. I relativei mapping degli attributi trasformano le risorse FHIR in entrata nei corrispondenti record rappresentativi in Dataverse.

Esempio 2: aggiornamento del paziente in Dataverse e writeback

Questo esempio prende in considerazione uno scenario in cui aggiorni un record paziente in Dataverse e vuoi che tale modifica venga riscritta nel sistema EMR (cartelle cliniche elettroniche) tramite Servizi per i dati sanitari di Azure.

  1. La mappa di entità Data Integration Toolkit contatto ↔ Paziente mette in relazione la risorsa FHIR di Azure Paziente con l'entità Dataverse Contatto.

    Screenshot che mostra l'esempio del mapping di entità per l'aggiornamento del paziente in Dataverse.

  2. Una modifica dei dati in un record del paziente in Dataverse attiva il plug-in di writeback Dataverse.

  3. Questo plug-in Dataverse invia un messaggio relativo al record modificato all'endpoint FHIR in uscita configurato nella sezione writeback delle impostazioni di integrazione.

  4. In questo esempio, l'endpoint FHIR è configurato per la pubblicazione diretta nei Servizi per i dati sanitari di Azure.

  5. Puoi inoltre configurare un'applicazione di inoltro, ad esempio un'app per la logica di Azure o una funzione di Azure, in grado di pubblicare il messaggio nel servizio CCE che nei Servizi per i dati sanitari di Azure.

    Nota

    Si consiglia di mantenere sincronizzati i dati del paziente, del medico, della clinica gestita e della clinica di riferimento con Microsoft Cloud for Healthcare.

Per ulteriori informazioni sulla configurazione del writeback, vedi Panoramica del writeback per le Dataverse Healthcare API.

Esempi di mapping attributi

Questa sezione include esempi per la configurazione di vari tipi di mapping attributi che potresti incontrare.

Esempio 1: campo esistente di stringa semplice

L'esempio seguente ottiene il valore cognome di un paziente da FHIR per inviarlo a Dataverse o aggiorna il valore dell'attributo lastname di Dataverse all'elemento family in FHIR.

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

Questo mapping presuppone che il valore name esista sempre e che può essere individuato tramite il JSONPath definito nella risorsa FHIR.

Esempio 2: campo esistente o inesistente

L'esempio seguente ottiene o aggiorna il campo city di address[0] se esiste. Se questo era un aggiornamento Dataverse e address[0] non esisteva in FHIR, crea un address[0] padre e imposta il valore city di Dataverse. Crea valori segnaposto o predefiniti per altri attributi da Dataverse che potrebbero mancare in FHIR.

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

Nota

Per i valori stringa, il valore impostato è la stringa letterale definita nella matrice degli attributi, a meno che non sia una delle sequenze di caratteri speciali. Queste sequenze di caratteri speciali vengono sostituite con i seguenti valori:

  • % - Copia il valore dell'attributo Dataverse.
  • %% - Copia il tipo di risorsa di riferimento FHIR (esempio, Paziente).
  • %%% - Copia il tipo e l'ID risorsa della risorsa di riferimento FHIR (esempio, Paziente/1234).

Esempio 3: nome del paziente

Applica le regole della sezione precedente e usa il seguente esempio per aggiornare il nome del paziente:

{"s": "$.name[?(@use=='official')].given[0]", "c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]} }
  • "s" = Estrai il given name del paziente FHIR da caricare in Dataverse
  • "c" = Crea un given name del paziente quando non esiste in FHIR
  • "p" = Oggetto padre della voce da creare
  • "a" = Matrice di parametri da utilizzare durante la creazione di "c"

Nota

Le parentesi {} contengono l'espressione, mentre le virgole "," separano i segmenti dell'espressione. Tuttavia, le parentesi della matrice [] indicano che l'espressione contiene due o più segmenti completi.

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

Esempio 4: codeable concept

L'abbinamento di concetti codificabili FHIR da FHIR a Dataverse è uguale a quello della corrispondenza degli elementi di stringa JSON. L'unica differenza è che è necessario un livello extra per ottenere i dettagli.

  1. L'URL dell'estensione è http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Vogliamo accedere all'elemento valueCodeableConcept all'interno di questa voce di estensione.
  3. Vogliamo la prima voce nella matrice di codifica.
  4. Vogliamo mappare il display per mostrare le informazioni in FHIR che sono collegate a un sistema di codifica.

Risorsa FHIR

Screenshot che mostra i codeable concept FHIR.

JSONPath

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

Esempio 5: informazioni sul testo del mapping

  1. L'URL dell'estensione è http://hl7.org/fhir/StructureDefinition/patient-religion
  2. Vogliamo accedere all'elemento valueCodeableConcept all'interno di questa voce di estensione.
  3. Vogliamo mappare il testo per mostrare le informazioni fornite a FHIR da Epic.

Risorsa FHIR

Screenshot che mostra i codeable concept di FHIR per l'esempio di testo.

JSONPath

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

Esempio 6: valore mappato

Per un altro esempio, puoi creare un mapping attributi per il sesso. In Dataverse, il nome dell'attributo è gendercode.

  1. Nel mapping di entità per il contatto, seleziona + Nuovo mapping attributi servizio di aggiornamento.

  2. Poiché sesso è un elenco di selezione, il Tipo di azione è Valore mappato.

    Sesso in Dataverse è un elenco di selezione. Poiché è anche un elenco di selezione in FHIR, vengono mappati i valori dell'elenco di selezione FHIR ai valori dell'elenco di selezione Dataverse.

  3. Seleziona Mapping elementi FHIR per aggiungere il mapping di elementi FHIR per sesso. In questo esempio è una stringa di ricerca JSON che ti consente di accedere all'elemento FHIR Sesso.

  4. Seleziona Salva.

    In background, il sistema determina che il sesso è un set di opzioni. Devi mappare molteplici valori per questo set di opzioni.

  5. In Mapping valori, immetti il valore FHIR di Azure da mappare per il set di opzioni. Ad esempio, immetti maschio per l'opzione Maschio (valore Dataverse = 1) e immetti femmina per l'opzione Femmina (valore Dataverse = 2).

    Seleziona Salva.

    Screenshot che mostra i mapping di valori.

Esempio 7: impostare il valore predefinito

In questo esempio, imposta un valore predefinito per i mapping di valori.

  1. Nel mapping di entità per il contatto, seleziona + Nuovo mapping attributi servizio di aggiornamento.

  2. Per Nome attributo, seleziona Tipo di contatto (msemr_contacttype).

    Tipo di contatto in Dataverse è un set di opzioni. Poiché stai inserendo pazienti, desideri sempre che il tipo di contatto sia l'impostazione predefinita.

  3. Per Tipo di azione, seleziona Imposta valore predefinito.

    Non è necessaria un mapping di elementi FHIR perché stai solo impostando il valore predefinito. In questo caso, FHIR non dispone del concetto di tipo contatto, ma Dataverse ne ha bisogno.

  4. Seleziona Salva.

  5. In Mapping valori, seleziona la prima riga e seleziona Modifica.

  6. In Mapping valori attributo, per il campo Etichetta OptionSet, seleziona Paziente.

    Il campo Valore mostra il valore predefinito per tipo di contatto. La Dataverse Healthcare API popola automaticamente il valore Dataverse.

    Screenshot che mostra un esempio per l'impostazione del valore predefinito per un mapping attributi.

  7. Selezionare Salva e chiudi.

    In Mappe valori, il valore predefinito Dataverse è impostato. Ogni volta che la Dataverse Healthcare API entra e crea un paziente, imposta il campo Tipo di contatto su Paziente.

Esempio 8: ricerca

I passaggi seguenti forniscono un esempio di mapping di un attributo Dataverse di tipo ricerca.

  1. Nel mapping di entità per il contatto, seleziona + Nuovo mapping attributi servizio di aggiornamento.

  2. Per Nome attributo, seleziona Operatore principale (msemr_generalpractitioner).

    Il Tipo di attributo dell'attributo Operatore principale è Ricerca (un'operazione di ricerca per l'entità Contatto).

  3. Per Tipo di azione, l'unico tipo di azione è Riferimento chiave esterna (riferimento di chiave esterna). Devi indicare alla Dataverse Healthcare API come impostare questa ricerca.

  4. Aggiungi il valore Mapping elementi FHIR per l'operatore principale.

    Screenshot che mostra il valore del mapping dell'elemento FHIR.

  5. Per Riferimento risorse FHIR, seleziona Operatore.

    In Dataverse, l'entità di riferimento per l'operatore principale è Contatto. Il riferimento risorse FHIR è Operatore.

  6. Seleziona Salva.

Se un attributo Dataverse è di tipo ricerca, puoi solo creare un mapping che sia un riferimento di chiave esterna. Per configurare il riferimento FK, specifica la risorsa FHIR a cui stai mappando l'entità di destinazione.

Esempio 9: mappare codeable concept

La seguente procedura è un esempio di mapping di un attributo Dataverse di tipo codeable concept.

  1. In Configurazione mapping, seleziona Mapping di entità.

  2. Per Nome entità, seleziona msemr_observation.

  3. In Mapping attributi correlati seleziona + Nuovo mapping attributi servizio di aggiornamento.

  4. Per Nome attributo, seleziona Codice denominatore rapporto (msemr_valueratiodenominatorcode).

    Il Tipo di questo attributo è Ricerca. È un'operazione di ricerca per l'entità msemr_codeableconcept che è un tipo di entità speciale nel modello di dati. Questo tipo di entità viene gestito in modo diverso rispetto alle altre entità.

  5. Per Tipo di azione, l'unico tipo di azione è Codeable concept.

  6. Aggiungi il valore Mapping elementi FHIR per l'attributo.

  7. Per Tipo di Codeable Concept, seleziona Codice unità quantità.

    Un tipo codeable concept è simile a un grande set di opzioni e ogni valore in set di opzioni ha un tipo. Ti consente di raggruppare e filtrare i set di opzioni. Nota che il campo Valore tipo di codeable concept viene riempito completamente quando selezioni Codice unità quantità come tipo di codeable concept. Non è necessario conoscere il valore del set di opzioni per il codice unità quantità.

    Screenshot che mostra un elemento di tipo di codeable concept.

  8. Seleziona Salva.

A questo punto, quando Dataverse crea un'osservazione, è necessario impostare codeable concept. Dataverse trova quel concetto codificabile cercando nelle tabelle tutti i concetti codificabili con il tipo Codice unità quantità che corrisponde al valore del codice. Un codeable concept è costituito da un testo, un codice e il tipo. FHIR conosce il codice e conosce il testo, ma non sa da quale tipo di codeable concept eseguire il pull.

Limitazioni correnti

  • Nessuna posizione di creazione o inserimento di matrice dinamica non può essere assoluto. La selezione è dinamica utilizzando il percorso JSON.
  • I dati valore devono essere formattati correttamente in JSON per i campi come stringhe UTF-8, date JSON UTC e valori booleani dell'attributo di destinazione.

Strumenti

Puoi utilizzare più strumenti per testare le stringhe di percorso JSONPath, inclusi le seguenti applicazioni:

Per ulteriori informazioni sull'utilizzo di questi strumenti, vai a Guida a JSONPath.