diff --git a/docs/changelog.md b/docs/changelog.md index 392916cd..f7bd0f99 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,6 +1,7 @@ ## Unreleased - Fixed an NPE in the assertion route +- Generate valid XON when the FHIR Organization identifier has no system [165](https://github.com/i4mi/MobileAccessGateway/issues/165) ## 2024/05/15 v070 - support for multiple IDP's [128](https://github.com/i4mi/MobileAccessGateway/issues/128) diff --git a/src/main/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverter.java b/src/main/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverter.java index 3e941f03..9685a830 100644 --- a/src/main/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverter.java +++ b/src/main/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverter.java @@ -1000,17 +1000,21 @@ public Telecom transform(ContactPoint contactPoint) { } /** - * FHIR Organization -> XDS Organization + * FHIR Organization -> IPF Organization (XDS XON) * @param org * @return */ public org.openehealth.ipf.commons.ihe.xds.core.metadata.Organization transform(Organization org) { - org.openehealth.ipf.commons.ihe.xds.core.metadata.Organization result = new org.openehealth.ipf.commons.ihe.xds.core.metadata.Organization(); + final var result = new org.openehealth.ipf.commons.ihe.xds.core.metadata.Organization(); result.setOrganizationName(org.getName()); - Identifier identifier = org.getIdentifierFirstRep(); + final Identifier identifier = org.getIdentifierFirstRep(); if (identifier != null) { - result.setIdNumber(identifier.getValue()); - result.setAssigningAuthority(new AssigningAuthority(noPrefix(identifier.getSystem()))); + if (identifier.hasValue()) { + result.setIdNumber(identifier.getValue()); + } + if (identifier.hasSystem()) { + result.setAssigningAuthority(new AssigningAuthority(noPrefix(identifier.getSystem()))); + } } return result; } diff --git a/src/test/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverterTest.java b/src/test/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverterTest.java new file mode 100644 index 00000000..e45f71b4 --- /dev/null +++ b/src/test/java/ch/bfh/ti/i4mi/mag/mhd/iti65/Iti65RequestConverterTest.java @@ -0,0 +1,32 @@ +package ch.bfh.ti.i4mi.mag.mhd.iti65; + +import ca.uhn.hl7v2.HL7Exception; +import org.hl7.fhir.r4.model.Organization; +import org.junit.jupiter.api.Test; +import org.openehealth.ipf.commons.ihe.xds.core.metadata.Hl7v2Based; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * MobileAccessGateway + * + * @author Quentin Ligier + **/ +class Iti65RequestConverterTest { + + @Test + void testTransformOrganization() { + Iti65RequestConverter iti65RequestConverter = new Iti65RequestConverter(); + + final var org = new Organization(); + org.setName("Test"); + org.addIdentifier().setValue("1234"); + + var xon = iti65RequestConverter.transform(org); + assertEquals("Test^^^^^^^^^1234", Hl7v2Based.render(xon)); + + org.getIdentifierFirstRep().setSystem("urn:oid:1.2.3"); + xon = iti65RequestConverter.transform(org); + assertEquals("Test^^^^^&1.2.3&ISO^^^^1234", Hl7v2Based.render(xon)); + } +} \ No newline at end of file