<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKFormularDefinition" />
  <url value="https://gematik.de/fhir/isik/StructureDefinition/ISiKFormularDefinition" />
  <version value="6.0.0-rc" />
  <name value="ISiKFormularDefinition" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-02" />
  <publisher value="gematik GmbH" />
  <description value="Im Profil `ISiKFormularDefinition` sind Mindestanforderungen an ISiK kompatible Formulare definiert.&#xA;Die verwendbaren Extensions sind nicht mit profiliert, sondern im IG unter Spezifikationen-&gt;Extensions beschrieben." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Questionnaire" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Questionnaire" />
  <derivation value="constraint" />
  <differential>
    <element id="Questionnaire.id">
      <path value="Questionnaire.id" />
      <short value="serverseitige, interne ID des Datensatzes" />
      <comment value="**bedingtes Pflichtfeld/bedingtes MS:** Alle von einem Server bereitgestellten Ressourcen MÜSSEN über eine `id` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `id`verfügen." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.meta.versionId">
      <path value="Questionnaire.meta.versionId" />
      <short value="Eindeutiger Name der serverseitigen Version des Datensatzes" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über eine `versionID` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `versionID`verfügen." />
    </element>
    <element id="Questionnaire.meta.lastUpdated">
      <path value="Questionnaire.meta.lastUpdated" />
      <short value="Zeitpunkt der letzten Änderung" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über ein `lastUpdate` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über ein `lastUpdate`verfügen." />
    </element>
    <element id="Questionnaire.implicitRules">
      <path value="Questionnaire.implicitRules" />
      <short value="Verweis auf die Regeln, nach denen die Ressource erstellt wurde" />
      <comment value="Begründung Constraint: In ISiK existiert kein Use-Case für dieses Element. Da es sich um ein Modifying Element handelt, wird es daher ausgeschlossen.&#xA;  Darüber hinaus werden die Regeln als URI vorgehalten. Dies führt dazu, dass sich hinter der URI eine beliebige Menge an Regeln befinden kann; wodurch  nicht sichergestellt werden kann, dass alle Clients die Regeln korrekt interpretieren können." />
      <max value="0" />
    </element>
    <element id="Questionnaire.modifierExtension">
      <path value="Questionnaire.modifierExtension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Questionnaire.modifierExtension:MpFormular">
      <path value="Questionnaire.modifierExtension" />
      <sliceName value="MpFormular" />
      <short value="Formular wird in einem Medizinprodukt eingesetzt" />
      <comment value="**Begründung MS:**&#xA;  In dieser Extension wird die Zweckbestimmung angegeben, mit der dieses Formular im Kontext eines Medizinproduktes verwendet wird. Sobald diese Extension vorhanden ist, sollten die Konsequenzen für die Anzeige und Verarbeitung des Formulars geprüft werden. Ein Formularrenderer, der sich nicht mit dem Thema MDR und Medizinprodukte auseinandergesetzt hat, sollte hier auf das im FHIR-Standard festgelegte Verhalten bei [modifierExtension](http://hl7.org/fhir/extensibility.html#modifierExtension) zurückgreifen." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/isik/StructureDefinition/ISiKMpFormularExtension" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.url">
      <path value="Questionnaire.url" />
      <short value="CanoncialURL des Formulars" />
      <comment value="Weltweit eindeutiger Name des Formulars.&#xA;  **Begründung Pflichtfeld:**&#xA;  Wird für eindeutige Bezugnahme von FormularDaten auf FormularDefinition benötigt." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.version">
      <path value="Questionnaire.version" />
      <short value="Version" />
      <comment value="Versionsnummer des Formulars. Sollte gem. semVer-Regeln inkrementiert werden, je nach Schweregrad der Änderungen.&#xA;  **Begründung MS:**  &#xA;  Wird benötigt, um FormularDefinitionen in unterschiedlichen Versionen zu differenzieren." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.title">
      <path value="Questionnaire.title" />
      <short value="Titel/Überschrift" />
      <comment value="Dem Anwender angezeigter Titel des Formulars.  &#xA;  **Begründung MS:**  &#xA;  Wird für die Darstellung und Auffindbarkeit der FormularDefinition benötigt." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.derivedFrom">
      <path value="Questionnaire.derivedFrom" />
      <short value="Abgeleitet von" />
      <comment value="Verweis auf ein Questionnaire, von dem abgeleitet wurde, welches erweitert wurde oder welches als Grundlage diente." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.status">
      <path value="Questionnaire.status" />
      <short value="active | retired" />
      <comment value="Die im ISiK-Kontext bereitgestellten Formulare sollten final ausspezifiziert sein und daher den Status 'active' haben. &#xA;  Formulare, die zurückgezogen oder durch neuere Versionen ersetzt wurden, können mit 'retired' gekennzeichnet werden." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.subjectType">
      <path value="Questionnaire.subjectType" />
      <short value="Subject, über das in diesem Formular berichtet wird." />
      <comment value="**Begründung Pflichtfeld:** Die in diesem Modul beschriebenen Funktionen und Interaktionen beziehen sich auf den subjectType `Patient`. Ist hier ein anderer subjectType angegeben, so unterliegt das Formular nicht den Einschränkungen und Anforderungen, die in diesem IG für ISiK-Formulare definiert sind. Um dennoch eine Validität zum Profil herzustellen, wurde das Pattern entfernt.&#xA;  &#xA;  **Hinweis:** Ist der subjectType `Patient` gesetzt, ist stets davon auszugehen, dass der Patient, für den dieses Formular ausgefüllt wird, identisch ist, mit dem Patient, der im Launch-Kontext übergeben wird." />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.description">
      <path value="Questionnaire.description" />
      <short value="Formularbeschreibung" />
      <comment value="**Begründung Pflichtfeld:**  &#xA;  Ausführliche Beschreibung des Formulars zur Verbesserung der Auffindbarkeit und Interpretation der Nutzung" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item">
      <path value="Questionnaire.item" />
      <short value="Formularfeld" />
      <comment value="Formularfeld oder Einstiegspunkt für eine Gruppe von Formularfeldern" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.linkId">
      <path value="Questionnaire.item.linkId" />
      <short value="innerhalb dieses Formulars eindeutige ID dieses Feldes" />
      <comment value="**Begründung Pflichtfeld:**  &#xA;    Erforderlich für die Verlinkung der Antworten in der QuestionnaireRespons mit der Definition des Formularfeldes." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.code">
      <path value="Questionnaire.item.code" />
      <short value="Code für dieses Formularfeld" />
      <comment value="**Begründung MS:**  &#xA;    Zur eindeutigen Identifikation des Formularfeldes. Ohne Code ist Observation-based-extraction nicht möglich.&#xA;    Wenn kein Code zur Verfügung steht, besteht weiterhin die Möglichkeit ein Item ohne Code zu definieren." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.prefix">
      <path value="Questionnaire.item.prefix" />
      <short value="Feld für bspw. Nummerierung von Elementen" />
      <comment value="**Begründung MS:**&#xA;    Falls bspw. eine Gruppierung oder Nummerierung nicht über die Verschachtelung von Items erfolgt, kann über das Prefix eine solche erfolgen. Aus dem Grund MUSS es in der Darstellung beim Rendern mit verarbeitet werden." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.text">
      <path value="Questionnaire.item.text" />
      <short value="Fragestellung, Anzeigetext oder Gruppenname" />
      <comment value="**Begründung MS:**  &#xA;    Je nach 'type' des items: Fragestellung, Anzeigetext oder Gruppenname" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.type">
      <path value="Questionnaire.item.type" />
      <comment value="Time is handled using &quot;string&quot;.  File is handled using Attachment.  (Content can be sent as a contained binary)." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.enableWhen">
      <path value="Questionnaire.item.enableWhen" />
      <comment value="**Begründung MS:** Bedingungen, die erfüllt sein müssen, damit das Item dargestellt wird. Dieses Feld ist ein modifier-Element, weshalb MS obligatorisch ist, es muss interpretiert werden." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.enableWhen.question">
      <path value="Questionnaire.item.enableWhen.question" />
      <comment value="LinkId der Frage, bei der die Bedingung zu erfüllen ist." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.enableWhen.operator">
      <path value="Questionnaire.item.enableWhen.operator" />
      <comment value="Operator, mittels dem die Value der .question mit dem in answer[x] angegeben Element vergleichen wird." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.enableWhen.answer[x]">
      <path value="Questionnaire.item.enableWhen.answer[x]" />
      <comment value="Rechter Wert des Bedingungsvergleich" />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.required">
      <path value="Questionnaire.item.required" />
      <short value="Pflichtfeld?" />
      <comment value="**Begründung MS:**  &#xA;    FormularRenderer sollen sicherstellen können, dass Formulare vom Anwender vollständig ausgefüllt werden." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.repeats">
      <path value="Questionnaire.item.repeats" />
      <short value="Mehrfachangaben erlaubt?" />
      <comment value="**Begründung MS:**  FormularRenderer sollen in der Lage sein zwischen Einfach- und Mehrfachangaben unterscheiden zu können." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.readOnly">
      <path value="Questionnaire.item.readOnly" />
      <short value="Keine Eingabe erlaubt?" />
      <comment value="Antwort wird automatisch vorbelegt/berechnet und darf nicht vom Anwender editiert/überschrieben werden.&#xA;    **Begründung MS:** Automatisch vorbelegte Items sollen gegen Veränderung durch den Benutzer geschützt werden können (z.B. für Patientenstammdaten)." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.maxLength">
      <path value="Questionnaire.item.maxLength" />
      <short value="Längenbegrenzung" />
      <comment value="Maximale Anzahl zulässiger Zeichen für die Beantwortung der Frage." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.answerValueSet">
      <path value="Questionnaire.item.answerValueSet" />
      <short value="Festlegung der Antwortmöglichkeiten durch Verweis auf ValueSet" />
      <comment value="**Begründung MS:**  Wo geeignete ValueSets vorhanden sind, die die Antwortmöglichkeiten hinreichend repräsentieren, sollte auf diese verwiesen werden." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.answerOption">
      <path value="Questionnaire.item.answerOption" />
      <short value="Festlegung der Antwortmöglichkeiten durch Aufzählung" />
      <comment value="**Begründung MS:**  Wo *keine* geeignete ValueSets vorhanden sind, die die Antwortmöglichkeiten hinreichen repräsentieren, &#xA;    können Antworten alternativ in der FormularDefinition explizit aufgezählt werden.." />
      <mustSupport value="true" />
    </element>
    <element id="Questionnaire.item.item">
      <path value="Questionnaire.item.item" />
      <short value="Untergeordnetes Item" />
      <comment value="**Begründung MS:**  &#xA;   Items können beliebig verschachtelt und zu Gruppen zusammengefasst werden, um komplexere und umfangreichere Formulare zu strukturieren." />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>