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å original
uppstå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.