Fhir json - как подавить атрибуты (например, @Value, @id) в Java-приложении
У меня есть REST API, который должен производить как Fhir xml, так и Fhir json. Я сгенерировал Java-классы, используя xsd. 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 ответ
Синтаксисы FHIR XML и JSON (и TTL) настроены на их синтаксис и, таким образом, демонстрируют немного другую модель. Если вы попытаетесь запустить экземпляр с расширениями простого типа (дата, логическое значение и т. Д.), Вы обнаружите еще более существенные различия в вашей созданной объектной модели. Если вы сгенерируете свою объектную модель из XML-схемы, JSON-схемы или OWL, вы обнаружите, что есть приличный кусок ручного кодирования, который вы должны будете добавить впоследствии, чтобы генерировать и правильно анализировать другие синтаксисы. Альтернативой является использование одной из существующих эталонных реализаций - они обрабатывают преобразование для вас и предоставляют целый набор вспомогательных классов и методов, которые также могут быть полезны для вас. Справочные реализации можно найти на странице загрузок.