<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://fhir.synapxe.sg/StructureDefinition/profile-relatedartifact" />
  <name value="RelatedArtifact" />
  <status value="active" />
  <fhirVersion value="5.0.0" />
  <kind value="complex-type" />
  <abstract value="false" />
  <type value="RelatedArtifact" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/RelatedArtifact" />
  <derivation value="constraint" />
  <snapshot>
    <element id="RelatedArtifact">
      <path value="RelatedArtifact" />
      <short value="Related artifacts for a knowledge resource" />
      <definition value="Related artifacts such as additional documentation, justification, or bibliographic references." />
      <comment value="Each related artifact is either an attachment, or a reference to another knowledge resource, but not both." />
      <min value="0" />
      <max value="*" />
      <base>
        <path value="RelatedArtifact" />
        <min value="0" />
        <max value="*" />
      </base>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.id">
      <path value="RelatedArtifact.id" />
      <representation value="xmlAttr" />
      <short value="Unique id for inter-element referencing" />
      <definition value="Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces." />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="Element.id" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="string" />
        </extension>
        <code value="http://hl7.org/fhirpath/System.String" />
      </type>
      <condition value="ele-1" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.extension">
      <path value="RelatedArtifact.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <description value="Extensions are always sliced by (at least) url" />
        <rules value="open" />
      </slicing>
      <short value="Additional content defined by implementations" />
      <definition value="May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension." />
      <comment value="There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone." />
      <alias value="extensions" />
      <alias value="user content" />
      <min value="0" />
      <max value="*" />
      <base>
        <path value="Element.extension" />
        <min value="0" />
        <max value="*" />
      </base>
      <type>
        <code value="Extension" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <constraint>
        <key value="ext-1" />
        <severity value="error" />
        <human value="Must have either extensions or value[x], not both" />
        <expression value="extension.exists() != value.exists()" />
        <source value="http://hl7.org/fhir/StructureDefinition/Extension" />
      </constraint>
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="N/A" />
      </mapping>
    </element>
    <element id="RelatedArtifact.type">
      <path value="RelatedArtifact.type" />
      <short value="documentation | justification | citation | predecessor | successor | derived-from | depends-on | composed-of | part-of | amends | amended-with | appends | appended-with | cites | cited-by | comments-on | comment-in | contains | contained-in | corrects | correction-in | replaces | replaced-with | retracts | retracted-by | signs | similar-to | supports | supported-with | transforms | transformed-into | transformed-with | documents | specification-of | created-with | cite-as" />
      <definition value="The type of relationship to the related artifact." />
      <comment value="The presence of both sides of a relationship type (e.g. successor and predecessor) is required to support use cases where one side of a relationship is not represented in FHIR. However, this feature SHALL NOT be used to create bi-directional resource links in FHIR instances. Specifically, following the methodology of &quot;new points to old&quot; and &quot;many points to one&quot;, when using related artifact elements to describe and reference FHIR resources, the type element SHALL be drawn from the fhir-related-artifact-type ValueSet." />
      <min value="1" />
      <max value="1" />
      <base>
        <path value="RelatedArtifact.type" />
        <min value="1" />
        <max value="1" />
      </base>
      <type>
        <code value="code" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <binding>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/binding-definition">
          <valueString value="The type of relationship to the related artifact." />
        </extension>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="RelatedArtifactType" />
        </extension>
        <strength value="required" />
        <description value="The type of relationship to the related artifact." />
        <valueSet value="http://hl7.org/fhir/ValueSet/related-artifact-type|5.0.0" />
      </binding>
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.classifier">
      <path value="RelatedArtifact.classifier" />
      <short value="Additional classifiers" />
      <definition value="Provides additional classifiers of the related artifact." />
      <comment value="Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination." />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.classifier" />
        <min value="0" />
        <max value="*" />
      </base>
      <type>
        <code value="CodeableConcept" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <binding>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/binding-definition">
          <valueString value="Additional classifiers for the related artifact." />
        </extension>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="RelatedArtifactClassifier" />
        </extension>
        <strength value="example" />
        <description value="Additional classifiers for the related artifact." />
        <valueSet value="http://hl7.org/fhir/ValueSet/citation-artifact-classifier" />
      </binding>
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="v2" />
        <map value="CE/CNE/CWE" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="CD" />
      </mapping>
      <mapping>
        <identity value="orim" />
        <map value="fhir:CodeableConcept rdfs:subClassOf dt:CD" />
      </mapping>
    </element>
    <element id="RelatedArtifact.label">
      <path value="RelatedArtifact.label" />
      <short value="Short label" />
      <definition value="A short label that can be used to reference the citation from elsewhere in the containing artifact, such as a footnote index." />
      <comment value="Note that FHIR strings SHALL NOT exceed 1,048,576 (1024*1024) characters in size" />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.label" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="string" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.display">
      <path value="RelatedArtifact.display" />
      <short value="Brief description of the related artifact" />
      <definition value="A brief description of the document or knowledge resource being referenced, suitable for display to a consumer." />
      <comment value="Note that FHIR strings SHALL NOT exceed 1,048,576 (1024*1024) characters in size" />
      <min value="0" />
      <max value="1" />
      <base>
        <path value="RelatedArtifact.display" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="string" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.citation">
      <path value="RelatedArtifact.citation" />
      <short value="Bibliographic citation for the artifact" />
      <definition value="A bibliographic citation for the related artifact. This text SHOULD be formatted according to an accepted citation format." />
      <comment value="Additional structured information about citations should be captured as extensions." />
      <min value="0" />
      <max value="1" />
      <base>
        <path value="RelatedArtifact.citation" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="markdown" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.document">
      <path value="RelatedArtifact.document" />
      <short value="Content in a format defined elsewhere" />
      <definition value="For referring to data content defined in other formats." />
      <comment value="When providing a summary view (for example with Observation.value[x]) Attachment should be represented with a brief display text such as &quot;Signed Procedure Consent&quot;." />
      <min value="1" />
      <max value="1" />
      <base>
        <path value="RelatedArtifact.document" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="Attachment" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-attachment" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <constraint>
        <key value="att-1" />
        <severity value="error" />
        <human value="If the Attachment has data, it SHALL have a contentType" />
        <expression value="data.empty() or contentType.exists()" />
        <source value="http://hl7.org/fhir/StructureDefinition/Attachment" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="v2" />
        <map value="ED/RP" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="ED" />
      </mapping>
    </element>
    <element id="RelatedArtifact.resource">
      <path value="RelatedArtifact.resource" />
      <short value="What artifact is being referenced" />
      <definition value="The related artifact, such as a library, value set, profile, or other knowledge resource." />
      <comment value="If the type is predecessor, this is a reference to the succeeding knowledge resource. If the type is successor, this is a reference to the prior knowledge resource." />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.resource" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="canonical" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Resource" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.resourceReference">
      <path value="RelatedArtifact.resourceReference" />
      <short value="What artifact, if not a conformance resource" />
      <definition value="The related artifact, if the artifact is not a canonical resource, or a resource reference to a canonical resource." />
      <comment value="If both resource and resourceReference are present, they SHOULD be consistent and reference the same resource. Although relatedArtifact is intended to support references to definitional resources, there are cases where non-definitional resources can be definitional (such as Location where the kind is mode). Related artifacts SHOULD be used to reference definitional resources, and profiles SHOULD be used to make that explicit for particular use cases." />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.resourceReference" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Resource" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <constraint>
        <key value="ref-1" />
        <severity value="error" />
        <human value="SHALL have a contained resource if a local reference is provided" />
        <expression value="reference.exists()  implies (reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids')) or (reference='#' and %rootResource!=%resource))" />
        <source value="http://hl7.org/fhir/StructureDefinition/Reference" />
      </constraint>
      <constraint>
        <key value="ref-2" />
        <severity value="error" />
        <human value="At least one of reference, identifier and display SHALL be present (unless an extension is provided)." />
        <expression value="reference.exists() or identifier.exists() or display.exists() or extension.exists()" />
        <source value="http://hl7.org/fhir/StructureDefinition/Reference" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
      <mapping>
        <identity value="rim" />
        <map value="The target of a resource reference is a RIM entry point (Act, Role, or Entity)" />
      </mapping>
    </element>
    <element id="RelatedArtifact.publicationStatus">
      <path value="RelatedArtifact.publicationStatus" />
      <short value="draft | active | retired | unknown" />
      <definition value="The publication status of the artifact being referred to." />
      <comment value="Note that FHIR strings SHALL NOT exceed 1,048,576 (1024*1024) characters in size" />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.publicationStatus" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="code" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <binding>
        <extension url="http://hl7.org/fhir/tools/StructureDefinition/binding-definition">
          <valueString value="Publication status of an artifact being referred to." />
        </extension>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="RelatedArtifactPublicationStatus" />
        </extension>
        <strength value="required" />
        <description value="Publication status of an artifact being referred to." />
        <valueSet value="http://hl7.org/fhir/ValueSet/publication-status|5.0.0" />
      </binding>
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
    <element id="RelatedArtifact.publicationDate">
      <path value="RelatedArtifact.publicationDate" />
      <short value="Date of publication of the artifact being referred to" />
      <definition value="The date of publication of the artifact being referred to." />
      <min value="0" />
      <max value="0" />
      <base>
        <path value="RelatedArtifact.publicationDate" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="date" />
      </type>
      <constraint>
        <key value="ele-1" />
        <severity value="error" />
        <human value="All FHIR elements must have a @value or children" />
        <expression value="hasValue() or (children().count() &gt; id.count())" />
        <source value="http://hl7.org/fhir/StructureDefinition/Element" />
      </constraint>
      <isSummary value="true" />
      <mapping>
        <identity value="rim" />
        <map value="n/a" />
      </mapping>
    </element>
  </snapshot>
  <differential>
    <element id="RelatedArtifact.id">
      <path value="RelatedArtifact.id" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.classifier">
      <path value="RelatedArtifact.classifier" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.label">
      <path value="RelatedArtifact.label" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.document">
      <path value="RelatedArtifact.document" />
      <min value="1" />
      <type>
        <code value="Attachment" />
        <profile value="https://fhir.synapxe.sg/StructureDefinition/profile-attachment" />
      </type>
    </element>
    <element id="RelatedArtifact.resource">
      <path value="RelatedArtifact.resource" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.resourceReference">
      <path value="RelatedArtifact.resourceReference" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.publicationStatus">
      <path value="RelatedArtifact.publicationStatus" />
      <max value="0" />
    </element>
    <element id="RelatedArtifact.publicationDate">
      <path value="RelatedArtifact.publicationDate" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>