From 9195d7ae8b4404e876795279cf4a910385eefb3c Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Thu, 6 Oct 2022 12:54:45 +1100 Subject: [PATCH] rendering improvements --- .../AdditionalBindingsRenderer.java | 20 ++++++++++++++----- .../fhir/r5/conformance/ProfileUtilities.java | 2 ++ .../4.0.1/snomed.cache | 11 ++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/AdditionalBindingsRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/AdditionalBindingsRenderer.java index ffdfb9d9b..f4cf40a0b 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/AdditionalBindingsRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/AdditionalBindingsRenderer.java @@ -30,6 +30,7 @@ public class AdditionalBindingsRenderer { private String purpose; private String valueSet; private String doco; + private String docoShort; private UsageContext usage; private boolean any; private boolean unchanged; @@ -74,6 +75,7 @@ public class AdditionalBindingsRenderer { abr.purpose = ext.getExtensionString("purpose"); abr.valueSet = ext.getExtensionString("valueSet"); abr.doco = ext.getExtensionString("documentation"); + abr.docoShort = ext.getExtensionString("shortDoco"); abr.usage = (ext.hasExtension("usage")) && ext.getExtensionByUrl("usage").hasValueUsageContext() ? ext.getExtensionByUrl("usage").getValueUsageContext() : null; abr.any = "any".equals(ext.getExtensionString("scope")); abr.unchanged = ext.hasUserData(ProfileUtilities.DERIVATION_EQUALS); @@ -102,12 +104,12 @@ public class AdditionalBindingsRenderer { } } - private void render(List children, boolean doDoco) throws FHIRFormatError, DefinitionException, IOException { + public void render(List children, boolean fullDoco) throws FHIRFormatError, DefinitionException, IOException { boolean doco = false; boolean usage = false; boolean any = false; for (AdditionalBindingDetail binding : bindings) { - doco = doco || (doDoco && binding.doco != null); + doco = doco || (fullDoco && binding.doco != null) || (!fullDoco && binding.docoShort != null) ; usage = usage || binding.usage != null; any = any || binding.any; } @@ -155,8 +157,9 @@ public class AdditionalBindingsRenderer { } } if (doco) { - if (binding.doco != null) { - String d = md.processMarkdown("Binding.description", binding.doco); + String ds = fullDoco ? binding.doco : binding.docoShort; + if (ds != null) { + String d = fullDoco ? md.processMarkdown("Binding.description", ds) : ds; tr.td().style("font-size: 11px").innerHTML(d); } else { tr.td().style("font-size: 11px"); @@ -174,7 +177,10 @@ public class AdditionalBindingsRenderer { td.ah(corePath+"extension-elementdefinition-minvalueset.html", "The minimum allowable value set - any conformant system SHALL support all these codes").tx("Min Binding"); break; case "conformance" : - td.ah(corePath+"terminologies.html#strength", "Validators will check this binding (strength = required)").tx("Validation Criteria"); + td.ah(corePath+"terminologies.html#strength", "Validators will check this binding (strength = required)").tx("Validation Binding"); + break; + case "candidate" : + td.ah(corePath+"terminologies.html#strength", "This is a candidate binding that constraints on this profile may consider (see doco)").tx("Candidate Validation Binding"); break; case "current" : td.span(null, "New records are required to use this value set, but legacy records may use other codes").tx("Required"); @@ -203,5 +209,9 @@ public class AdditionalBindingsRenderer { return br; } + public boolean hasBindings() { + return !bindings.isEmpty(); + } + } diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/ProfileUtilities.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/ProfileUtilities.java index b85af20fe..c6090619f 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/ProfileUtilities.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/conformance/ProfileUtilities.java @@ -4982,6 +4982,8 @@ public class ProfileUtilities extends TranslatingUtilities { b.setDescription(o.getDescription()); b.getDescriptionElement().setUserData(DERIVATION_EQUALS, o.getDescriptionElement()); } + // todo: derivation? + b.getExtension().addAll(binding.getExtension()); return b; } diff --git a/org.hl7.fhir.validation/src/test/resources/txCache/org.hl7.fhir.validation/4.0.1/snomed.cache b/org.hl7.fhir.validation/src/test/resources/txCache/org.hl7.fhir.validation/4.0.1/snomed.cache index f8695617c..b1c215fa8 100644 --- a/org.hl7.fhir.validation/src/test/resources/txCache/org.hl7.fhir.validation/4.0.1/snomed.cache +++ b/org.hl7.fhir.validation/src/test/resources/txCache/org.hl7.fhir.validation/4.0.1/snomed.cache @@ -1853,3 +1853,14 @@ v: { "error" : "Unable to find code 56248011000036107 in http://snomed.info/sct (version http://snomed.info/sct/900000000000207008/version/20220731); The code \"56248011000036107\" is not valid in the system http://snomed.info/sct; The code provided (http://snomed.info/sct#56248011000036107) is not valid in the value set 'All codes known to the system' (from http://tx.fhir.org/r4)" } ------------------------------------------------------------------------------------- +{"code" : { + "system" : "http://snomed.info/sct", + "code" : "361055000", + "display" : "Misuses drugs (finding)" +}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}#### +v: { + "display" : "Misuses drugs", + "code" : "361055000", + "system" : "http://snomed.info/sct" +} +-------------------------------------------------------------------------------------