public static void markStatus(CodeSystem cs, String wg, StandardsStatus status, String pckage, String fmm, String normativeVersion) throws FHIRException { 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); } } if (status != null) { StandardsStatus ss = ToolingExtensions.getStandardsStatus(cs); if (ss == null || ss.isLowerThan(status)) ToolingExtensions.setStandardsStatus(cs, status, normativeVersion); if (pckage != null) { if (!cs.hasUserData("ballot.package")) cs.setUserData("ballot.package", pckage); else if (!pckage.equals(cs.getUserString("ballot.package"))) if (!"infrastructure".equals(cs.getUserString("ballot.package"))) System.out.println("Code System "+cs.getUrl()+": ownership clash "+pckage+" vs "+cs.getUserString("ballot.package")); } if (status == StandardsStatus.NORMATIVE) { cs.setExperimental(false); cs.setStatus(PublicationStatus.ACTIVE); } } if (fmm != null) { String sfmm = ToolingExtensions.readStringExtension(cs, ToolingExtensions.EXT_FMM_LEVEL); if (Utilities.noString(sfmm) || Integer.parseInt(sfmm) < Integer.parseInt(fmm)) ToolingExtensions.setIntegerExtension(cs, ToolingExtensions.EXT_FMM_LEVEL, Integer.parseInt(fmm)); } }
private void addReferenceQuestions(QuestionnaireItemComponent group, ElementDefinition element, String path, List<CanonicalType> profileURL, List<QuestionnaireResponse.QuestionnaireResponseItemComponent> answerGroups) throws FHIRException { // var // rn : String; // i : integer; // q : TFhirQuestionnaireGroupQuestion; ToolingExtensions.addFhirType(group, "Reference"); QuestionnaireItemComponent q = addQuestion(group, QuestionnaireItemType.REFERENCE, path, "value", group.getText(), answerGroups); group.setText(null); CommaSeparatedStringBuilder rn = new CommaSeparatedStringBuilder(); for (UriType u : profileURL) if (u.getValue().startsWith("http://hl7.org/fhir/StructureDefinition/")) rn.append(u.getValue().substring(40)); if (rn.length() == 0) ToolingExtensions.addReferenceFilter(q, "subject=$subj&patient=$subj&encounter=$encounter"); else { ToolingExtensions.addAllowedResource(q, rn.toString()); ToolingExtensions.addReferenceFilter(q, "subject=$subj&patient=$subj&encounter=$encounter"); } for (QuestionnaireResponse.QuestionnaireResponseItemComponent ag : answerGroups) ag.setText(null); }
private boolean closed(ValueSet vs) { return !ToolingExtensions.findBooleanExtension(vs.getExpansion(), ToolingExtensions.EXT_UNCLOSED); }
public String getNamespace() { if (ToolingExtensions.hasExtension(definition, "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace")) return ToolingExtensions.readStringExtension(definition, "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace"); if (ToolingExtensions.hasExtension(structure, "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace")) return ToolingExtensions.readStringExtension(structure, "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace"); return FormatUtilities.FHIR_NS; }
private void addTimingQuestions(QuestionnaireItemComponent group, ElementDefinition element, String path, List<QuestionnaireResponse.QuestionnaireResponseItemComponent> answerGroups) throws FHIRException { ToolingExtensions.addFhirType(group, "Schedule"); addQuestion(group, QuestionnaireItemType.STRING, path, "text", "text:", answerGroups); addQuestion(group, QuestionnaireItemType.DATETIME, path, "date", "date:", answerGroups); QuestionnaireItemComponent q = addQuestion(group, QuestionnaireItemType.REFERENCE, path, "author", "author:", answerGroups); ToolingExtensions.addAllowedResource(q, "Patient"); ToolingExtensions.addAllowedResource(q, "Practitioner"); ToolingExtensions.addAllowedResource(q, "RelatedPerson"); }
@Override public Type getExampleValue(ElementDefinition ed) { if (ed.hasFixed()) return ed.getFixed(); for (Extension ex : ed.getExtension()) { String ndx = ToolingExtensions.readStringExtension(ex, "index"); Type value = ToolingExtensions.getExtension(ex, "exValue").getValue(); if (index.equals(ndx) && value != null) return value; } return null; } @Override
public static String getCSComment(ConceptDefinitionComponent c) { return readStringExtension(c, EXT_CS_COMMENT); } //
private void addAttachmentQuestions(QuestionnaireItemComponent group, ElementDefinition element, String path, List<QuestionnaireResponse.QuestionnaireResponseItemComponent> answerGroups) { ToolingExtensions.addFhirType(group, "Attachment"); // raise Exception.Create("addAttachmentQuestions not Done Yet"); }
ToolingExtensions.addMin(group, element.getMin()); group.setRepeats(!element.getMax().equals('1')); if (!element.getMax().equals("*")) ToolingExtensions.addMax(group, Integer.parseInt(element.getMax())); ToolingExtensions.addFlyOver(group, element.getDefinition()+" "+element.getComment()); else ToolingExtensions.addFlyOver(group, element.getDefinition());
ToolingExtensions.addLanguageTranslation(n, t.getLanguage(), t.getValue());
if (vs.getExpansion() == null) { result.setAnswerValueSet(vs.getUrl()); ToolingExtensions.addControl(result, "lookup"); } else { if (Utilities.noString(vs.getId())) {
private void checkElement(org.w3c.dom.Element element, String path, Property prop) throws FHIRFormatError { if (policy == ValidationPolicy.EVERYTHING) { if (empty(element) && FormatUtilities.FHIR_NS.equals(element.getNamespaceURI())) // this rule only applies to FHIR Content logError(line(element), col(element), path, IssueType.INVALID, "Element must have some content", IssueSeverity.ERROR); String ns = FormatUtilities.FHIR_NS; if (ToolingExtensions.hasExtension(prop.getDefinition(), "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace")) ns = ToolingExtensions.readStringExtension(prop.getDefinition(), "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace"); else if (ToolingExtensions.hasExtension(prop.getStructure(), "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace")) ns = ToolingExtensions.readStringExtension(prop.getStructure(), "http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace"); if (!element.getNamespaceURI().equals(ns)) logError(line(element), col(element), path, IssueType.INVALID, "Wrong namespace - expected '"+ns+"'", IssueSeverity.ERROR); } }
public static String getDisplayHint(Element def) { return readStringExtension(def, EXT_DISPLAY_HINT); }
private void addBinaryQuestions(QuestionnaireItemComponent group, ElementDefinition element, String path, List<QuestionnaireResponse.QuestionnaireResponseItemComponent> answerGroups) { ToolingExtensions.addFhirType(group, "binary"); // ? Lloyd: how to support binary content }
private boolean hasAnyExampleValues(StructureDefinition sd, String index) { for (ElementDefinition ed : sd.getSnapshot().getElement()) for (Extension ex : ed.getExtension()) { String ndx = ToolingExtensions.readStringExtension(ex, "index"); Extension exv = ToolingExtensions.getExtension(ex, "exValue"); if (exv != null) { Type value = exv.getValue(); if (index.equals(ndx) && value != null) return true; } } return false; }
ToolingExtensions.addFlyOver(group, element.getDefinition()); group.setRequired(element.getMin() > 0); if (element.getMin() > 0) ToolingExtensions.addMin(group, element.getMin()); group.setRepeats(!element.getMax().equals("1")); if (!element.getMax().equals("*")) ToolingExtensions.addMax(group, Integer.parseInt(element.getMax()));
private void addTimingQuestions(QuestionnaireItemComponent group, ElementDefinition element, String path, List<QuestionnaireResponse.QuestionnaireResponseItemComponent> answerGroups) throws FHIRException { ToolingExtensions.addFhirType(group, "Schedule"); addQuestion(group, QuestionnaireItemType.STRING, path, "text", "text:", answerGroups); addQuestion(group, QuestionnaireItemType.DATETIME, path, "date", "date:", answerGroups); QuestionnaireItemComponent q = addQuestion(group, QuestionnaireItemType.REFERENCE, path, "author", "author:", answerGroups); ToolingExtensions.addAllowedResource(q, "Patient"); ToolingExtensions.addAllowedResource(q, "Practitioner"); ToolingExtensions.addAllowedResource(q, "RelatedPerson"); }
ToolingExtensions.addLanguageTranslation(n, t.getLanguage(), t.getValue());
if (vs.getExpansion() == null) { result.setAnswerValueSet(vs.getUrl()); ToolingExtensions.addControl(result, "lookup"); } else { if (Utilities.noString(vs.getId())) {
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); StandardsStatus ss = ToolingExtensions.getStandardsStatus(vs); if (ss == null || ss.isLowerThan(status)) ToolingExtensions.setStandardsStatus(vs, status, normativeVersion); if (pckage != null) { if (!vs.hasUserData("ballot.package")) String sfmm = ToolingExtensions.readStringExtension(vs, ToolingExtensions.EXT_FMM_LEVEL); if (Utilities.noString(sfmm) || Integer.parseInt(sfmm) < Integer.parseInt(fmm)) ToolingExtensions.setIntegerExtension(vs, ToolingExtensions.EXT_FMM_LEVEL, Integer.parseInt(fmm));