Možnosti rozhraní FHIR REST API pro Azure API for FHIR
V tomto článku se podíváme na některé nuance interakcí RESTful v rozhraní Azure API for FHIR.
Podmíněné vytvoření nebo aktualizace
Rozhraní Azure API for FHIR podporuje vytváření, podmíněné vytváření, aktualizace a podmíněné aktualizace definované specifikací FHIR. Jednou z užitečných hlaviček v těchto scénářích je hlavička If-Match . Hlavička If-Match
se použije a před provedením aktualizace ověří verzi, která se aktualizuje. Pokud se neshoduje ETag
s očekávaným ETag
kódem , zobrazí se chybová zpráva 412 – Předběžná podmínka se nezdařila.
Odstranění a podmíněné odstranění
Azure API for FHIR nabízí dva typy odstranění. Existuje možnost Delete, která se také označuje jako pevné a obnovitelné odstranění a podmíněné odstranění.
Odstranit (pevné + obnovitelné odstranění)
Odstranění definované specifikací FHIR vyžaduje, aby po odstranění prostředku vrátilo následující čtení prostředku, které není specifické pro konkrétní verzi, stavový kód HTTP 410. Proto se prostředek už při hledání nenajde. Rozhraní Azure API for FHIR navíc umožňuje plně odstranit (včetně celé historie) prostředek. Pokud chcete prostředek úplně odstranit, můžete předat nastavení hardDelete
parametru na hodnotu true (DELETE {{FHIR_URL}}/{resource}/{id}?hardDelete=true)
. Pokud tento parametr nepředáte nebo nenastavíte hardDelete
hodnotu false, budou i nadále k dispozici historické verze prostředku.
Poznámka
Pokud chcete odstranit pouze historii, azure API for FHIR podporuje vlastní operaci s názvem $purge-history
. Tato operace umožňuje odstranit historii prostředku.
Podmíněné odstranění
Podmíněné odstranění umožňuje předat kritéria hledání k odstranění prostředku. Ve výchozím nastavení umožňuje podmíněné odstranění odstranit jednu položku najednou. Můžete také zadat parametr pro _count
odstranění až 100 položek najednou. Níže najdete několik příkladů použití podmíněného odstranění.
Pokud chcete odstranit jednu položku pomocí podmíněného odstranění, musíte zadat kritéria hledání, která vrátí jednu položku.
DELETE https://{{FHIR_URL}}/Patient?identifier=1032704
Můžete provést stejné vyhledávání, ale zahrnout hardDelete=true
také odstranit celou historii.
DELETE https://{{FHIR_URL}}/Patient?identifier=1032704&hardDelete=true
Pokud chcete odstranit více prostředků, zahrňte _count=100
parametr . Tento parametr odstraní až 100 prostředků, které splňují kritéria hledání.
DELETE https://{{FHIR_URL}}/Patient?identifier=1032704&_count=100
Obnovení odstraněných souborů
Pokud nepoužíváte parametr hard delete, měly by záznamy v rozhraní Azure API for FHIR stále existovat. Záznamy se dají najít tak, že v prostředku vyhledáte historii a vyhledáte poslední verzi s daty.
Pokud je ID odstraněného prostředku známé, použijte následující vzor adresy URL:
<FHIR_URL>/<resource-type>/<resource-id>/_history
Příklad: https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/123456789/_history
Pokud ID prostředku není známé, vyhledejte v historii celý typ prostředku:
<FHIR_URL>/<resource-type>/_history
Příklad: https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/_history
Jakmile najdete záznam, který chcete obnovit, použijte PUT
operaci k opětovnému vytvoření prostředku se stejným ID nebo pomocí POST
operace vytvořte nový prostředek se stejnými informacemi.
Poznámka
Pro data o historii nebo obnovitelném odstranění neexistuje žádné vypršení platnosti na základě času. Jediným způsobem, jak odebrat historii nebo obnovitelně odstraněná data, je operace pevného odstranění nebo vyprázdnění historie.
Oprava a podmíněná oprava
Oprava je cenná operace RESTful, když potřebujete aktualizovat jenom část prostředku FHIR. Pomocí opravy můžete zadat prvky, které chcete v prostředku aktualizovat, aniž byste museli aktualizovat celý záznam. FHIR definuje tři způsoby, jak opravit prostředky: opravy JSON, opravy XML a opravy FHIRPath. Služba FHIR Service podporuje opravu JSON i opravu FHIRPath spolu s podmíněnou opravou JSON a podmíněnou opravou FHIRPath (která umožňuje opravit prostředek na základě kritérií hledání místo ID prostředku). Pokud si chcete projít některé příklady, projděte si ukázkový soubor REST opravy FHIRPath a soubor REST opravy JSON pro jednotlivé přístupy. Další podrobnosti najdete v dokumentaci HL7 pro operace oprav pomocí FHIR.
Poznámka
Při použití PATCH
proti stu3 a pokud požadujete sadu Historie, je opravený prostředek Bundle.entry.request.method
mapován na PUT
. Je to proto, že STU3 neobsahuje definici slovesa PATCH
v sadě hodnot HTTPVerb.
Oprava s opravou FHIRPath
Tato metoda opravy je nejvýkonnější, protože využívá FHIRPath k výběru prvku, na který se má cílit. Jedním z běžných scénářů je použití opravy FHIRPath k aktualizaci prvku v seznamu bez znalosti pořadí seznamu. Pokud například chcete odstranit informace o domácí telekomunikační službě pacienta, aniž byste znali index, můžete použít následující příklad.
OPRAVA http://{FHIR-SERVICE-HOST-NAME}/Patient/{PatientID}
Typ obsahu: application/fhir+json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "operation",
"part": [
{
"name": "type",
"valueCode": "delete"
},
{
"name": "path",
"valueString": "Patient.telecom.where(use = 'home')"
}
]
}
]
}
Všechny operace opravy FHIRPath musí mít nastavenou hlavičku application/fhir+json
Content-Type. FHIRPatch Patch podporuje operace přidání, vložení, odstranění, odebrání a přesunutí. Operace oprav FHIRPatch lze také snadno integrovat do sad. Další příklady najdete v ukázkovém souboru REST opravy FHIRPath.
Oprava s využitím opravy JSON
Oprava JSON ve službě FHIR odpovídá dobře používané specifikaci definované pracovní sadou Internetových technických úloh. Formát datové části nepoužívá prostředky FHIR a místo toho používá dokument JSON využívající JSON-Pointers pro výběr elementu. Oprava JSON je kompaktnější a má testovací operaci, která umožňuje před provedením opravy ověřit, jestli je podmínka pravdivá. Pokud například chcete nastavit pacienta jako zesnulého jenom v případě, že ještě není označený jako zesnulý, můžete použít následující příklad.
OPRAVA http://{FHIR-SERVICE-HOST-NAME}/Patient/{PatientID}
Typ obsahu: application/json-patch+json
[
{
"op": "test",
"path": "/deceasedBoolean",
"value": false
},
{
"op": "replace",
"path": "/deceasedBoolean",
"value": true
}
]
Všechny operace oprav JSON musí mít nastavenou hlavičku application/json-patch+json
Content-Type. Oprava JSON podporuje operace přidání, odebrání, nahrazení, kopírování, přesunu a testování. Další příklady najdete v ukázkovém souboru REST opravy JSON.
Oprava JSON v balíčcích
Ve výchozím nastavení není oprava JSON podporovaná v prostředcích sady. Je to proto, že sada podporuje pouze prostředky FHIR a datová část opravy JSON není prostředkem FHIR. Abychom to mohli obejít, použijeme binární prostředky s typem "application/json-patch+json"
obsahu a kódováním base64 datové části JSON uvnitř sady. Informace o tomto alternativním řešení najdete na webu FHIR Chat Zulip.
V následujícím příkladu chceme změnit pohlaví pacienta na ženskou. Vzali jsme opravu [{"op":"replace","path":"/gender","value":"female"}]
JSON a zakódovali ji do base64.
PŘÍSPĚVEK https://{FHIR-SERVICE-HOST-NAME}/
Typ obsahu: application/json
{
"resourceType": "Bundle",
"id": "bundle-batch",
"type": "batch",
"entry": [
{
"fullUrl": "Patient/{PatientID}",
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "W3sib3AiOiJyZXBsYWNlIiwicGF0aCI6Ii9nZW5kZXIiLCJ2YWx1ZSI6ImZlbWFsZSJ9XQ=="
},
"request": {
"method": "PATCH",
"url": "Patient/{PatientID}"
}
}
]
}
Další kroky
V tomto článku jste se dozvěděli o některých funkcích REST služby Azure API for FHIR. Dále se můžete dozvědět více o klíčových aspektech vyhledávání prostředků ve FHIR.
(FHIR®) je registrovaná ochranná známka společnosti HL7 a používá se se svolením HL7.