Terug naar index  <<  Terug naar issues

 (jgz-issue-65) Aanpassen specificatie tbv jaxb-code
Wijzigingsverzoek (issue-id 2.16.840.1.113883.2.4.3.11.60.100.6.65)
Laatst toegekend aan 'Alexander Henket'

Issue Aanpassen specificatie tbv jaxb-code
Id jgz-issue-65
Type Wijzigingsverzoek
Status  Gesloten, toegekend
Prioriteit normaal
Object(en) Template A_CoverageNL [minimal] jgz-template-132 (2012‑08‑01)
tracking Tracking 2013‑09‑17 22:49:22 - status: Gesloten
  Auteur Alexander Henket
Omschrijving Uitgevoerd
arrowright Toegekend aan Alexander Henket (id#2) op 2013‑09‑17 22:49:03
  Auteur toegekend door Alexander Henket (id#2)
  Omschrijving Na enige mailwisseling wordt de oplossing dat de nullFlavor wordt verplaatst naar het element id onder coveredParty. Dit is binnen het internationale XML Schema dat wordt gedeeld door meerdere toepassingen en daardoor bij voorkeur niet aangepast wordt.
tracking Tracking 2013‑09‑17 22:47:02 - status: Open
  Auteur Rens Verhage
Omschrijving

Ik heb een probleem waar ik nog geen oplossing voor zie. Het gaat om een element dat niet in de eerste kwalificatieset zit, maar wij wel in het bericht zetten, namelijk element 53: Ziektekostenverzekering (ja/nee).

Volgens template A_Coverage_minimal moet ik o.a. het volgende in het bericht plaatsen:

<coveredParty typeCode="COV" xsi:nil="true" nullFlavor="NI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Zoals je wellicht weet maken wij gebruik van JAXB om onze Java objecten om te zetten naar de Hl7v3 XML. JAXB ondersteunt zogenaamde 'nillable' elementen, d.w.z. als zo'n element niet geïnitialiseerd (null) is dan genereert JAXB hiervoor toch een XML-element, maar dan met xsi:nil="true", precies zoals de specificatie hierboven het voorschrijft.

Echter, wanneer coveredParty null is, dan is er geen object en heb ik dus ook geen object waar ik attributen aan kan toevoegen, dus het attribuut typeCode="COV" kan ik niet genereren op deze manier. JAXB genereert dan:

<coveredParty xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Dit is volgens de schema's niet valide, aangezien coveredParty als element wel aanwezig is, maar het verplichte attribuut typeCode="COV" niet.

Om dit op te lossen moet ik in Java de coveredParty property initialiseren ipv null te laten. Dan kan ik de typeCode en nullFlavor erop zetten. JAXB genereert dan het volgende:

<coveredParty typeCode="COV" nullFlavor="NI" />

Nu is er een ander probleem. Omdat coveredParty in Java niet meer null is, genereert JAXB ook geen xsi:nil="true" meer. Gevolg is dat nu validatie tegen de schematron faalt, want ik moet xsi:nil="true" genereren.

Zoals je ziet bevind ik me in een Catch-22 en kan ik geen kant op. Kan in de schema's aangepast worden dat een typeCode niet meer verplicht is wanneer het element nil is? Of moet de schematron worden aangepast?