Jak używać funkcji niestandardowych z mapowaniem urządzeń usługi MedTech
Uwaga
Fast Healthcare Interoperability Resources (FHIR®) to otwarta specyfikacja opieki zdrowotnej.
Wiele funkcji jest dostępnych w przypadku używania języka wyrażeń JMESPath . Oprócz wbudowanych funkcji dostępnych w ramach specyfikacji JMESPath można również używać wielu innych funkcji niestandardowych. W tym artykule opisano sposób używania funkcji niestandardowych specyficznych dla usługi MedTech z mapowaniem urządzeń usługi MedTech.
Porada
Debuger mapowania usługi MedTech umożliwia tworzenie, aktualizowanie i rozwiązywanie problemów z mapowaniami docelowymi urządzenia usługi MedTech i FHIR. Debuger mapowania umożliwia łatwe wyświetlanie i wprowadzanie wbudowanych korekt w czasie rzeczywistym bez konieczności opuszczania Azure Portal. Debuger mapowania może również służyć do przekazywania komunikatów testowych urządzeń, aby zobaczyć, jak będą one wyglądać po przetworzeniu w znormalizowane komunikaty i przekształcone w obserwacje FHIR.
Podpis funkcji
Każda funkcja ma podpis zgodny ze specyfikacją JMESPath. Ten podpis może być reprezentowany jako:
return_type function_name(type $argname)
Podpis wskazuje prawidłowe typy argumentów. Jeśli dla argumentu zostanie przekazany nieprawidłowy typ, wystąpi błąd.
Ważne
Po zakończeniu wykonywania funkcji związanych z obliczeniami wynik końcowy musi być w stanie zmieścić się w długiej wartości języka C# . Jeśli wynik końcowy nie może zmieścić się w długiej wartości języka C#, wystąpi błąd matematyczny.
Jak wspomniano wcześniej, te funkcje mogą być używane tylko podczas określania języka wyrażeń JmesPath . Domyślnie język wyrażeń to JsonPath. Język wyrażeń można zmienić podczas definiowania wyrażenia.
Przykład:
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"patientIdExpression": {
"value": "insertString('123', 'patient', `0`) ",
"language": "JmesPath"
},
...
}
W tym przykładzie użyto wyrażenia insertString do wygenerowania identyfikatora patient123
pacjenta .
Wartości literału
Wartości stałe mogą być dostarczane do funkcji.
- Wartości liczbowe powinny być ujęte w backticks: "
- Przykład: add('10', '10')
- Wartości ciągów powinny być ujęte w apostrofy: "
- Przykład: insertString('mple', 'sa', '0')
Aby uzyskać więcej informacji, zobacz specyfikację JMESPath.
Obsługa wyjątków
Wyjątki mogą wystąpić w różnych punktach w cyklu życia przetwarzania danych urządzenia. Oto różne punkty, w których mogą wystąpić wyjątki:
Akcja | Kiedy | Wyjątki, które mogą wystąpić podczas analizowania mapowania urządzenia | Wynik |
---|---|---|---|
Analizowanie mapowania urządzeń | Za każdym razem, gdy odbierana jest nowa partia komunikatów urządzenia, mapowanie urządzenia jest ładowane i analizowane. | Nie można przeanalizować mapowania urządzenia. | System próbuje ponownie załadować i przeanalizować najnowsze mapowanie urządzenia, dopóki analizowanie nie powiedzie się. Żadne nowe komunikaty urządzenia nie są przetwarzane, dopóki analizowanie nie powiedzie się. |
Analizowanie mapowania urządzeń | Za każdym razem, gdy odbierana jest nowa partia komunikatów urządzenia, mapowanie urządzenia jest ładowane i analizowane. | Nie można przeanalizować żadnych wyrażeń. | System próbuje ponownie załadować i przeanalizować najnowsze mapowanie urządzenia, dopóki analizowanie nie powiedzie się. Żadne nowe komunikaty urządzenia nie są przetwarzane, dopóki analizowanie nie powiedzie się. |
Wykonywanie funkcji | Za każdym razem, gdy funkcja jest wykonywana względem danych urządzenia w komunikacie urządzenia. | Dane wejściowe urządzenia nie są zgodne z podpisem funkcji. | System zatrzymuje przetwarzanie tego komunikatu urządzenia. Komunikat urządzenia nie jest ponawiany. |
Wykonywanie funkcji | Za każdym razem, gdy funkcja jest wykonywana względem danych urządzenia w komunikacie urządzenia. | Wszelkie inne wyjątki wymienione w opisie funkcji. | System zatrzymuje przetwarzanie tego komunikatu urządzenia. Komunikat urządzenia nie jest ponawiany. |
Funkcje matematyczne
add
number add(number $left, number $right)
Zwraca wynik dodania argumentu po lewej stronie do prawego argumentu.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | add('10', '10') | 20 |
{"left": 40, "right": 50} | add(left, right) | 90 |
{"left": 0, "right": 50} | add(left, right) | 50 |
Podzielić
number divide(number $left, number $right)
Zwraca wynik dzielenia argumentu po lewej stronie przez prawy argument.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | divide('10', '10') | 1 |
{"left": 40, "right": 50} | divide(left, right) | 0,8 |
{"left": 0, "right": 50} | divide(left, right) | 0 |
{"left": 50, "right": 0} | divide(left, right) | błąd matematyczny: podziel przez zero |
Pomnożyć
number multiply(number $left, number $right)
Zwraca wynik mnożenia argumentu po lewej stronie z argumentem po prawej stronie.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | multiply('10', '10') | 100 |
{"left": 40, "right": 50} | mnożenie (po lewej, w prawo) | 2000 |
{"left": 0, "right": 50} | mnożenie (po lewej, w prawo) | 0 |
Pow
number pow(number $left, number $right)
Zwraca wynik podniesienia argumentu po lewej stronie do potęgi prawego argumentu.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | pow('10', '10') | 10000000000 |
{"left": 40, "right": 50} | pow(po lewej, w prawo) | błąd matematyczny: przepełnienie |
{"left": 0, "right": 50} | pow(po lewej, w prawo) | 0 |
{"left": 100, "right": 0,5} | pow(po lewej, w prawo) | 10 |
Odejmij
number subtract(number $left, number $right)
Zwraca wynik odejmowania prawego argumentu z argumentu po lewej stronie.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | odejmowanie('10', '10') | 0 |
{"left": 40, "right": 50} | odejmowanie (po lewej, w prawo) | -10 |
{"left": 0, "right": 50} | odejmowanie (po lewej, w prawo) | -50 |
Funkcje ciągów
insertString
string insertString(string $original, string $toInsert, number pos)
Tworzy nowy ciąg, wstawiając wartość toInsert
do ciągu original
. Ciąg jest wstawiany w pozycji pos
w ciągu original
.
Jeśli argument pozycyjny ma wartość zero, pozycja zero odwołuje się do pierwszego znaku w ciągu.
Jeśli podany argument pozycyjny jest poza zakresem długości original
, wystąpi błąd.
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
n/d | insertString('mple', 'sa', 0 ) |
"przykład" |
{"original": "mple", "toInsert": "sa", "pos": 0} | insertString(oryginalny, toInsert, pos) | "przykład" |
{"original": "suess", "toInsert": "cc", "pos": 2} | insertString(oryginalny, toInsert, pos) | "sukces" |
{"original": "myString", "toInsert": "!!", "pos": 8} | insertString(oryginalny, toInsert, pos) | "myString!!" |
Funkcje daty
fromUnixTimestamp
string fromUnixTimestamp(number $unixTimestampInSeconds)
Tworzy sygnaturę czasową zgodną z normą ISO 8061 z danego znacznika czasu systemu Unix. Sygnatura czasowa jest reprezentowana jako liczba sekund od epoki (1 stycznia 1970).
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
{"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)
Tworzy sygnaturę czasową zgodną z normą ISO 8061 z danego znacznika czasu systemu Unix. Sygnatura czasowa jest reprezentowana jako liczba milisekund od epoki (1 stycznia 1970).
Przykłady:
Podane | Wyrażenie | Wynik |
---|---|---|
{"unix": 1626799080000} | fromUnixTimestampMs(unix) | "2021-07-20T16:38:00+0" |
{"unix": 0} | fromUnixTimestampMs(unix) | "1970-01-01T00:00:00+0" |
Porada
Zobacz artykuł MedTech Service Troubleshoot errors using the MedTech service logs (Rozwiązywanie problemów z błędami przy użyciu dzienników usługi MedTech ), aby uzyskać pomoc w naprawianiu błędów przy użyciu dzienników usługi MedTech.
Następne kroki
W tym artykule przedstawiono sposób używania funkcji niestandardowych usługi MedTech w ramach mapowania urządzeń.
Aby zapoznać się z omówieniem mapowania urządzeń usługi MedTech, zobacz
Aby zapoznać się z omówieniem mapowania lokalizacji docelowej FHIR usługi MedTech, zobacz
Aby zapoznać się z omówieniem przykładów mapowań opartych na scenariuszach usługi MedTech, zobacz
FHIR® jest zastrzeżonym znakiem towarowym Health Level Seven International, zarejestrowanym w U.S. Trademark Office i jest używany z ich pozwoleniem.