2016-06-21 11 views
1

Ich verwende Hapi FHIR DSTU2 HL7Org. In meiner Anwendung muss ich eine MedicationOrder erstellen und die Möglichkeit bieten, fehlerhafte Einträge zu aktualisieren/zu löschen. Ich habe die ID, patientId usw. der erstellten MedicationOrder, aber das Schreiben eines Codes mit where-Klausel ist ziemlich problematisch. In allen Beispielen habe ich gesehen, wie EinträgeDurchsuchen eines FHIR-Servers nach einer bestimmten Ressourcen-ID

where(Patient.FAMILY.matches().value("duck") 

präsentiert, aber ich bekomme SP_PATIENT, SP_STATUS usw.

FhirContext ctx = FhirContext.forDstu2Hl7Org(); 
IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2"); 
Bundle bundle = client.search().forResource(MedicationOrder.class).where(MedicationOrder.SP_PATIENT.equals("patientId")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute(); 

Der obige Code kompiliert nicht sagen: „Das Verfahren, bei dem (ICriterion) in der Typ IQuery ist nicht anwendbar für die Argumente (boolean) ". Ich konnte kein IQuery-Objekt erstellen.

Kann mir bitte jemand Anweisungen geben, wie ich vorgehen soll?

Antwort

0

Dies ist ein bisschen komisch - die DSTU2 HL7Org-Strukturen wurden an einem Punkt erstellt, an dem wir noch nicht alle Modellfunktionen aus den HAPI-Strukturen in die HL7Org-Strukturen überführt hatten. Diese "Nicht-SP" -Kriteriumkonstanten gehören zu den Dingen, die wir nicht kopiert haben.

Die gute Nachricht ist, dass Sie immer noch diejenigen aus den Strukturen DSTU2 oder DSTU3 verwenden können, wenn Sie möchten, auch wenn Sie die Strukturen DSTU2-Hl7Org verwenden. Sie könnten dies mit etwas wie tun:

FhirContext ctx = FhirContext.forDstu2Hl7Org(); 
IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2"); 
Bundle bundle = client.search().forResource(MedicationOrder.class).where(ca.uhn.fhir.model.dstu2.resource.MedicationOrder.PATIENT.matches().value("duck")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute(); 
+0

Dank @James Agnew. Ich dachte, dass die Ressourcen-URL für eine bestimmte Ressource eindeutig ist. Wenn ich also eine Ressource aktualisiere/lösche, sollte sie in der WHERE-Klausel enthalten sein. Aber ich sehe, dass es in verfügbaren Suchparametern nichts dergleichen gibt. Gibt es einen Workaround dafür? –

+0

Sorry, ich bin mir nicht sicher, ob ich folge. Der angezeigte Code dient zum Suchen, nicht zum Erstellen oder Löschen. Sie könnten die Ergebnisse nehmen und sie löschen, wenn Sie wollten. Wenn Sie versuchen, einen bedingten Löschvorgang auszuführen, finden Sie ein Beispiel auf unserer Dokumentationsseite [hier] (http://hapifhir.io/doc_rest_client.html#Conditional_Deletes), und Sie können den gleichen Typ der where-Klausel verwenden. –

+0

Hallo, meine Anwendung erstellt MedicationOrder Ressourcen in einem Remote-FHIR-Server und die Möglichkeit, eine erstellte Ressource zu löschen, sollte ebenfalls verfügbar sein. Da ein Patient mehrere Bestellungen für verschiedene Verabreichungszeiten haben kann, dachte ich, dass eine bedingte Löschung mit dem idPart hier am besten ist. Dient das diesem Zweck? 'client.delete(). resourceById (" MedicationOrder "," ") .encodedXml(). prettyPrint(). execute();' –

Verwandte Themen