From bb9064a8cc94fd08d13730e25a47fa5507da535b Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Fri, 24 Nov 2023 08:50:46 +1100 Subject: [PATCH] fix NPE on some resources --- .../hl7/fhir/r5/renderers/DataRenderer.java | 33 ++++++++++++++++++- .../r5/renderers/utils/DirectWrappers.java | 10 ++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java index 7c4caf251..8c47310b7 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/DataRenderer.java @@ -67,6 +67,7 @@ import org.hl7.fhir.r5.model.Timing; import org.hl7.fhir.r5.model.Timing.EventTiming; import org.hl7.fhir.r5.model.Timing.TimingRepeatComponent; import org.hl7.fhir.r5.model.Timing.UnitsOfTime; +import org.hl7.fhir.r5.model.TriggerDefinition; import org.hl7.fhir.r5.model.UriType; import org.hl7.fhir.r5.model.UsageContext; import org.hl7.fhir.r5.model.ValueSet; @@ -1234,7 +1235,7 @@ public class DataRenderer extends Renderer implements CodeResolver { protected void renderIdentifier(XhtmlNode x, Identifier ii) { if (ii.hasType()) { if (ii.getType().hasText()) - x.tx(ii.getType().getText()); + x.tx(ii.getType().getText()+":"); else if (ii.getType().hasCoding() && ii.getType().getCoding().get(0).hasDisplay()) x.tx(ii.getType().getCoding().get(0).getDisplay()+":"); else if (ii.getType().hasCoding() && ii.getType().getCoding().get(0).hasCode()) @@ -1577,6 +1578,36 @@ public class DataRenderer extends Renderer implements CodeResolver { render(x, u.getValue()); } + + public void renderTriggerDefinition(XhtmlNode x, TriggerDefinition td) throws FHIRFormatError, DefinitionException, IOException { + XhtmlNode tbl = x.table("grid"); + + XhtmlNode tr = tbl.tr(); + tr.td().b().tx("Type"); + tr.td().tx(td.getType().getDisplay()); + + if (td.hasName()) { + tr = tbl.tr(); + tr.td().b().tx("Name"); + tr.td().tx(td.getType().getDisplay()); + } + if (td.hasCode()) { + tr = tbl.tr(); + tr.td().b().tx("Code"); + renderCodeableConcept(tr.td(), td.getCode()); + } + if (td.hasTiming()) { + tr = tbl.tr(); + tr.td().b().tx("Timing"); + render(tr.td(), td.getTiming()); + } + if (td.hasCondition()) { + tr = tbl.tr(); + tr.td().b().tx("Condition"); + renderExpression(tr.td(), td.getCondition()); + } + } + public void renderDataRequirement(XhtmlNode x, DataRequirement dr) throws FHIRFormatError, DefinitionException, IOException { XhtmlNode tbl = x.table("grid"); XhtmlNode tr = tbl.tr(); diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/DirectWrappers.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/DirectWrappers.java index 6401d5bfe..37304c3a9 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/DirectWrappers.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/DirectWrappers.java @@ -219,8 +219,14 @@ public class DirectWrappers { Property family = b.getChildByName("family"); Property given = wrapped.getChildByName("given"); String s = given != null && given.hasValues() ? given.getValues().get(0).primitiveValue() : ""; - if (family != null && family.hasValues()) - s = s + " " + family.getValues().get(0).primitiveValue().toUpperCase(); + if (family != null && family.hasValues()) { + String v = family.getValues().get(0).primitiveValue(); + if (v == null) { + s = s + " " + "??"; + } else { + s = s + " " + v.toUpperCase(); + } + } return s; } else { Property p = b.getChildByName("name");