2016-07-25 18 views
0

Ich habe mich gerade gefragt, ob es eine Möglichkeit gibt, auf eine Ressource innerhalb eines Bundles zuzugreifen.Zugriff auf eine Ressource innerhalb eines Bundles HL7-FHIR

I.E

 FhirContext ctx = FhirContext.forDstu3(); 
     String baseSite= "http://fhirtest.uhn.ca/baseDstu3/"; 
     IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu3"); 
     System.out.println("Connected to server"); 
Bundle bundle = client.search().forResource(DiagnosticReport.class).where(DiagnosticReport.IDENTIFIER.exactly().identifier(id)).returnBundle(Bundle.class).execute(); 

     DiagnosticReport diag =client.read().resource(DiagnosticReport.class).withId(bundle.getEntry().get(0).getResource()); 
     String finalBundle=ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(diag); 
     System.out.println(finalBundle); 
     Observation obv = client.read().resource(Observation.class).withUrl(baseSite+diag.getResult().get(0).getReference()).execute(); 
     Sequence seq = client.read().resource(Sequence.class).withUrl(baseSite+obv.getRelated().get(0).getTarget()).execute(); 

diag ist derzeit, was Probleme verursacht. Da ich einen Client über eine ID, die generiert wird, auf seinen Bericht zugreifen kann (also den Befehl bundle search), aber auf alle anderen Ressourcen zugreifen kann, auf die diagnosebericht verweist, kann ich keine Möglichkeit finden, die Ressource vom Bundle zu trennen oder direkt zu greifen aus dem Bündel.

Danke

Antwort

2

Wenn Sie die DiagnosticReport Ressource aus dem Bündel nur greifen wollen, sollten Sie in der Lage sein, so etwas wie zu tun:

DiagnosticReport dr = (DiagnosticReport) bundle.getEntry().get(0).getResource(); 

Wenn Sie wollten, können Sie auch das nutzen könnten zurückkehren enthält andere verknüpfte Ressourcen in einem einzigen Aufruf an den Server:

Bundle bundle = client.search().forResource(DiagnosticReport.class) 
    .where(new StringClientParam("_id").matches().value("117376")) 
    .include(new Include("DiagnosticReport:patient")) 
    .include(new Include("DiagnosticReport:result")) 
    .returnBundle(Bundle.class) 
    .execute(); 
+0

Für DiagnosticReport dr = bundle.getEntry(). get (0) .getResource(); Ich erhalte den Fehler, dass die Ressource nicht in DiagnosticReport konvertiert werden kann. – Georgrio

+0

Behoben, musste nur einen Cast zu DiagnosticReport hinzufügen – Georgrio