diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java index 64441758a..f273cfe52 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/StructureDefinitionRenderer.java @@ -4985,7 +4985,7 @@ public class StructureDefinitionRenderer extends ResourceRenderer { HierarchicalTableGenerator gen = new HierarchicalTableGenerator(context, imageFolder, inlineGraphics, true, defFile, rc.getUniqueLocalPrefix()); gen.setTreelines(false); TableModel model = initElementTable(gen, corePath, true, profile.getId()+"e", true, TableGenerationMode.XHTML); - new ElementTable(context, groups, this).build(gen, model); + new ElementTable(context, groups, this, ToolingExtensions.hasExtensionValue(profile, ToolingExtensions.EXT_PROFILE_VIEW_HINT, "element-view-replace-cardinality")).build(gen, model); try { return gen.generate(model, imagePath, 0, outputTracker); diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java index 6dd3262ff..05b190f74 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/utils/ElementTable.java @@ -468,11 +468,13 @@ public class ElementTable { private RenderingContext context; private List groups; private DataRenderer dr; + private boolean replaceCardinality; - public ElementTable(RenderingContext context, List groups, DataRenderer dr) { + public ElementTable(RenderingContext context, List groups, DataRenderer dr, boolean replaceCardinality) { this.context = context; this.groups = groups; this.dr = dr; + this.replaceCardinality = replaceCardinality; } public void build(HierarchicalTableGenerator gen, TableModel table) throws FHIRFormatError, DefinitionException, IOException { @@ -542,7 +544,9 @@ public class ElementTable { cell.setInnerTable(true); cell.addText(e.getName()).addStyle("font-weight: bold"); cell.addPiece(gen.new Piece("br")); - if ("1".equals(e.min) && "1".equals(e.max)) { + if (!replaceCardinality) { + cell.addText("Cardinality: "+e.min+".."+e.max); + } else if ("1".equals(e.min) && "1".equals(e.max)) { cell.addText("Required"); } else if ("0".equals(e.min) && "*".equals(e.max)) { cell.addText("Optional, Repeating"); @@ -790,7 +794,9 @@ public class ElementTable { x.code().tx(name); String min = c.value.primitiveValue(); String max = c.value2.primitiveValue(); - if ("1".equals(min) && "1".equals(max)) { + if (!replaceCardinality) { + x.tx("has cardinality: "+min+".."+max); + } else if ("1".equals(min) && "1".equals(max)) { x.tx("is required"); } else if ("0".equals(min) && "*".equals(max)) { x.tx("is Optional and repeats"); diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/ToolingExtensions.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/ToolingExtensions.java index 4eba72976..377e1a4bd 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/ToolingExtensions.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/ToolingExtensions.java @@ -99,6 +99,7 @@ import org.hl7.fhir.r5.model.Property; import org.hl7.fhir.r5.model.Questionnaire.QuestionnaireItemComponent; import org.hl7.fhir.r5.model.Questionnaire.QuestionnaireItemType; import org.hl7.fhir.r5.model.StringType; +import org.hl7.fhir.r5.model.StructureDefinition; import org.hl7.fhir.r5.model.UriType; import org.hl7.fhir.r5.model.UrlType; import org.hl7.fhir.r5.model.ValueSet.ConceptReferenceComponent; @@ -1236,4 +1237,13 @@ public class ToolingExtensions { return res; } + public static boolean hasExtensionValue(StructureDefinition src, String url, String value) { + for (Extension ext : src.getExtension()) { + if (url.equals(ext.getUrl()) && ext.hasValue() && value.equals(ext.getValue().primitiveValue())) { + return true; + } + } + return false; + } + } \ No newline at end of file