2015-07-02 37 views
1

我有一個FHIR設備資源,其中包含FHIR DeviceComponent資源。我用下面的高致病性禽流感FHIR代碼「插入」一個資源到其他:HAPI FHIR Json編碼器不處理包含資源

protected static void insertResourceInResouce(BaseResource resource, BaseResource resourceToInsert) 
{ 
    ContainedDt containedDt = new ContainedDt(); 
    ArrayList<IResource> resourceList = new ArrayList<IResource>(); 
    resourceList.add(resourceToInsert); 
    containedDt.setContainedResources(resourceList); 
    resource.setContained(containedDt); 
} 

根據Eclipse調試器插入正常工作。這個插入的資源將被添加到一個包中。當所有工作完成後,Eclipse調試器會顯示資源,其中包含的資源已正確放入捆綁包中。但是,在生成JSON字符串時,包含的資源不存在。編碼操作如下所示:

return fhirContext.newJsonParser().setPrettyPrint(true) 
      .encodeResourceToString(bundle); 

任何想法我做錯了什麼?

回答

1

事實證明,必須引用來自父資源的包含資源,使用「#」作爲引用的前綴。 如果有人這樣做,則包含的資源將出現在XML和JSON中。

無可否認,這個要求對我來說毫無意義。如果我不認爲它很重要,爲什麼我會在另一個範圍界定資源中包含資源?

+0

嗨,布賴恩,很高興你有這個工作!就像一個參考:這是必需的原因是,包含的資源只有在FHIR中從包含資源引用(或間接來自包含資源引用的另一個包含資源)纔有效。 HAPI會忽略無效的包含資源,以幫助人們避免依賴無效行爲,這些行爲可能無法在FHIR實施中移植。 –