Wie implementieren von Search-operation für eine Beobachtung Resource Provider für Hapi Fhir server?

Ich versuche zu verstehen, wie der RESTful-Server Hapi Fhir funktioniert und ich wollte mit der Umsetzung einiger @Search-Methoden für die Beobachtung von Ressourcen.

Momentan, habe ich diese @Lese-operation, die erfolgreich arbeiten, wenn Sie versuchen, auf die Ressource zuzugreifen (wie dieser: http://localhost:8080/NewFHIRServer/fhir) aus dem browser:

@Read()
public Observation readObservationById(@IdParam IdDt theId) {
    for (Entry<Long, Deque<Observation>> entry : myPatientIdToObservations.entrySet())
    {
        for (Observation obs : entry.getValue()) {
            if (obs.getId().equals(theId)) {
                return obs;
            }
        }
    }

    throw new ResourceNotFoundException(theId);
}    

Jedoch, wenn ich versuche, etwas ähnliches zu tun für die @Search-operation, bin ich immer Fehler. Ich möchte in der Lage sein zu Holen Sie sich die Antwort durch die Suche ausgeführt, wie diese (oder ähnliche):

Bundle response = client
        .search()
        .forResource(Observation.class)
        .where(Observation.SUBJECT.hasId("Patient/1"))
        .execute();   

Welche Parameter benötige ich, um in meinen @Read-Methode, um dies zu ermöglichen? Den Fehler erhalte ich jetzt die folgende:

Den FHIR Endpunkt auf diesem server nicht weiß, wie man Griff BEKOMMEN
Betrieb[Beobachtung] mit den Parametern [[Betreff]]

und es ist offensichtlich, warum es nicht funktioniert, weil mein header sieht wie folgt aus:

public Observation searchObservationById(@IdParam IdDt theId)     

Ich schaue mir Beispiele, um zu versuchen, um dies herauszufinden, und ich verstehe nicht ganz, was die syntax in diesem parameter bedeutet:

public List<Patient> getPatient(@RequiredParam(name = Patient.SP_FAMILY) StringParam theFamilyName)...

Wie würden Sie die Abfrage, um das Letzte Beispiel?

Danke

InformationsquelleAutor randombee | 2016-03-08

 

One Reply
  1. 1

    Eine Suchfunktion zu implementieren, die Methode, die Sie verwenden müssen @Search statt @Read auf die Methode. Dann verwenden Sie null-oder-mehr-Parameter versehen mit @OptionalParam oder @RequiredParam.

    Um Ihren konkreten Beispiel funktioniert, müssen Sie eine such-Methode, die implementiert die _id parameter für die Suche, z.B.


    @Search
    public List<Patient> getPatient(@RequiredParam(name = Patient.SP_RES_ID) StringParam theId) {
    }

    • Ich habe in der Lage zu führen Sie Suchanfragen für die Patienten, indem Sie auf Ihrer github-Dokumentation, aber ich habe Schwierigkeiten, das gleiche tun für Beobachtungen, da ich nicht weiß, was in dem parameter der .wo (…), um das bundle, wenn ich Abfrage und ich weiß nicht was in dem Kopf von meinem @Search-Funktion (zum Beispiel zur Abfrage aller Beobachtungen mit einem bestimmten Patienten-id). Gibt es irgendeine Art von Dokumentation, die ich verwenden können, um herauszufinden, über diese?
    • Die Suche nach Instanzen der Ressource „A“, wo Sie wollen, zu finden, entspricht, auf einen Verweis auf die Ressource „B“ (z.B. alle Beobachtungen mit einem bestimmten Thema), die Sie verwenden müssen ReferenceParam. E. g. @OptionalParam(name=“Betreff“ ) ReferenceParam theSubject

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.