<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://karolinskafhirserver.org/fhir/StructureDefinition/KarolinskaGenomicStudy" />
  <version value="1.0.0-alpha.1" />
  <name value="KarolinskaGenomicStudy" />
  <title value="Karolinska Genomic Study" />
  <status value="draft" />
  <description value="The core resource of the Genomic study which holds the genomic study and related profiles together. . Its the main procedure resource to represent a Genomic case. The genomic case includes both laboratory process(es) aswell as the data analysis which are both referenced from this profile." />
  <purpose value="The purpose of this profile is to be part of the MVP-GDR project with the goal to evaluate FHIR as a standard to meet our needs for genomic data.&#xD;&#xA;It should therefore be known that the information model itself has been created for the purpose of making this evaluation. The information model is therefore not ready for implementation in a production environment and ready to be used to store resource data." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Procedure" />
  <baseDefinition value="http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-study" />
  <derivation value="constraint" />
  <differential>
    <element id="Procedure.extension:genomic-laboratory-process">
      <path value="Procedure.extension" />
      <sliceName value="genomic-laboratory-process" />
      <type>
        <code value="Extension" />
        <profile value="https://karolinskafhirserver.org/fhir/StructureDefinition/KarolinskaGenomicLaboratoryProcessExtension" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="Procedure.identifier">
      <path value="Procedure.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type.coding.code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Procedure.identifier.value">
      <path value="Procedure.identifier.value" />
      <requirements value="Used for CaseID" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier">
      <path value="Procedure.identifier" />
      <sliceName value="requester-case-identifier" />
      <definition value="Business identifiers assigned to this procedure by the requester" />
      <max value="1" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.type">
      <path value="Procedure.identifier.type" />
      <min value="1" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.type.coding">
      <path value="Procedure.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.type.coding.system">
      <path value="Procedure.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://terminology.hl7.org/CodeSystem/v2-0203" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.type.coding.code">
      <path value="Procedure.identifier.type.coding.code" />
      <definition value="An identifier for a request where the identifier is issued by the person or service making the request." />
      <min value="1" />
      <fixedCode value="PLAC" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.type.coding.display">
      <path value="Procedure.identifier.type.coding.display" />
      <min value="1" />
      <fixedString value="Placer Identifier" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.system">
      <path value="Procedure.identifier.system" />
      <min value="1" />
      <fixedUri value="http://mdk.regionstockholm.se/starlims/kliniskgenetik/id" />
    </element>
    <element id="Procedure.identifier:requester-case-identifier.value">
      <path value="Procedure.identifier.value" />
      <min value="1" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier">
      <path value="Procedure.identifier" />
      <sliceName value="laboratory-case-identifier" />
      <definition value="Business identifiers assigned to this procedure by the performer/laboratory" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.type">
      <path value="Procedure.identifier.type" />
      <min value="1" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.type.coding">
      <path value="Procedure.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.type.coding.system">
      <path value="Procedure.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://terminology.hl7.org/CodeSystem/v2-0203" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.type.coding.code">
      <path value="Procedure.identifier.type.coding.code" />
      <definition value="An identifier for a request where the identifier is issued by the person, or service, that produces the observations or fulfills the request." />
      <min value="1" />
      <fixedCode value="FILL" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.type.coding.display">
      <path value="Procedure.identifier.type.coding.display" />
      <min value="1" />
      <fixedString value="Filler Identifier" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.system">
      <path value="Procedure.identifier.system" />
      <min value="1" />
      <fixedUri value="http://mdk.regionstockholm.se/gmck/clarity-lims/id" />
    </element>
    <element id="Procedure.identifier:laboratory-case-identifier.value">
      <path value="Procedure.identifier.value" />
      <min value="1" />
    </element>
    <element id="Procedure.instantiatesCanonical">
      <path value="Procedure.instantiatesCanonical" />
      <requirements value="Removed for this MVP." />
      <max value="0" />
    </element>
    <element id="Procedure.instantiatesUri">
      <path value="Procedure.instantiatesUri" />
      <requirements value="Removed for this MVP" />
      <max value="0" />
    </element>
    <element id="Procedure.basedOn">
      <path value="Procedure.basedOn" />
      <comment value="Placeholder for future use. &#xD;&#xA;Can be used to point to a referral (serviceRequest instance), or to hold a logical reference (Referral ID) to link the case to the referral(s) and referral data." />
      <requirements value="Not used in MVP but is kept as a placeholder to show the possibility to connect this Genomic Study to a service request." />
    </element>
    <element id="Procedure.status">
      <path value="Procedure.status" />
      <comment value="The following statuses can be used to represent the status of the procedure: &#xD;&#xA;preparation&#xD;&#xA;in-progress&#xD;&#xA;not-done&#xD;&#xA;on-hold&#xD;&#xA;stopped&#xD;&#xA;completed&#xD;&#xA;entered-in-error&#xD;&#xA;unknown" />
      <requirements value="We only use completed in MVP - The use case of the GDR is to store completed analyses. Not to store analysis thats still in progress etc." />
      <fixedCode value="completed" />
    </element>
    <element id="Procedure.category.coding.system">
      <path value="Procedure.category.coding.system" />
      <min value="1" />
      <fixedUri value="http://snomed.info/sct" />
    </element>
    <element id="Procedure.category.coding.code">
      <path value="Procedure.category.coding.code" />
      <min value="1" />
      <fixedCode value="405824009" />
    </element>
    <element id="Procedure.category.coding.display">
      <path value="Procedure.category.coding.display" />
      <min value="1" />
      <fixedString value="Genetic test (procedure)" />
    </element>
    <element id="Procedure.code">
      <path value="Procedure.code" />
      <definition value="The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. &quot;Panel Sequencing&quot;, Whole Genome Sequencing, Whole Exome Sequencing etc.)." />
      <comment value="Should be used to represent the type of Genomic study performed. Preferably a code from a defined value set should be used. If not applivable the text element can be used." />
      <requirements value="Used to specify the type of analysis. WGS, Exome, Panel etc.&#xD;&#xA;Should use snomed CT" />
    </element>
    <element id="Procedure.subject">
      <path value="Procedure.subject" />
      <comment value="Should be used to point to the Karolinska Patient resource. We do not want to create a seperate patient-resource." />
      <type>
        <code value="Reference" />
        <targetProfile value="https://karolinskafhirserver.org/fhir/StructureDefinition/KarolinskaPatientGenomics" />
      </type>
    </element>
    <element id="Procedure.encounter">
      <path value="Procedure.encounter" />
      <requirements value="Could be used to connect the analysis to the encounter in which the analysis was ordered. Karolinska PAS-ID and at which unit and at which time the encounter occurred." />
      <max value="0" />
    </element>
    <element id="Procedure.performed[x]">
      <path value="Procedure.performed[x]" />
      <requirements value="dateTime of when the case was started." />
    </element>
    <element id="Procedure.asserter">
      <path value="Procedure.asserter" />
      <definition value="Individual who is making the procedure statement. https" />
      <max value="0" />
    </element>
    <element id="Procedure.performer.actor">
      <path value="Procedure.performer.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
    </element>
    <element id="Procedure.performer.actor.type">
      <path value="Procedure.performer.actor.type" />
      <fixedUri value="Organization" />
    </element>
    <element id="Procedure.performer.actor.identifier.system">
      <path value="Procedure.performer.actor.identifier.system" />
      <min value="1" />
      <fixedUri value="http://gmck.se/clarity-lims" />
    </element>
    <element id="Procedure.performer.actor.identifier.value">
      <path value="Procedure.performer.actor.identifier.value" />
      <min value="1" />
    </element>
    <element id="Procedure.performer.actor.display">
      <path value="Procedure.performer.actor.display" />
      <min value="1" />
    </element>
    <element id="Procedure.performer.onBehalfOf">
      <path value="Procedure.performer.onBehalfOf" />
      <min value="1" />
    </element>
    <element id="Procedure.performer.onBehalfOf.type">
      <path value="Procedure.performer.onBehalfOf.type" />
      <fixedUri value="Organization" />
    </element>
    <element id="Procedure.performer.onBehalfOf.identifier.system">
      <path value="Procedure.performer.onBehalfOf.identifier.system" />
      <min value="1" />
      <fixedUri value="http://gmck.se/clarity-lims" />
    </element>
    <element id="Procedure.performer.onBehalfOf.identifier.value">
      <path value="Procedure.performer.onBehalfOf.identifier.value" />
      <min value="1" />
    </element>
    <element id="Procedure.performer.onBehalfOf.display">
      <path value="Procedure.performer.onBehalfOf.display" />
      <min value="1" />
    </element>
    <element id="Procedure.reasonCode">
      <path value="Procedure.reasonCode" />
      <max value="0" />
    </element>
    <element id="Procedure.reasonReference">
      <path value="Procedure.reasonReference" />
      <requirements value="Not used in MVP - But in future can be used to categorize the ptotential diagnosis as the reason to perform the service." />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>