Dela via


Så här använder du anpassade funktioner med Enhetsmappning för MedTech-tjänsten

Anteckning

FHIR® (Fast Healthcare Interoperability Resources) är en öppen hälsospecifikation.

Många funktioner är tillgängliga när du använder JMESPath som uttrycksspråk. Förutom de inbyggda funktioner som är tillgängliga som en del av JMESPath-specifikationen kan många fler anpassade funktioner också användas. I den här artikeln beskrivs hur du använder MedTech-tjänstspecifika anpassade funktioner med enhetsmappning för MedTech-tjänsten.

Tips

Du kan använda felsökningsprogrammet för MedTech-tjänstens mappning för att få hjälp med att skapa, uppdatera och felsöka MedTech-tjänstenheten och FHIR-målmappningarna. Med felsökningsprogrammet mappning kan du enkelt visa och göra infogade justeringar i realtid, utan att behöva lämna Azure Portal. Felsökningsprogrammet mappning kan också användas för att ladda upp testenhetsmeddelanden för att se hur de kommer att se ut efter att ha bearbetats till normaliserade meddelanden och omvandlats till FHIR-observationer.

Funktionssignatur

Varje funktion har en signatur som följer JMESPath-specifikationen. Signaturen kan representeras som:

return_type function_name(type $argname)

Signaturen anger giltiga typer för argumenten. Om en ogiltig typ skickas för ett argument uppstår ett fel.

Viktigt

När matematiska funktioner är klara måste slutresultatet få plats inom ett långt C# -värde. Om slutresultatet inte får plats inom ett långt C#-värde uppstår ett matematiskt fel.

Som tidigare nämnts kan dessa funktioner endast användas när du anger JmesPath som uttrycksspråk. Som standard är uttrycksspråket JsonPath. Uttrycksspråket kan ändras när uttrycket definieras.

Exempel:

"templateType": "CalculatedContent",
    "template": {
        "typeName": "heartrate",
        "patientIdExpression": {
            "value": "insertString('123', 'patient', `0`) ",
            "language": "JmesPath"
        },
        ...
    }

I det här exemplet används uttrycket insertString för att generera patient-ID patient123: t .

Literalvärden

Konstanta värden kan anges till funktioner.

  • Numeriska värden ska omges av backticks: '
    • Exempel: add('10', '10')
  • Strängvärden ska omges av enkla citattecken: '
    • Exempel: insertString('mple', 'sa', '0')

Mer information finns i JMESPath-specifikationen.

Undantagshantering

Undantag kan inträffa vid olika tidpunkter inom enhetens livscykel för databearbetning. Här är de olika punkterna där undantag kan inträffa:

Åtgärd När Undantag som kan inträffa vid parsning av enhetsmappningen Resultat
Parsning av enhetsmappning Varje gång en ny batch med enhetsmeddelanden tas emot läses enhetsmappningen in och parsas. Det gick inte att parsa enhetsmappningen. Systemet försöker läsa in och parsa den senaste enhetsmappningen tills parsningen lyckas. Inga nya enhetsmeddelanden bearbetas förrän parsningen lyckas.
Parsning av enhetsmappning Varje gång en ny batch med enhetsmeddelanden tas emot läses enhetsmappningen in och parsas. Det gick inte att parsa några uttryck. Systemet försöker läsa in och parsa den senaste enhetsmappningen tills parsningen lyckas. Inga nya enhetsmeddelanden bearbetas förrän parsningen lyckas.
Funktionskörning Varje gång en funktion körs mot enhetsdata i ett enhetsmeddelande. Indata för enheten matchar inte funktionens signatur. Systemet avbryter bearbetningen av enhetsmeddelandet. Enhetsmeddelandet försöks inte igen.
Funktionskörning Varje gång en funktion körs mot enhetsdata i ett enhetsmeddelande. Andra undantag som anges i beskrivningen av funktionen. Systemet avbryter bearbetningen av enhetsmeddelandet. Enhetsmeddelandet försöks inte igen.

Matematiska funktioner

add

number add(number $left, number $right)

Returnerar resultatet av att lägga till det vänstra argumentet i det högra argumentet.

Exempel:

Angiven Uttryck Resultat
saknas add('10', '10') 20
{"left": 40, "right": 50} add(left, right) 90
{"left": 0, "right": 50} add(left, right) 50

Dela

number divide(number $left, number $right)

Returnerar resultatet av att dela det vänstra argumentet med det högra argumentet.

Exempel:

Angiven Uttryck Resultat
saknas divide('10', '10') 1
{"left": 40, "right": 50} divide(vänster, höger) 0,8
{"left": 0, "right": 50} divide(vänster, höger) 0
{"left": 50, "right": 0} divide(vänster, höger) matematiskt fel: dividera med noll

Multiplicera

number multiply(number $left, number $right)

Returnerar resultatet av att multiplicera det vänstra argumentet med det högra argumentet.

Exempel:

Angiven Uttryck Resultat
saknas multiply('10', '10') 100
{"left": 40, "right": 50} multiply(left, right) 2000
{"left": 0, "right": 50} multiply(left, right) 0

Pow

number pow(number $left, number $right)

Returnerar resultatet av att höja det vänstra argumentet till högerargumentets kraft.

Exempel:

Angiven Uttryck Resultat
saknas pow('10', '10') 10000000000
{"left": 40, "right": 50} pow(vänster, höger) matematiskt fel: spill
{"left": 0, "right": 50} pow(vänster, höger) 0
{"left": 100, "right": 0.5} pow(vänster, höger) 10

Subtrahera

number subtract(number $left, number $right)

Returnerar resultatet av att subtrahera det högra argumentet från det vänstra argumentet.

Exempel:

Angiven Uttryck Resultat
saknas subtract('10', '10') 0
{"left": 40, "right": 50} subtract(vänster, höger) −10
{"left": 0, "right": 50} subtract(vänster, höger) -50

Strängfunktioner

insertString

string insertString(string $original, string $toInsert, number pos)

Skapar en ny sträng genom att infoga värdet toInsert för i strängen original. Strängen infogas vid position pos i strängen original.

Om positionsargumentet är nollbaserat refererar nollpositionen till det första tecknet i strängen.

Om det angivna positionsargumentet ligger inom intervallet för längden på originaluppstår ett fel.

Exempel:

Angiven Uttryck Resultat
saknas insertString('mple', 'sa', 0) "sample"
{"original": "mple", "toInsert": "sa", "pos": 0} insertString(original, toInsert, pos) "sample"
{"original": "suess", "toInsert": "cc", "pos": 2} insertString(original, toInsert, pos) "success"
{"original": "myString", "toInsert": "!!", "pos": 8} insertString(original, toInsert, pos) "myString!!"

Datumfunktioner

fromUnixTimestamp

string fromUnixTimestamp(number $unixTimestampInSeconds)

Skapar en ISO 8061-kompatibel tidsstämpel från den angivna Unix-tidsstämpeln. Tidsstämpeln representeras som antalet sekunder sedan epoken (1 januari 1970).

Exempel:

Angiven Uttryck Resultat
{"unix": 1625677200} fromUnixTimestamp(unix) "2021-07-07T17:00:00+0"
{"unix": 0} fromUnixTimestamp(unix) "1970-01-01T00:00:00+0"

fromUnixTimestampMs

string fromUnixTimestampMs(number $unixTimestampInMs)

Skapar en ISO 8061-kompatibel tidsstämpel från den angivna Unix-tidsstämpeln. Tidsstämpeln representeras som antalet millisekunder sedan epoken (januari 1970).

Exempel:

Angiven Uttryck Resultat
{"unix": 1626799080000} fromUnixTimestampMs(unix) "2021-07-20T16:38:00+0"
{"unix": 0} fromUnixTimestampMs(unix) "1970-01-01T00:00:00+0"

Tips

Mer information om hur du åtgärdar fel med hjälp av MedTech-tjänstloggarna finns i MedTech-tjänstartikeln Felsöka fel med hjälp av MedTech-tjänstloggarna .

Nästa steg

I den här artikeln har du lärt dig hur du använder anpassade funktioner för MedTech-tjänsten i enhetsmappningen.

En översikt över enhetsmappningen för MedTech-tjänsten finns i

En översikt över FHIR-målmappningen för MedTech-tjänsten finns i

En översikt över exempel på scenariobaserade mappningar för MedTech-tjänsten finns i

FHIR® är ett registrerat varumärke som tillhör Health Level Seven International, registrerat i U.S. Trademark Office och används med deras tillstånd.