Add rendering for must support on types, profiles, targets
This commit is contained in:
parent
9d0fe1a081
commit
c2fb9e8fd3
|
@ -3245,14 +3245,22 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
tl = t;
|
tl = t;
|
||||||
if (t.hasTarget()) {
|
if (t.hasTarget()) {
|
||||||
c.getPieces().add(gen.new Piece(corePath+"references.html", t.getWorkingCode(), null));
|
c.getPieces().add(gen.new Piece(corePath+"references.html", t.getWorkingCode(), null));
|
||||||
|
if (isMustSupportDirect(t) && e.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This type must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
c.getPieces().add(gen.new Piece(null, "(", null));
|
c.getPieces().add(gen.new Piece(null, "(", null));
|
||||||
boolean tfirst = true;
|
boolean tfirst = true;
|
||||||
for (UriType u : t.getTargetProfile()) {
|
for (CanonicalType u : t.getTargetProfile()) {
|
||||||
if (tfirst)
|
if (tfirst)
|
||||||
tfirst = false;
|
tfirst = false;
|
||||||
else
|
else
|
||||||
c.addPiece(gen.new Piece(null, " | ", null));
|
c.addPiece(gen.new Piece(null, " | ", null));
|
||||||
genTargetLink(gen, profileBaseFileName, corePath, c, t, u.getValue());
|
genTargetLink(gen, profileBaseFileName, corePath, c, t, u.getValue());
|
||||||
|
if (isMustSupport(u) && e.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This target must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
c.getPieces().add(gen.new Piece(null, ")", null));
|
c.getPieces().add(gen.new Piece(null, ")", null));
|
||||||
if (t.getAggregation().size() > 0) {
|
if (t.getAggregation().size() > 0) {
|
||||||
|
@ -3289,6 +3297,10 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath)? corePath: "")+ref, t.getWorkingCode(), null)));
|
c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath)? corePath: "")+ref, t.getWorkingCode(), null)));
|
||||||
|
if (isMustSupport(p) && e.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This profile must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String tc = t.getWorkingCode();
|
String tc = t.getWorkingCode();
|
||||||
|
@ -3301,9 +3313,14 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
}
|
}
|
||||||
} else if (pkp != null && pkp.hasLinkFor(tc)) {
|
} else if (pkp != null && pkp.hasLinkFor(tc)) {
|
||||||
c.addPiece(checkForNoChange(t, gen.new Piece(pkp.getLinkFor(corePath, tc), tc, null)));
|
c.addPiece(checkForNoChange(t, gen.new Piece(pkp.getLinkFor(corePath, tc), tc, null)));
|
||||||
} else
|
} else {
|
||||||
c.addPiece(checkForNoChange(t, gen.new Piece(null, tc, null)));
|
c.addPiece(checkForNoChange(t, gen.new Piece(null, tc, null)));
|
||||||
}
|
}
|
||||||
|
if (isMustSupportDirect(t) && e.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This type must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
@ -3931,6 +3948,10 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
c.getPieces().add(gen.new Piece(corePath+"datatypes.html#canonical", "canonical", null));
|
c.getPieces().add(gen.new Piece(corePath+"datatypes.html#canonical", "canonical", null));
|
||||||
else
|
else
|
||||||
c.getPieces().add(gen.new Piece(corePath+"references.html#Reference", "Reference", null));
|
c.getPieces().add(gen.new Piece(corePath+"references.html#Reference", "Reference", null));
|
||||||
|
if (isMustSupportDirect(tr) && element.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This type must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
c.getPieces().add(gen.new Piece(null, "(", null));
|
c.getPieces().add(gen.new Piece(null, "(", null));
|
||||||
}
|
}
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
|
@ -3938,6 +3959,10 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
if (!first)
|
if (!first)
|
||||||
c.getPieces().add(gen.new Piece(null, " | ", null));
|
c.getPieces().add(gen.new Piece(null, " | ", null));
|
||||||
genTargetLink(gen, profileBaseFileName, corePath, c, tr, rt.getValue());
|
genTargetLink(gen, profileBaseFileName, corePath, c, tr, rt.getValue());
|
||||||
|
if (isMustSupport(rt) && element.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This target must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
if (first)
|
if (first)
|
||||||
|
@ -3956,20 +3981,23 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
choicerow.getCells().add(gen.new Cell());
|
choicerow.getCells().add(gen.new Cell());
|
||||||
choicerow.getCells().add(gen.new Cell(null, null, "", null, null));
|
choicerow.getCells().add(gen.new Cell(null, null, "", null, null));
|
||||||
choicerow.setIcon("icon_primitive.png", HierarchicalTableGenerator.TEXT_ICON_PRIMITIVE);
|
choicerow.setIcon("icon_primitive.png", HierarchicalTableGenerator.TEXT_ICON_PRIMITIVE);
|
||||||
choicerow.getCells().add(gen.new Cell(null, corePath+"datatypes.html#"+t, sd.getType(), null, null));
|
Cell c = gen.new Cell(null, corePath+"datatypes.html#"+t, sd.getType(), null, null);
|
||||||
// } else if (definitions.getConstraints().contthnsKey(t)) {
|
choicerow.getCells().add(c);
|
||||||
// ProfiledType pt = definitions.getConstraints().get(t);
|
if (isMustSupport(tr) && element.getMustSupport()) {
|
||||||
// choicerow.getCells().add(gen.new Cell(null, null, e.getName().replace("[x]", Utilities.capitalize(pt.getBaseType())), definitions.getTypes().containsKey(t) ? definitions.getTypes().get(t).getDefinition() : null, null));
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
// choicerow.getCells().add(gen.new Cell());
|
c.addStyledText(translate("sd.table", "This type must be supported"), "S", "white", "red", null, false);
|
||||||
// choicerow.getCells().add(gen.new Cell(null, null, "", null, null));
|
}
|
||||||
// choicerow.setIcon("icon_datatype.gif", HierarchicalTableGenerator.TEXT_ICON_DATATYPE);
|
|
||||||
// choicerow.getCells().add(gen.new Cell(null, definitions.getSrcFile(t)+".html#"+t.replace("*", "open"), t, null, null));
|
|
||||||
} else {
|
} else {
|
||||||
choicerow.getCells().add(gen.new Cell(null, null, tail(element.getPath()).replace("[x]", Utilities.capitalize(t)), sd.getDescription(), null));
|
choicerow.getCells().add(gen.new Cell(null, null, tail(element.getPath()).replace("[x]", Utilities.capitalize(t)), sd.getDescription(), null));
|
||||||
choicerow.getCells().add(gen.new Cell());
|
choicerow.getCells().add(gen.new Cell());
|
||||||
choicerow.getCells().add(gen.new Cell(null, null, "", null, null));
|
choicerow.getCells().add(gen.new Cell(null, null, "", null, null));
|
||||||
choicerow.setIcon("icon_datatype.gif", HierarchicalTableGenerator.TEXT_ICON_DATATYPE);
|
choicerow.setIcon("icon_datatype.gif", HierarchicalTableGenerator.TEXT_ICON_DATATYPE);
|
||||||
choicerow.getCells().add(gen.new Cell(null, pkp.getLinkFor(corePath, t), sd.getType(), null, null));
|
Cell c = gen.new Cell(null, pkp.getLinkFor(corePath, t), sd.getType(), null, null);
|
||||||
|
choicerow.getCells().add(c);
|
||||||
|
if (isMustSupport(tr) && element.getMustSupport()) {
|
||||||
|
c.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
c.addStyledText(translate("sd.table", "This type must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (tr.hasProfile()) {
|
if (tr.hasProfile()) {
|
||||||
Cell typeCell = choicerow.getCells().get(3);
|
Cell typeCell = choicerow.getCells().get(3);
|
||||||
|
@ -3982,6 +4010,10 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
typeCell.addPiece(gen.new Piece(null, "?gen-e2?", null));
|
typeCell.addPiece(gen.new Piece(null, "?gen-e2?", null));
|
||||||
else
|
else
|
||||||
typeCell.addPiece(gen.new Piece(psd.getUserString("path"), psd.getName(), psd.present()));
|
typeCell.addPiece(gen.new Piece(psd.getUserString("path"), psd.getName(), psd.present()));
|
||||||
|
if (isMustSupport(pt) && element.getMustSupport()) {
|
||||||
|
typeCell.addPiece(gen.new Piece(null, " ", null));
|
||||||
|
typeCell.addStyledText(translate("sd.table", "This profile must be supported"), "S", "white", "red", null, false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
typeCell.addPiece(gen.new Piece(null, ")", null));
|
typeCell.addPiece(gen.new Piece(null, ")", null));
|
||||||
|
@ -6177,6 +6209,32 @@ public class ProfileUtilities extends TranslatingUtilities {
|
||||||
return grp;
|
return grp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isMustSupportDirect(TypeRefComponent tr) {
|
||||||
|
return ("true".equals(ToolingExtensions.readStringExtension(tr, ToolingExtensions.EXT_MUST_SUPPORT)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isMustSupport(TypeRefComponent tr) {
|
||||||
|
if ("true".equals(ToolingExtensions.readStringExtension(tr, ToolingExtensions.EXT_MUST_SUPPORT))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (isMustSupport(tr.getProfile())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return isMustSupport(tr.getTargetProfile());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isMustSupport(List<CanonicalType> profiles) {
|
||||||
|
for (CanonicalType ct : profiles) {
|
||||||
|
if (isMustSupport(ct)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isMustSupport(CanonicalType profile) {
|
||||||
|
return "true".equals(ToolingExtensions.readStringExtension(profile, ToolingExtensions.EXT_MUST_SUPPORT));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -180,6 +180,7 @@ public class ToolingExtensions {
|
||||||
public static final String EXT_OLD_CONCEPTMAP_EQUIVALENCE = "http://hl7.org/fhir/1.0/StructureDefinition/extension-ConceptMap.element.target.equivalence";
|
public static final String EXT_OLD_CONCEPTMAP_EQUIVALENCE = "http://hl7.org/fhir/1.0/StructureDefinition/extension-ConceptMap.element.target.equivalence";
|
||||||
public static final String EXT_EXP_FRAGMENT = "http://hl7.org/fhir/tools/StructureDefinition/expansion-codesystem-fragment";
|
public static final String EXT_EXP_FRAGMENT = "http://hl7.org/fhir/tools/StructureDefinition/expansion-codesystem-fragment";
|
||||||
public static final String EXT_EXP_TOOCOSTLY = "http://hl7.org/fhir/StructureDefinition/valueset-toocostly";
|
public static final String EXT_EXP_TOOCOSTLY = "http://hl7.org/fhir/StructureDefinition/valueset-toocostly";
|
||||||
|
public static final String EXT_MUST_SUPPORT = "http://hl7.org/fhir/StructureDefinition/elementdefinition-type-must-support";
|
||||||
|
|
||||||
// specific extension helpers
|
// specific extension helpers
|
||||||
|
|
||||||
|
@ -335,6 +336,8 @@ public class ToolingExtensions {
|
||||||
return ((DecimalType) ex.getValue()).asStringValue();
|
return ((DecimalType) ex.getValue()).asStringValue();
|
||||||
if ((ex.getValue() instanceof MarkdownType))
|
if ((ex.getValue() instanceof MarkdownType))
|
||||||
return ((MarkdownType) ex.getValue()).getValue();
|
return ((MarkdownType) ex.getValue()).getValue();
|
||||||
|
if ((ex.getValue() instanceof PrimitiveType))
|
||||||
|
return ((PrimitiveType) ex.getValue()).primitiveValue();
|
||||||
if (!(ex.getValue() instanceof StringType))
|
if (!(ex.getValue() instanceof StringType))
|
||||||
return null;
|
return null;
|
||||||
return ((StringType) ex.getValue()).getValue();
|
return ((StringType) ex.getValue()).getValue();
|
||||||
|
|
Loading…
Reference in New Issue