diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/CodeSystemUtilities.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/CodeSystemUtilities.java index aa5074afc..3ff4c0560 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/CodeSystemUtilities.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/CodeSystemUtilities.java @@ -64,6 +64,7 @@ import org.hl7.fhir.r5.model.IntegerType; import org.hl7.fhir.r5.model.Meta; import org.hl7.fhir.r5.model.StringType; import org.hl7.fhir.r5.model.UriType; +import org.hl7.fhir.r5.utils.CanonicalResourceUtilities; import org.hl7.fhir.r5.utils.ToolingExtensions; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.MarkDownProcessor; @@ -504,7 +505,7 @@ public class CodeSystemUtilities extends TerminologyUtilities { if (wg != null) { if (!ToolingExtensions.hasExtension(cs, ToolingExtensions.EXT_WORKGROUP) || (Utilities.existsInList(ToolingExtensions.readStringExtension(cs, ToolingExtensions.EXT_WORKGROUP), "fhir", "vocab") && !Utilities.existsInList(wg, "fhir", "vocab"))) { - ToolingExtensions.setCodeExtension(cs, ToolingExtensions.EXT_WORKGROUP, wg); + CanonicalResourceUtilities.setHl7WG(cs, wg); } } if (status != null) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/ValueSetUtilities.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/ValueSetUtilities.java index 87511c494..da3236f95 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/ValueSetUtilities.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/terminologies/ValueSetUtilities.java @@ -64,6 +64,7 @@ import org.hl7.fhir.r5.model.ValueSet.ValueSetExpansionContainsComponent; import org.hl7.fhir.r5.model.ValueSet.ValueSetExpansionPropertyComponent; import org.hl7.fhir.r5.terminologies.CodeSystemUtilities.ConceptDefinitionComponentSorter; import org.hl7.fhir.r5.terminologies.CodeSystemUtilities.ConceptStatus; +import org.hl7.fhir.r5.utils.CanonicalResourceUtilities; import org.hl7.fhir.r5.utils.ToolingExtensions; import org.hl7.fhir.utilities.StandardsStatus; import org.hl7.fhir.utilities.Utilities; @@ -139,7 +140,7 @@ public class ValueSetUtilities extends TerminologyUtilities { if (wg != null) { if (!ToolingExtensions.hasExtension(vs, ToolingExtensions.EXT_WORKGROUP) || (!Utilities.existsInList(ToolingExtensions.readStringExtension(vs, ToolingExtensions.EXT_WORKGROUP), "fhir", "vocab") && Utilities.existsInList(wg, "fhir", "vocab"))) { - ToolingExtensions.setCodeExtension(vs, ToolingExtensions.EXT_WORKGROUP, wg); + CanonicalResourceUtilities.setHl7WG(vs, wg); } } if (status != null) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/CanonicalResourceUtilities.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/CanonicalResourceUtilities.java index 91d924f7b..df1f3b44a 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/CanonicalResourceUtilities.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/CanonicalResourceUtilities.java @@ -6,6 +6,8 @@ import org.hl7.fhir.r5.elementmodel.Element; import org.hl7.fhir.r5.model.CanonicalResource; import org.hl7.fhir.r5.model.CompartmentDefinition; import org.hl7.fhir.r5.model.Constants; +import org.hl7.fhir.r5.model.ContactDetail; +import org.hl7.fhir.r5.model.ContactPoint; import org.hl7.fhir.r5.model.ContactPoint.ContactPointSystem; import org.hl7.fhir.utilities.HL7WorkGroups; import org.hl7.fhir.utilities.VersionUtilities; @@ -14,17 +16,33 @@ import org.hl7.fhir.utilities.xml.XMLUtil; public class CanonicalResourceUtilities { public static void setHl7WG(CanonicalResource cr, String wgc) { + if ("http://hl7.org/fhir/days-of-week".equals(cr.getUrl())) { + System.out.println("!"); + } var wg = HL7WorkGroups.find(wgc); if (wg == null) { throw new Error("Unknown WG "+wgc); } ToolingExtensions.setCodeExtension(cr, ToolingExtensions.EXT_WORKGROUP, wg.getCode()); cr.setPublisher("HL7 International / "+wg.getName()); - cr.getContact().clear(); - cr.addContact().addTelecom().setSystem(ContactPointSystem.URL).setValue(wg.getLink()); + boolean found = false; + for (ContactDetail c : cr.getContact()) { + for (ContactPoint t : c.getTelecom()) { + if ((t.getSystem() == ContactPointSystem.URL) && wg.getLink().equals(t.getValue())) { + found = true; + } + } + } + if (!found) { + cr.addContact().addTelecom().setSystem(ContactPointSystem.URL).setValue(wg.getLink()); + } } public static void setHl7WG(CanonicalResource cr) { + if ("http://hl7.org/fhir/days-of-week".equals(cr.getUrl())) { + System.out.println("!"); + } + String wgc = ToolingExtensions.readStringExtension(cr, ToolingExtensions.EXT_WORKGROUP); if (wgc == null) { wgc = "fhir"; @@ -35,8 +53,17 @@ public class CanonicalResourceUtilities { } ToolingExtensions.setCodeExtension(cr, ToolingExtensions.EXT_WORKGROUP, wg.getCode()); cr.setPublisher("HL7 International / "+wg.getName()); - cr.getContact().clear(); - cr.addContact().addTelecom().setSystem(ContactPointSystem.URL).setValue(wg.getLink()); + boolean found = false; + for (ContactDetail c : cr.getContact()) { + for (ContactPoint t : c.getTelecom()) { + if ((t.getSystem() == ContactPointSystem.URL) && wg.getLink().equals(t.getValue())) { + found = true; + } + } + } + if (!found) { + cr.addContact().addTelecom().setSystem(ContactPointSystem.URL).setValue(wg.getLink()); + } } public static void setHl7WG(Element res, String code) {