Verktygsmappningar för dataintegrering: Exempel och använda ärenden
Verktygslåda för dataintegrering ger en omfattande samling standardmappningar för att överensstämma med HL7 FHIR-specifikationen.
Standardinställda entitetsmappningar och attributmappningar distribueras Dataverse-poster och är mycket konfigurerbara så att de uppfyller lösningskraven. Den här artikeln innehåller några exempel som beskriver hur du använder dessa mappningar.
För information om hur du konfigurerar dessa kartor, gå igenom Konfigurera entitetsmappningar och Konfigurera attributmappningar. Dataverse Healthcare APIs, återskrivningsprocessen och de virtuella hälsodatatabellerna använder samma konfigurerade kartor.
Exempel på entitetsmappning
Det här avsnittet innehåller några exempel på hur du använder entitetsmappningar.
Exempel 1: Patientkontakt
När du lägger till ett patientmöte i en patients EHR (elektroniska hälsojournaler), ger enhetskartan de omvandlingsregler som Dataverse Healthcare APIs måste omvandla FHIR till Dataverse-poster.
Entitetsmappningen msemr_encounter ↔ kontakttillfälle ansluter Azure FHIR-resurs kontakttillfälle till Dataverse entiteten msemr_encounter.
Dataändringar i resursen Möte i kundens journalsystem utlöser ett nytt meddelande till Dataverse Healthcare APIs. Om till exempel Dataverse healthcare API Azure Logic App distribueras med Mall för vårddatas pipeline, publiceras en nu FHIR-paketet till blobblagring. Logikappen kommer sedan att bearbeta detta paket och publicera det i Dataverse via Dataverse Healthcare APIs.
Dataverse Healthcare APIs använder entitetsmappningen msemr_encounter ↔ Kontakttillfälle. Med relaterade attributmappningar omvandlas de inkommande FHIR-resurserna till deras representativa poster i Dataverse.
Exempel 2: Patientuppdatering i Dataverse och tillbakaskrivning
Det här exemplet tar hänsyn till ett scenario där du uppdaterar en patientjournal i Dataverse och vill att ändringen ska skrivas tillbaka till ditt EMR-system (elektroniska journaler) via Azure Health Data Services.
Entitetsmappningen för verktygslådan för dataintegrering, kontakta ↔ Patient, relaterar Azure FHIR-resuren Patient till Dataverse-entiteten Kontakt.
En dataändring i en patientpost i utlöser Dataverse ett Dataverse-plugin-program för tillbakaskrivning.
Det här Dataverse plugin-programmet skickar ett meddelande om den ändrade posten till det slutpunkt som konfigurerats i tillbakaskrivningsavsnittet av integrationsinställningarna.
I det här exemplet är FHIR-slutpunkt konfigurerad att publicera direkt till Azures tjänster för hälsodata.
Du kan också konfigurera ett vidarebefordransprogram som en Azure Logic-appeller en Azure-funktion som kan publicera meddelandet till både din EMR-tjänst och Azure Health Data Services.
Kommentar
Vi rekommenderar att du behåller dina patientdata, samt hanterade kliniska data samt refererade kliniska data synkroniserade med Microsoft Cloud for Healthcare.
Mer information om hur du konfigurerar tillbakaskrivning finns i Översikt över tillbakaskrivningar för Dataverse Healthcare APIs.
Exempel på attributmappning
Det här avsnittet innehåller exempel på hur du konfigurerar olika typer av attributmappningar som kan uppstå.
Exempel 1: Enkel sträng befintligt fält
Följande exempel skulle få värdet patients efternamn från FHIR att skicka till Dataverse eller uppdatera lastname
attributvärdet från Dataverse till family
element i FHIR.
`{"s": "$.name[?(@.use=='usual')].family"}`
Den här mappningen förutsätter att värdet name
det alltid finns och kan lokaliseras via JSONPath som definieras på FHIR-resursen.
Exempel 2: Befintligt eller icke-existerande fält
Följande exempel skulle hämta eller uppdatera city
fältet för address[0]
om det finns. Om det här var en uppdatering från Dataverse och address[0]
inte fanns i FHIR, skapas en address[0]
överordnad och värdet city
anges från Dataverse. Det skapar också en platshållare eller standardvärden för andra attribut från Dataverse som saknas i FHIR.
{
"s": "$.address[0].city",
"c": {
"p": "address[0]",
"a": [
{
"line": ["x"]
},
{
"city": "%"
},
{
"state": "x"
},
{
"postalCode": "x"
},
{
"country": "x"
}
]
}
}
Kommentar
För strängvärden är värdeuppsättningen den literala sträng som definieras i attributmatrisen, såvida det inte är en av specialteckensekvenserna. Specialteckensekvenserna ersätts med följande värden:
- % – Kopiera värdet för Dataverse attribut.
- %% – Kopiera typen av FHIR-referensresurs (till exempel Patient).
- %%% – Kopiera typen och resurs-ID for FHIR-referensresursen (exempel,Patient/1234).
Exempel 3: Patientnamn
Genom att tillämpa reglerna i föregående avsnitt kan vi använda följande exempel för att uppdatera patientnamn.
{"s": "$.name[?(@use=='official')].given[0]", "c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]} }
- "s" = extrahera en FHIR-patients
given name
som ska läsas in i Dataverse - "c" = Skapa en patients
given name
när det inte finns i FHIR - "p" = överordnat objekt för posten som ska skapas
- "a" = matris med parametrar som ska användas när "c" skapas
Obs
Parenteserna {}
innehåller uttrycket, medan kommatecken ","
separerar uttryckssegmenten. Men matrisparenteserna []
indikerar att uttrycket innehåller två eller flera kompletta segment.
"s": "$.name[?(@use=='official')].given[0]"
"c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]
Exempel 4: Codeable concept
Att matcha FHIR-codeable concepts från FHIR till Dataverse är detsamma som att matcha JSON-strängelement. Den enda skillnaden är att det finns en extra nivå som behövs för att komma till detaljerna.
- URL:en för tillägget är
http://hl7.org/fhir/StructureDefinition/patient-religion
- Vi vill komma åt
valueCodeableConcept
elementet i den här förlängningsposten. - Vi vill ha den första posten i kodmatrisen.
- Vi vill mappa skärmen så att den information i FHIR som är kopplad till ett kodsystem visas.
FHIR-resurs
JSONPath
{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].display"}
Exempel 5: Mappa textinformation
- URL:en för tillägget är
http://hl7.org/fhir/StructureDefinition/patient-religion
- Vi vill komma åt
valueCodeableConcept
elementet i den här förlängningsposten. - Vi vill mappa texten för att visa informationen som ges till FHIR av Epic.
FHIR-resurs
JSONPath
{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].text"}
Exempel 6: Mappat värde
I ett annat exempel kan du skapa en attributmappning för kön. I Dataverse är attributnamnet könskod.
I entitetsmappningen för kontakt, välj + Ny attributmappning för uppdateringstjänst.
Eftersom kön är en plocklista är Åtgärdstyp lika med Mappat värde.
Kön i Dataverse är en plocklista. Eftersom det också är en plocklista i FHIR mappar du FHIR-plocklistevärden till Dataverse-plocklistvärden.
Välj FHIR-elementmappning för att lägga till FHIR-elementmappningen för kön. I detta exempel är det en JSON-söksträng som gör att du kommer till FHIR-elementet som kön.
Välj Spara.
I bakgrunden bestämmer systemet att en alternativuppsättning. Du måste mappa flera värden för denna alternativuppsättning.
Under Värdemappningar anger du Azure FHIR-värdet som ska mappas för alternativuppsättningen. Ange till exempel man för alternativet Man (Dataverse värdet = 1) och ange alternativet kvinna för Kvinna (Dataverse värde = 2).
Välj Spara.
Exempel 7: Ställ in standardvärde
I det här exemplet anger du ett standardvärde för värdemappningar.
I entitetsmappningen för kontakt, välj + Ny attributmappning för uppdateringstjänst.
För Attributnamn, välj Kontaktyp (msemr_contacttype).
Kontakttyp i Dataverse är en alternativuppsättning. Eftersom det är viktigt att du alltid använder kontakttypen som standardvärde.
För Åtgärdstyp, välj Ställ in standardvärde.
En FHIR-elementmappning behövs inte eftersom du endast anger standardvärdet. I det här fallet har FHIR inget koncept för kontakttyp, men Dataverse kräver det.
Välj Spara.
Under Värdemappningar, välj den första raden och välj Redigera.
I Attributvärdesmappning, välj Patient för fältet Etiketten OptionSet.
Fältet Värde visar standardvärdet för kontakttyp. Dataverse Healthcare API fyller automatiskt i Dataverse värdet.
Välj Spara och stäng.
Under Värdemappningar, Dataverse standardvärdet anges. Varje gång Dataverse Healthcare API kommer in och skapar en patient anger det fältet Kontakttyp som Patient.
Exempel 8: Sökning
I följande steg visas ett exempel på hur du mappar ett Dataverse-attribut som är en Sökning.
I entitetsmappningen för kontakt, välj + Ny attributmappning för uppdateringstjänst.
För Attributnamn, välj Primär vårdutövare (msemr_generalpractitioner).
Attributtyp för attributet Primär vårdutövare är Sökning (en sökning till entiteten Kontakt).
För Åtgärdstyp är den enda åtgärdstypen FK-referens (referens för externa nycklar). Du måste ange för Dataverse Healthcare API hur du ställer in det här uppslaget.
Lägg till värdet FHIR-elementmappning för primär vårdutövare.
För FHIR-resursreferens, välj vårdutövare.
I Dataverse är entitetsreferensen för primär vårdutövare är kontakt. För FHIR-resursreferens är vårdutövare.
Välj Spara.
Om ett Dataverse attribut är av typen uppslagning, kan du bara skapa en mappning som är en sekundärnyckel (FK) referens. Konfigurera FK-referensen genom att ange den FHIR-resurs som du mappar målentiteten till.
Exempel 9: Mappa codeable concept
I följande förfarande visas ett exempel på hur du mappar ett Dataverse attribut som är av typen codeable concept.
Under Mappningsinställningar, välj Entitetsmappningar.
Under Entitetsnamn, välj msemr_observation.
I relaterade attributmappningar, välj + Ny attributmappning för uppdateringstjänst.
För Attributnamn, välj Kvot, nämnarkod (msemr_valueratiodenominatorcode).
Attributets Attributtyp är sökning. Det är en sökning till entiteten
msemr_codeableconcept
, som är en särskild entitetstyp, datamodellen. Den här entitetstypen hanteras på ett annat sätt än andra entiteter.För Åtgärdstyp är den enda åtgärdstypen Kodbart koncept.
Lägg till värdet FHIR-elementmappning för attributet.
För Typ av Codeable Concept, välj Kod för kvantitetsenhet.
En codeable concept-typ liknar en stor alternativuppsättning, och varje värde i alternativuppsättningen har en typ. Den gör att du kan gruppera och filtrera alternativuppsättningar. Observera att fältet Typvärde för Codeable concept fylls i automatiskt när du väljer Kod för kvantitetsenhet som typen codeable concept. Du behövde inte känna till alternativuppsättningsvärdet för kod för kvantitetsenhet.
Välj Spara.
När Dataverse skapar en observation måste codeable concept anges. I Dataverse hittar du codeable concept genom att söka i tabellerna efter alla codeable concept med typen Kvantitetsenhetskod som överensstämmer med kodvärdet. Ett kodbart koncept består av text, kod och typ. FHIR känner till koden och texten, men vet inte från vilken kodbar koncepttyp det ska hämta dessa.
Aktuella begränsningar
- Dynamisk infogning av matris eller skapandelägen kan inte vara absoluta. Markeringen är dynamisk med JSONPath..
- Värdedata måste vara korrekt formaterad i JSON för fält som destinationsattribut UTF-8-strängar, JSON UTC-datum och boolesk.
Verktyg
Du kan använda flera verktyg för att testa JSONPath-strängar, inklusive följande program:
Mer information om hur du använder dessa verktyg finns i JSONPath-vägledning.