2016-07-25 13 views
0

バンドル内のリソースにアクセスする方法があるかどうかは不思議でした。バンドル内のリソースへのアクセスHL7-FHIR

すなわち

 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は、問題を引き起こしているものは現在あります。私はクライアントが(つまり、バンドル検索コマンド)生成されたIDを介して自分のレポートにアクセスしているが、diagnosticReportによって参照されている他のすべてのリソースにアクセスするために、バンドルからリソースを分離する方法や、バンドルから。あなたが望んでいた場合、あなたはまた、使用することができ返すために含まれて

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

は、あなただけのバンドルからDiagnosticReportリソースをつかむしたい場合は以下のような何かを行うことができるはずあなたに

答えて

2

ありがとうございましたサーバーへの1回の呼び出しで他のリンクされたリソース:

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

DiagnosticReport dr = bundle.getEntry()。get(0).getResource();リソースがDiagnosticReportに変換されないというエラーが表示される – Georgrio

+0

固定されていて、単にDiagnosticReportへのキャストを追加しなければならなかった – Georgrio

関連する問題