Jak používat vlastní funkce s mapováním zařízení služby MedTech
Poznámka
Fast Healthcare Interoperability Resources (FHIR®) je otevřená specifikace zdravotní péče.
Při použití jazyka výrazů JMESPath je k dispozici celá řada funkcí. Kromě předdefinovaných funkcí, které jsou k dispozici jako součást specifikace JMESPath, je možné použít i mnoho dalších vlastních funkcí. Tento článek popisuje, jak používat vlastní funkce specifické pro službu MedTech s mapováním zařízení služby MedTech.
Tip
Ladicí program Mapování služby MedTech vám pomůže s vytvářením, aktualizací a řešením potíží se zařízením služby MedTech a mapováním cílů FHIR. Ladicí program mapování umožňuje snadno zobrazit a provádět vložené úpravy v reálném čase, aniž byste museli opustit Azure Portal. Ladicí program mapování se dá použít také k nahrávání zpráv testovacího zařízení, abyste viděli, jak budou vypadat po jejich zpracování na normalizované zprávy a transformaci na pozorování FHIR.
Podpis funkce
Každá funkce má podpis, který odpovídá specifikaci JMESPath. Tento podpis může být reprezentován takto:
return_type function_name(type $argname)
Podpis označuje platné typy argumentů. Pokud je argument předán neplatný typ, dojde k chybě.
Důležité
Po dokončení matematických funkcí se konečný výsledek musí vejít do dlouhé hodnoty jazyka C# . Pokud se konečný výsledek nevejde do dlouhé hodnoty jazyka C#, dojde k matematické chybě.
Jak bylo uvedeno výše, tyto funkce lze použít pouze při zadání JmesPath jako jazyk výrazu. Ve výchozím nastavení je jazyk výrazů JsonPath. Jazyk výrazu lze změnit při definování výrazu.
Příklad:
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"patientIdExpression": {
"value": "insertString('123', 'patient', `0`) ",
"language": "JmesPath"
},
...
}
Tento příklad používá výraz insertString k vygenerování ID patient123
pacienta .
Hodnoty literálů
Konstantní hodnoty mohou být předány funkcím.
- Číselné hodnoty by měly být uzavřeny v zpětných položkách: '
- Příklad: add('10'; '10')
- Řetězcové hodnoty by měly být uzavřeny v jednoduchých uvozovkách: '
- Příklad: insertString('mple', 'sa', '0')
Další informace najdete ve specifikaci JMESPath.
Ošetření výjimek
V různých bodech životního cyklu zpracování dat zařízení může dojít k výjimkám. Tady jsou různé body, ve kterých může dojít k výjimkám:
Akce | Když | Výjimky, ke kterým může dojít během analýzy mapování zařízení | Výsledek |
---|---|---|---|
Analýza mapování zařízení | Při každém přijetí nové dávky zpráv zařízení se mapování zařízení načte a parsuje. | Nepovedlo se analyzovat mapování zařízení. | Systém se pokusí znovu načíst a parsovat nejnovější mapování zařízení, dokud analýza nebude úspěšná. Dokud nebude analýza úspěšná, nezpracují se žádné nové zprávy zařízení. |
Analýza mapování zařízení | Při každém přijetí nové dávky zpráv zařízení se mapování zařízení načte a parsuje. | Nepovedlo se analyzovat žádné výrazy. | Systém se pokusí znovu načíst a parsovat nejnovější mapování zařízení, dokud analýza nebude úspěšná. Dokud nebude analýza úspěšná, nezpracují se žádné nové zprávy zařízení. |
Spuštění funkce | Pokaždé, když se funkce spustí s daty zařízení ve zprávě zařízení. | Vstupní data zařízení neodpovídají datům podpisu funkce. | Systém přestane zpracovávat zprávu zařízení. Zpráva zařízení se neopakuje. |
Spuštění funkce | Pokaždé, když se funkce spustí s daty zařízení ve zprávě zařízení. | Všechny ostatní výjimky uvedené v popisu funkce. | Systém přestane zpracovávat zprávu zařízení. Zpráva zařízení se neopakuje. |
Matematické funkce
add
number add(number $left, number $right)
Vrátí výsledek přidání argumentu vlevo k argumentu vpravo.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | add('10'; '10') | 20 |
{"left": 40, "right": 50} | add(vlevo, vpravo) | 90 |
{"left": 0, "right": 50} | add(vlevo, vpravo) | 50 |
Rozdělit
number divide(number $left, number $right)
Vrátí výsledek dělení argumentu vlevo argumentem vpravo.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | divide('10'; '10') | 1 |
{"left": 40, "right": 50} | divide(vlevo, vpravo) | 0.8 |
{"left": 0, "right": 50} | divide(vlevo, vpravo) | 0 |
{"left": 50, "right": 0} | divide(vlevo, vpravo) | matematická chyba: dělit nulou |
Násobit
number multiply(number $left, number $right)
Vrátí výsledek vynásobení levého argumentu argumentem vpravo.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | multiply('10'; '10') | 100 |
{"left": 40, "right": 50} | multiply (vlevo, vpravo) | 2000 |
{"left": 0, "right": 50} | multiply (vlevo, vpravo) | 0 |
Pow
number pow(number $left, number $right)
Vrátí výsledek zvýšení levého argumentu na mocninu pravého argumentu.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | pow('10', '10') | 10000000000 |
{"left": 40, "right": 50} | pow(vlevo, vpravo) | matematická chyba: přetečení |
{"left": 0, "right": 50} | pow(vlevo, vpravo) | 0 |
{"left": 100, "right": 0.5} | pow(vlevo, vpravo) | 10 |
Odečíst
number subtract(number $left, number $right)
Vrátí výsledek odečtení pravého argumentu od argumentu vlevo.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | subtract('10'; '10') | 0 |
{"left": 40, "right": 50} | subtract (vlevo, vpravo) | -10 |
{"left": 0, "right": 50} | subtract (vlevo, vpravo) | −50 |
Funkce řetězců
insertString
string insertString(string $original, string $toInsert, number pos)
Vytvoří nový řetězec vložením hodnoty toInsert
do řetězce original
. Řetězec se vloží na pozici pos
v řetězci original
.
Pokud je poziční argument od nuly, pozice nuly odkazuje na první znak v řetězci.
Pokud je zadaný poziční argument mimo rozsah délky original
, dojde k chybě.
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
Není k dispozici | insertString('mple'; 'sa'; 0 ) |
"ukázka" |
{"original": "mple", "toInsert": "sa", "pos": 0} | insertString(original, toInsert, pos) | "ukázka" |
{"original": "suess", "toInsert": "cc", "pos": 2} | insertString(original, toInsert, pos) | "úspěch" |
{"original": "myString", "toInsert": "!!", "pos": 8} | insertString(original, toInsert, pos) | "myString!!" |
Datové funkce
fromUnixTimestamp
string fromUnixTimestamp(number $unixTimestampInSeconds)
Vytvoří časové razítko odpovídající standardu ISO 8061 z daného časového razítka Unixu. Časové razítko je vyjádřeno jako počet sekund od epochy (1. ledna 1970).
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
{"unix": 1625677200} | fromUnixTimestamp(unix) | "2021-07-07T17:00:00+0" |
{"unix": 0} | fromUnixTimestamp(unix) | "1970-01-01T0:00:00+0" |
fromUnixTimestampMs
string fromUnixTimestampMs(number $unixTimestampInMs)
Vytvoří časové razítko odpovídající standardu ISO 8061 z daného časového razítka Unixu. Časové razítko je vyjádřeno jako počet milisekund od epochy (1. ledna 1970).
Příklady:
Dané | Výraz | Výsledek |
---|---|---|
{"unix": 1626799080000} | fromUnixTimestampMs(unix) | "2021-07-20T16:38:00+0" |
{"unix": 0} | fromUnixTimestampMs(unix) | "1970-01-01T0:00:00+0" |
Tip
Pomoc s opravou chyb pomocí protokolů služby MedTech najdete v článku Řešení chyb pomocí protokolů služby MedTech .
Další kroky
V tomto článku jste zjistili, jak používat vlastní funkce služby MedTech v rámci mapování zařízení.
Přehled mapování zařízení služby MedTech najdete v tématu
Přehled mapování cílů FHIR služby MedTech najdete v tématu
Přehled ukázek mapování na základě scénářů služby MedTech najdete v tématu
FHIR® je registrovaná ochranná známka společnosti Health Level Seven International, registrovaná v U.S. Trademark Office a je používána s jejich svolením.