Fhir json - 如何在java app中压制attributtes(例如@Value,@ id)

时间:2017-07-10 07:02:41

标签: json xml hl7-fhir

我有一个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”属性?

1 个答案:

答案 0 :(得分:1)

FHIR XML和JSON(和TTL)语法都根据其语法进行了调整,因此显示出略有不同的模型。如果您尝试在简单类型(日期,布尔值等)上运行具有扩展名的实例,您将在生成的对象模型中发现更显着的差异。如果您从XML模式,JSON模式或OWL生成对象模型,那么您将发现一个相当大的手工编码块,您必须在之后添加以生成和解析其他语法正确。另一种方法是使用现有的一个参考实现 - 那些为您处理转换并提供一大堆帮助类和方法,这些也可能对您有所帮助。可以在downloads页面上找到参考实现。