Search in sources :

Example 76 with DomainResource

use of org.hl7.fhir.r4b.model.DomainResource in project odm2fhir by num-codex.

the class StudyEvent method map.

public Stream<DomainResource> map(Subject subject, StudyEventData studyEventData) {
    this.subject = subject;
    var encounter = new Encounter();
    if (ENVIRONMENT.getProperty("fhir.encounters.enabled", Boolean.class, true) && studyEventData.getStudyEventOID().matches("GECCOVISIT|Event.\\d_fall_arm_1")) {
        var value = format("%s-%s.%s", studyEventData.getSubjectData().getSubjectKey(), studyEventData.getStudyEventOID(), studyEventData.getStudyEventRepeatKey());
        if (!ENVIRONMENT.containsProperty("debug")) {
            value = sha256Hex(value);
        }
        var encounterIdentifier = new Identifier().setSystem(getIdentifierSystem(ENCOUNTER)).setValue(value).setAssigner(subject.getOrganizationReference());
        encounter.setStatus(UNKNOWN).setClass_(new Coding(IMP.getSystem(), IMP.toCode(), IMP.getDisplay())).addIdentifier(encounterIdentifier).setId(sha256Hex(encounterIdentifier.getSystem() + encounterIdentifier.getValue()));
        encounterReference = new Reference(format("%s/%s", ENCOUNTER.toCode(), encounter.getId()));
    }
    var domainResources = studyEventData.getFormData().stream().flatMap(formData -> forms.stream().map(form -> form.map(this, formData))).flatMap(Function.identity());
    return encounter.isEmpty() ? domainResources : Stream.concat(Stream.of(encounter), domainResources.peek(this::setEncounter));
}
Also used : Imaging(de.difuture.uds.odm2fhir.fhir.mapper.imaging.Imaging) Therapy(de.difuture.uds.odm2fhir.fhir.mapper.therapy.Therapy) Getter(lombok.Getter) StudyEnrollmentInclusionCriteria(de.difuture.uds.odm2fhir.fhir.mapper.study_enrollment.StudyEnrollmentInclusionCriteria) Identifier(org.hl7.fhir.r4.model.Identifier) CONSENT(org.hl7.fhir.r4.model.codesystems.ResourceTypes.CONSENT) ENCOUNTER(org.hl7.fhir.r4.model.codesystems.ResourceTypes.ENCOUNTER) StudyEventData(de.difuture.uds.odm2fhir.odm.model.StudyEventData) Reference(org.hl7.fhir.r4.model.Reference) Function(java.util.function.Function) ENVIRONMENT(de.difuture.uds.odm2fhir.util.EnvironmentProvider.ENVIRONMENT) ReflectionUtils.invokeMethod(org.springframework.util.ReflectionUtils.invokeMethod) Encounter(org.hl7.fhir.r4.model.Encounter) MEDICATIONSTATEMENT(org.hl7.fhir.r4.model.codesystems.ResourceTypes.MEDICATIONSTATEMENT) Consent(de.difuture.uds.odm2fhir.fhir.mapper.consent.Consent) Complications(de.difuture.uds.odm2fhir.fhir.mapper.complications.Complications) OnsetOfIllness(de.difuture.uds.odm2fhir.fhir.mapper.onset_of_illness.OnsetOfIllness) IdentifierHelper.getIdentifierSystem(de.difuture.uds.odm2fhir.fhir.util.IdentifierHelper.getIdentifierSystem) Anamnesis(de.difuture.uds.odm2fhir.fhir.mapper.anamnesis.Anamnesis) Demographics(de.difuture.uds.odm2fhir.fhir.mapper.demographics.Demographics) ReflectionUtils.findMethod(org.springframework.util.ReflectionUtils.findMethod) UNKNOWN(org.hl7.fhir.r4.model.Encounter.EncounterStatus.UNKNOWN) DomainResource(org.hl7.fhir.r4.model.DomainResource) OutcomeAtDischarge(de.difuture.uds.odm2fhir.fhir.mapper.outcome_at_discharge.OutcomeAtDischarge) String.format(java.lang.String.format) EpidemiologicalFactors(de.difuture.uds.odm2fhir.fhir.mapper.epidemiological_factors.EpidemiologicalFactors) VitalSigns(de.difuture.uds.odm2fhir.fhir.mapper.vital_signs.VitalSigns) List(java.util.List) Stream(java.util.stream.Stream) DigestUtils.sha256Hex(org.apache.commons.codec.digest.DigestUtils.sha256Hex) Coding(org.hl7.fhir.r4.model.Coding) StringUtils.equalsAny(org.apache.commons.lang3.StringUtils.equalsAny) IMP(org.hl7.fhir.r4.model.codesystems.V3ActCode.IMP) Medication(de.difuture.uds.odm2fhir.fhir.mapper.medication.Medication) LaboratoryValues(de.difuture.uds.odm2fhir.fhir.mapper.laboratory_values.LaboratoryValues) Symptoms(de.difuture.uds.odm2fhir.fhir.mapper.symptoms.Symptoms) Identifier(org.hl7.fhir.r4.model.Identifier) Coding(org.hl7.fhir.r4.model.Coding) Reference(org.hl7.fhir.r4.model.Reference) Encounter(org.hl7.fhir.r4.model.Encounter)

Example 77 with DomainResource

use of org.hl7.fhir.r4b.model.DomainResource in project kindling by HL7.

the class ProfileGenerator method makeExtensionSlice.

private ElementDefinition makeExtensionSlice(String extensionName, StructureDefinition p, StructureDefinitionSnapshotComponent c, ElementDefn e, String path) throws URISyntaxException, Exception {
    ElementDefinition ex = createBaseDefinition(p, path, definitions.getBaseResources().get("DomainResource").getRoot().getElementByName(definitions, extensionName, false, false, null));
    c.getElement().add(ex);
    if (!ex.hasBase())
        ex.setBase(new ElementDefinitionBaseComponent());
    ex.getBase().setPath("Element.extension");
    ex.getBase().setMin(0);
    ex.getBase().setMax("*");
    ElementDefinitionConstraintComponent inv = ex.addConstraint();
    inv.setKey("ext-1");
    inv.setSeverity(ConstraintSeverity.ERROR);
    inv.setHuman("Must have either extensions or value[x], not both");
    inv.setExpression("extension.exists() != value.exists()");
    inv.setXpath("exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])");
    inv.setSource("http://hl7.org/fhir/StructureDefinition/Extension");
    return ex;
}
Also used : ElementDefinition(org.hl7.fhir.r5.model.ElementDefinition) ElementDefinitionBaseComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBaseComponent) ElementDefinitionConstraintComponent(org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionConstraintComponent)

Example 78 with DomainResource

use of org.hl7.fhir.r4b.model.DomainResource in project kindling by HL7.

the class ProfileGenerator method defineElement.

/**
 * note: snapshot implies that we are generating a resource or a data type; for other profiles, the snapshot is generated elsewhere
 * @param isInterface
 */
private ElementDefinition defineElement(Profile ap, StructureDefinition p, List<ElementDefinition> elements, ElementDefn e, String path, Set<String> slices, List<SliceHandle> parentSlices, SnapShotMode snapshot, boolean root, String defType, String inheritedType, boolean defaults) throws Exception {
    boolean handleDiscriminator = true;
    if (!Utilities.noString(e.getProfileName()) && !e.getDiscriminator().isEmpty() && !slices.contains(path)) {
        handleDiscriminator = false;
        // hey, we jumped straight into the slices with setting up the slicing (allowed in the spreadsheets, but not otherwise)
        ElementDefinition slicer = new ElementDefinition();
        elements.add(slicer);
        slicer.setId(path);
        slicer.setPath(path);
        processDiscriminator(e, path, slicer);
        if (e.getMaxCardinality() != null)
            slicer.setMax(e.getMaxCardinality() == Integer.MAX_VALUE ? "*" : e.getMaxCardinality().toString());
        slices.add(path);
    }
    // todo for task 12259
    // if (ap != null) {
    // String base = isImplicitTypeConstraint(path);
    // if (base != null) {
    // ElementDefinition typeConstrainer = new ElementDefinition(ElementDefinition.NOT_MODIFIER, ElementDefinition.NOT_IN_SUMMARY);
    // elements.add(typeConstrainer);
    // typeConstrainer.setId(base);
    // typeConstrainer.setPath(base);
    // String type = path.substring(base.length()-3);
    // if (definitions.hasPrimitiveType(Utilities.uncapitalize(type)))
    // type = Utilities.uncapitalize(type);
    // typeConstrainer.addType().setCode(type);
    // }
    // }
    ElementDefinition ce = new ElementDefinition(defaults, ElementDefinition.NOT_MODIFIER, ElementDefinition.NOT_IN_SUMMARY);
    elements.add(ce);
    if (e.getStandardsStatus() != null)
        ToolingExtensions.setStandardsStatus(ce, e.getStandardsStatus(), e.getNormativeVersion());
    ce.setId(path);
    ce.setPath(path);
    if (e.isXmlAttribute())
        ce.addRepresentation(PropertyRepresentation.XMLATTR);
    List<SliceHandle> myParents = new ArrayList<ProfileGenerator.SliceHandle>();
    myParents.addAll(parentSlices);
    // which holds Slicing information)
    if (e.hasDescriminator() || !Utilities.noString(e.getProfileName())) {
        if (e.getDiscriminator().size() > 0 && !slices.contains(path) && handleDiscriminator) {
            processDiscriminator(e, path, ce);
            slices.add(path);
        }
        if (!Utilities.noString(e.getProfileName())) {
            SliceHandle hnd = new SliceHandle();
            // though this it not used?
            hnd.name = path;
            myParents.add(hnd);
            if (path.contains(".")) {
                // We don't want a slice name on the root
                ce.setSliceName(e.getProfileName());
                ce.setId(ce.getId() + ":" + e.getProfileName());
            }
        }
    }
    if (e.isTranslatable()) {
        ce.addExtension(BuildExtensions.EXT_TRANSLATABLE, new BooleanType(true));
    }
    if (Utilities.existsInList(ce.getPath(), "Element.extension", "DomainResource.extension", "DomainResource.modifierExtension") && !ce.hasSlicing() && !ce.hasSliceName()) {
        ce.getSlicing().setDescription("Extensions are always sliced by (at least) url").setRules(SlicingRules.OPEN).addDiscriminator().setType(DiscriminatorType.VALUE).setPath("url");
    }
    if (!Utilities.noString(inheritedType) && snapshot != SnapShotMode.None) {
        ElementDefn inh = definitions.getElementDefn(inheritedType);
        buildDefinitionFromElement(path, ce, inh, ap, p, inheritedType, definitions.getBaseResources().containsKey(inheritedType) && definitions.getBaseResources().get(inheritedType).isInterface());
    } else if (path.contains(".") && Utilities.noString(e.typeCode()) && snapshot != SnapShotMode.None) {
        addElementConstraints(defType, ce);
    }
    buildDefinitionFromElement(path, ce, e, ap, p, null, false);
    if (!Utilities.noString(e.getStatedType())) {
        ToolingExtensions.addStringExtension(ce, "http://hl7.org/fhir/StructureDefinition/structuredefinition-explicit-type-name", e.getStatedType());
    }
    if (e.isNoBindingAllowed()) {
        ToolingExtensions.addBooleanExtension(ce, BuildExtensions.EXT_NO_BINDING, true);
    }
    if (!root) {
        if (e.typeCode().startsWith("@")) {
            ce.setContentReference("#" + getIdForPath(elements, e.typeCode().substring(1)));
        } else if (Utilities.existsInList(path, "Element.id", "Extension.url") || path.endsWith(".id")) {
            TypeRefComponent tr = ce.addType();
            tr.getFormatCommentsPre().add("Note: special primitive values have a FHIRPath system type. e.g. this is compiler magic (j)");
            tr.setCode(Constants.NS_SYSTEM_TYPE + "String");
            if (path.equals("Extension.url")) {
                ToolingExtensions.addUriExtension(tr, ToolingExtensions.EXT_FHIR_TYPE, "uri");
            } else if (p.getKind() == StructureDefinitionKind.RESOURCE) {
                ToolingExtensions.addUriExtension(tr, ToolingExtensions.EXT_FHIR_TYPE, "id");
            } else {
                ToolingExtensions.addUriExtension(tr, ToolingExtensions.EXT_FHIR_TYPE, "string");
            }
        } else {
            List<TypeRef> expandedTypes = new ArrayList<TypeRef>();
            for (TypeRef t : e.getTypes()) {
                // Expand any Resource(A|B|C) references
                if (t.hasParams() && !Utilities.existsInList(t.getName(), "Reference", "canonical", "CodeableReference")) {
                    throw new Exception("Only resource types can specify parameters.  Path " + path + " in profile " + p.getName());
                }
                if (t.getParams().size() > 1) {
                    if (t.getProfile() != null && t.getParams().size() != 1) {
                        throw new Exception("Cannot declare profile on a resource reference declaring multiple resource types.  Path " + path + " in profile " + p.getName());
                    }
                    for (String param : t.getParams()) {
                        if (definitions.hasLogicalModel(param)) {
                            for (String pn : definitions.getLogicalModel(param).getImplementations()) {
                                TypeRef childType = new TypeRef(t.getName());
                                childType.getParams().add(pn);
                                childType.getAggregations().addAll(t.getAggregations());
                                expandedTypes.add(childType);
                            }
                        } else {
                            TypeRef childType = new TypeRef(t.getName());
                            childType.getParams().add(param);
                            childType.getAggregations().addAll(t.getAggregations());
                            expandedTypes.add(childType);
                        }
                    }
                } else if (t.isWildcardType()) {
                    // this list is filled out manually because it may be running before the types referred to have been loaded
                    for (String n : TypesUtilities.wildcardTypes(version.toString())) expandedTypes.add(new TypeRef(n));
                } else if (!t.getName().startsWith("=")) {
                    if (definitions.isLoaded() && (!definitions.hasResource(t.getName()) && !definitions.hasType(t.getName()) && !definitions.hasElementDefn(t.getName()) && !definitions.getBaseResources().containsKey(t.getName()) && !t.getName().equals("xhtml"))) {
                        throw new Exception("Bad Type '" + t.getName() + "' at " + path + " in profile " + p.getUrl());
                    }
                    expandedTypes.add(t);
                }
            }
            if (expandedTypes.isEmpty()) {
                if (defType != null)
                    ce.addType().setCode(defType);
            } else
                for (TypeRef t : expandedTypes) {
                    String profile = null;
                    String tc = null;
                    if (definitions.getConstraints().containsKey(t.getName())) {
                        ProfiledType pt = definitions.getConstraints().get(t.getName());
                        tc = pt.getBaseType();
                        profile = "http://hl7.org/fhir/StructureDefinition/" + pt.getName();
                    } else {
                        tc = t.getName();
                        profile = t.getProfile();
                    }
                    TypeRefComponent type = ce.getType(tc);
                    if (profile == null && t.hasParams()) {
                        profile = t.getParams().get(0);
                    }
                    if (t.getPatterns() != null) {
                        for (String s : t.getPatterns()) {
                            type.addExtension("http://hl7.org/fhir/StructureDefinition/elementdefinition-pattern", new CanonicalType("http://hl7.org/fhir/StructureDefinition/" + s));
                        }
                    }
                    if (profile != null) {
                        if (type.getWorkingCode().equals("Extension")) {
                            // check that the extension is being used correctly:
                            StructureDefinition ext = context.getExtensionStructure(null, profile);
                            if (ext == null) {
                                throw new Exception("Unable to resolve extension definition: " + profile);
                            }
                            boolean srcMod = ext.getSnapshot().getElement().get(0).getIsModifier();
                            boolean tgtMod = e.isModifier();
                            if (srcMod && !tgtMod)
                                throw new Exception("The extension '" + profile + "' is a modifier extension, but is being used as if it is not a modifier extension");
                            if (!srcMod && tgtMod)
                                throw new Exception("The extension '" + profile + "' is not a modifier extension, but is being used as if it is a modifier extension");
                        }
                        List<String> pr = new ArrayList<>();
                        if (profile.startsWith("http:") || profile.startsWith("#")) {
                            pr.add(profile);
                        } else if (definitions.hasLogicalModel(profile)) {
                            for (String pn : definitions.getLogicalModel(profile).getImplementations()) pr.add("http://hl7.org/fhir/StructureDefinition/" + pn);
                        } else
                            pr.add("http://hl7.org/fhir/StructureDefinition/" + (profile.equals("Any") ? "Resource" : profile));
                        if (type.getWorkingCode().equals("Reference") || type.getWorkingCode().equals("canonical") || type.getWorkingCode().equals("CodeableReference")) {
                            for (String pn : pr) {
                                type.addTargetProfile(pn);
                                if (e.hasHierarchy())
                                    ToolingExtensions.addBooleanExtension(type, ToolingExtensions.EXT_HIERARCHY, e.getHierarchy());
                            }
                        } else
                            for (String pn : pr) {
                                type.addProfile(pn);
                            }
                    }
                    for (String aggregation : t.getAggregations()) {
                        type.addAggregation(AggregationMode.fromCode(aggregation));
                    }
                }
        }
    }
    String w5 = translateW5(e.getW5());
    if (w5 != null)
        addMapping(p, ce, "http://hl7.org/fhir/fivews", w5, ap);
    if (e.isTranslatable())
        ce.addExtension("http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable", new BooleanType(true));
    if (!Utilities.noString(e.getOrderMeaning()))
        ce.setOrderMeaning(e.getOrderMeaning());
    if (e.hasBinding()) {
        ce.setBinding(generateBinding(e.getBinding()));
    }
    if (snapshot != SnapShotMode.None && !e.getElements().isEmpty()) {
    // makeExtensionSlice("extension", p, c, e, path);
    // if (snapshot == SnapShotMode.Resource) {
    // makeExtensionSlice("modifierExtension", p, c, e, path);
    // if (!path.contains(".")) {
    // c.getElement().add(createBaseDefinition(p, path, definitions.getBaseResources().get("Resource").getRoot().getElementByName("language")));
    // c.getElement().add(createBaseDefinition(p, path, definitions.getBaseResources().get("DomainResource").getRoot().getElementByName("text")));
    // c.getElement().add(createBaseDefinition(p, path, definitions.getBaseResources().get("DomainResource").getRoot().getElementByName("contained")));
    // }
    // }
    }
    if (defaults)
        ce.makeBase();
    Set<String> containedSlices = new HashSet<String>();
    if (snapshot != SnapShotMode.None) {
        if (!root && Utilities.noString(e.typeCode())) {
            if (snapshot == SnapShotMode.Resource)
                defineAncestorElements("BackboneElement", path, snapshot, containedSlices, p, elements, defType, defaults);
            else
                defineAncestorElements("Element", path, snapshot, containedSlices, p, elements, defType, defaults);
        } else if (root && !Utilities.noString(e.typeCode()))
            defineAncestorElements(e.typeCode(), path, snapshot, containedSlices, p, elements, defType, defaults);
    }
    for (ElementDefn child : e.getElements()) defineElement(ap, p, elements, child, path + "." + child.getName(), containedSlices, myParents, snapshot, false, defType, null, defaults);
    return ce;
}
Also used : ProfiledType(org.hl7.fhir.definitions.model.ProfiledType) TypeRef(org.hl7.fhir.definitions.model.TypeRef) ArrayList(java.util.ArrayList) BooleanType(org.hl7.fhir.r5.model.BooleanType) ElementDefn(org.hl7.fhir.definitions.model.ElementDefn) CanonicalType(org.hl7.fhir.r5.model.CanonicalType) FHIRException(org.hl7.fhir.exceptions.FHIRException) URISyntaxException(java.net.URISyntaxException) StructureDefinition(org.hl7.fhir.r5.model.StructureDefinition) TypeRefComponent(org.hl7.fhir.r5.model.ElementDefinition.TypeRefComponent) ArrayList(java.util.ArrayList) List(java.util.List) ElementDefinition(org.hl7.fhir.r5.model.ElementDefinition) HashSet(java.util.HashSet)

Example 79 with DomainResource

use of org.hl7.fhir.r4b.model.DomainResource in project kindling by HL7.

the class XmlSpecGenerator method generateInner.

private void generateInner(ElementDefn root, boolean resource, boolean isAbstract) throws IOException, Exception {
    String rn;
    if (root.getName().equals("Extension"))
        rn = "extension|modifierExtension";
    else if (root.getName().equals("Meta"))
        rn = "meta";
    else if (root.getTypes().size() > 0 && (root.getTypes().get(0).getName().equals("Type") || (root.getTypes().get(0).getName().equals("Structure"))) || isAbstract)
        rn = "[name]";
    else
        rn = root.getName();
    write("&lt;");
    if (defPage == null)
        write("<span title=\"" + Utilities.escapeXml(root.getDefinition()) + "\"><b>");
    else
        write("<a href=\"" + (defPage + "#" + root.getName()) + "\" title=\"" + Utilities.escapeXml(root.getDefinition()) + "\" class=\"dict\"><b>");
    write(rn);
    if ((defPage == null))
        write("</b></span>");
    else
        write("</b></a>");
    boolean hasXmlLang = false;
    for (ElementDefn elem : root.getElements()) {
        hasXmlLang = hasXmlLang || elem.typeCode().equals("xml:lang");
    }
    if (hasXmlLang)
        write(" xml:lang?");
    if (resource)
        write(" xmlns=\"http://hl7.org/fhir\"");
    else
        write(" xmlns=\"http://hl7.org/fhir\"");
    for (ElementDefn elem : root.getElements()) {
        if (elem.isXmlAttribute()) {
            generateAttribute(elem);
        }
    }
    if (resource) {
        write("&gt; <span style=\"float: right\"><a title=\"Documentation for this format\" href=\"" + prefix + "xml.html\"><img src=\"" + prefix + "help.png\" alt=\"doco\"/></a></span>\r\n");
    } else
        write("&gt;\r\n");
    if (rn.equals(root.getName()) && resource) {
        if (!Utilities.noString(root.typeCode())) {
            write(" &lt;!-- from <a href=\"" + prefix + "resource.html\">Resource</a>: <a href=\"" + prefix + "resource.html#id\">id</a>, <a href=\"" + prefix + "resource.html#meta\">meta</a>, <a href=\"" + prefix + "resource.html#implicitRules\">implicitRules</a>, and <a href=\"" + prefix + "resource.html#language\">language</a> -->\r\n");
            if (root.typeCode().equals("DomainResource"))
                write(" &lt;!-- from <a href=\"" + prefix + "domainresource.html\">DomainResource</a>: <a href=\"" + prefix + "narrative.html#Narrative\">text</a>, <a href=\"" + prefix + "references.html#contained\">contained</a>, <a href=\"" + prefix + "extensibility.html\">extension</a>, and <a href=\"" + prefix + "extensibility.html#modifierExtension\">modifierExtension</a> -->\r\n");
        }
    } else if (root.typeCode().equals("BackboneElement")) {
        write(" &lt;!-- from BackboneElement: <a href=\"" + prefix + "extensibility.html\">extension</a>, <a href=\"" + prefix + "extensibility.html\">modifierExtension</a> -->\r\n");
    } else {
        write(" &lt;!-- from Element: <a href=\"" + prefix + "extensibility.html\">extension</a> -->\r\n");
    }
    for (ElementDefn elem : root.getElements()) {
        if (!elem.typeCode().equals("xml:lang") && !elem.isXmlAttribute())
            generateCoreElem(elem, 1, rn, root.getName(), rn.equals(root.getName()) && resource);
    }
    write("&lt;/");
    write(rn);
    write("&gt;\r\n");
}
Also used : ElementDefn(org.hl7.fhir.definitions.model.ElementDefn)

Example 80 with DomainResource

use of org.hl7.fhir.r4b.model.DomainResource in project kindling by HL7.

the class JsonSpecGenerator method generateInner.

private void generateInner(ElementDefn root, boolean resource, boolean isAbstract) throws IOException, Exception {
    String rn;
    if (root.getTypes().size() > 0 && (root.getTypes().get(0).getName().equals("Type") || root.getName().equals("Extension") || (root.getTypes().get(0).getName().equals("Structure")) && root.getName().equals("Element") || root.getName().equals("BackboneElement") || root.getName().equals("Meta")))
        rn = null;
    else if (isAbstract)
        rn = "[name]";
    else
        rn = root.getName();
    write("{<span style=\"float: right\"><a title=\"Documentation for this format\" href=\"" + prefix + "json.html\"><img src=\"" + prefix + "help.png\" alt=\"doco\"/></a></span>\r\n");
    if (definitions.hasResource(root.getName()) || Utilities.existsInList(root.getName(), "Parameters")) {
        write("  \"resourceType\" : \"");
        if (defPage == null)
            write("<span title=\"" + Utilities.escapeXml(root.getDefinition()) + "\"><b>");
        else
            write("<a href=\"" + (defPage + "#" + root.getName()) + "\" title=\"" + Utilities.escapeXml(root.getDefinition()) + "\" class=\"dict\"><b>");
        write(rn);
        if ((defPage == null))
            write("</b></span>\",\r\n");
        else
            write("</b></a>\",\r\n");
    }
    if ((root.getName().equals(rn) || "[name]".equals(rn)) && resource) {
        if (!Utilities.noString(root.typeCode())) {
            write("  // from <a href=\"" + prefix + "resource.html\">Resource</a>: <a href=\"" + prefix + "resource.html#id\">id</a>, <a href=\"" + prefix + "resource.html#meta\">meta</a>, <a href=\"" + prefix + "resource.html#implicitRules\">implicitRules</a>, and <a href=\"" + prefix + "resource.html#language\">language</a>\r\n");
            if (root.typeCode().equals("DomainResource"))
                write("  // from <a href=\"" + prefix + "domainresource.html\">DomainResource</a>: <a href=\"" + prefix + "narrative.html#Narrative\">text</a>, <a href=\"" + prefix + "references.html#contained\">contained</a>, <a href=\"" + prefix + "extensibility.html\">extension</a>, and <a href=\"" + prefix + "extensibility.html#modifierExtension\">modifierExtension</a>\r\n");
        }
    } else if (!resource) {
        if (root.typeCode().equals("BackboneElement"))
            write("  // from BackboneElement: <a href=\"" + prefix + "extensibility.html\">extension</a>, <a href=\"" + prefix + "extensibility.html\">modifierExtension</a>\r\n");
        else
            write("  // from Element: <a href=\"" + prefix + "extensibility.html\">extension</a>\r\n");
    }
    // if (root.getName().equals("Extension")) {
    // ElementDefn urld = root.getElements().get(0);
    // write("  \"<span title=\"" + Utilities.escapeXml(urld.getDefinition()) + "\"><a href=\"" + (defPage + "#Extension.url") + "\" title=\"" + Utilities.escapeXml(urld.getDefinition()) + "\" class=\"dict\">");
    // write("&lt;url&gt;</a></span>");
    // write("\" : { // <span style=\"color: navy; opacity: 0.8\">" + Utilities.escapeXml(root.getElements().get(0).getShortDefn()) + "</span>\r\n");
    // generateCoreElem(root.getElements().get(1), 2, rn, root.getName(), false, true);
    // write("  }\r\n");
    // } else {
    int c = 0;
    for (ElementDefn elem : root.getElements()) {
        generateCoreElem(elem, 1, rn, root.getName(), root.getName().equals(rn) && resource, ++c == root.getElements().size());
    // }
    }
    write("}\r\n");
}
Also used : ElementDefn(org.hl7.fhir.definitions.model.ElementDefn)

Aggregations

XhtmlNode (org.hl7.fhir.utilities.xhtml.XhtmlNode)24 FHIRException (org.hl7.fhir.exceptions.FHIRException)22 DomainResource (org.hl7.fhir.r4.model.DomainResource)21 DefinitionException (org.hl7.fhir.exceptions.DefinitionException)16 IOException (java.io.IOException)15 DomainResource (org.hl7.fhir.dstu3.model.DomainResource)15 FileOutputStream (java.io.FileOutputStream)12 ArrayList (java.util.ArrayList)11 CommaSeparatedStringBuilder (org.hl7.fhir.utilities.CommaSeparatedStringBuilder)11 Test (org.junit.jupiter.api.Test)11 Resource (org.hl7.fhir.r4.model.Resource)10 IBaseResource (org.hl7.fhir.instance.model.api.IBaseResource)9 FileNotFoundException (java.io.FileNotFoundException)8 List (java.util.List)8 NotImplementedException (org.apache.commons.lang3.NotImplementedException)8 StructureDefinition (org.hl7.fhir.r5.model.StructureDefinition)8 SystemRequestDetails (ca.uhn.fhir.jpa.partition.SystemRequestDetails)7 File (java.io.File)7 ElementDefn (org.hl7.fhir.definitions.model.ElementDefn)7 RestIntegrationTest (org.opencds.cqf.ruler.test.RestIntegrationTest)7