我有一个REST API,需要生成Fhir xml和Fhir json。我使用xsd生成了java类。 XML 100%工作。然而,json对象看起来很有趣,因为它包含了我想要抑制的属性。 我已在REST API上指定:@Produces({“application / json + fhir”,MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
XML输出:
<Bundle xmlns="http://hl7.org/fhir" xmlns:ns2="http://www.w3.org/1999/xhtml">
<meta>
<versionId value="urn:uuid:b6bfc48a-7b03-4bf3-ba94-d05a3b52979a"/>
<lastUpdated value="2017-07-10T08:32:44.670+02:00"/>
</meta>
<type value="collection"/>
<entry>
<resource>
<Coverage>
<id value="47000340200"/>
<subscriber>
<display value="AB SMITH"/>
</subscriber>
<period>
<start value="2017-01-01"/>
</period>
<payor>
<display value="XXX040TXX"/>
</payor>
<grouping>
<extension url="some URL">
<valueUri value="Hyperlink goes here"/>
</extension>
<group value="XXX"/>
<groupDisplay value="XXX MEDICAL FUND"/>
<plan value="OPT1"/>
<planDisplay value="OPTION1"/>
<class value="Active"/>
</grouping>
</Coverage>
</resource>
</entry>
JSON输出:
{"Bundle": {
"meta": {
"versionId": {"@value": "urn:uuid:b6bfc48a-7b03-4bf3-ba94-d05a3b52979a"},
"lastUpdated": {"@value": "2017-07-10T08:32:44.670+02:00"}
},
"type": {"@value": "collection"},
"entry": [
{"resource": {"Coverage": {
"id": {"@value": "47000340200"},
"subscriber": {"display": {"@value": "AB SMITH"}},
"period": {"start": {"@value": "2017-01-01"}},
"payor": {"display": {"@value": "XXX040TXX"}},
"grouping": {
"extension": {
"@url": "some URL",
"valueUri": {"@value": "Hyperlink goes here"}
},
"group": {"@value": "XXX"},
"groupDisplay": {"@value": "XXX MEDICAL FUND"},
"plan": {"@value": "OPT1"},
"planDisplay": {"@value": "OPTION1"}
}
}}}
]
}}
如何摆脱“@Value”属性?
答案 0 :(得分:1)
FHIR XML和JSON(和TTL)语法都根据其语法进行了调整,因此显示出略有不同的模型。如果您尝试在简单类型(日期,布尔值等)上运行具有扩展名的实例,您将在生成的对象模型中发现更显着的差异。如果您从XML模式,JSON模式或OWL生成对象模型,那么您将发现一个相当大的手工编码块,您必须在之后添加以生成和解析其他语法正确。另一种方法是使用现有的一个参考实现 - 那些为您处理转换并提供一大堆帮助类和方法,这些也可能对您有所帮助。可以在downloads页面上找到参考实现。