{
  "resourceType": "StructureDefinition",
  "id": "AID-MedicationRequest",
  "url": "https://fhir.dosing-gmbh.de/StructureDefinition/AID-MedicationRequest",
  "version": "1.0.3",
  "name": "AIDMedicationRequest",
  "title": "AiD Medication Request",
  "status": "draft",
  "date": "2026-08-21",
  "publisher": "Dosing GmbH",
  "contact": [
    {
      "name": "Dosing GmbH",
      "telecom": [
        {
          "system": "url",
          "value": "https://www.dosing-gmbh.de"
        }
      ]
    }
  ],
  "description": "MedicationRequest for a write-back callback to a host clinical system. Binds DosageDgMP for dosageInstruction; subject/requester/insurance do not require literal references.",
  "purpose": "Dosage information (structured and/or free text) for a write-back callback, without requiring literal Patient/Practitioner/Coverage references.",
  "fhirVersion": "4.0.1",
  "mapping": [
    {
      "identity": "workflow",
      "uri": "http://hl7.org/fhir/workflow",
      "name": "Workflow Pattern"
    }
  ],
  "kind": "resource",
  "abstract": false,
  "type": "MedicationRequest",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/MedicationRequest",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "MedicationRequest",
        "path": "MedicationRequest",
        "short": "Prescription in a write-back callback",
        "definition": "One issued prescription: status, dosage, and a reference to the associated Medication resource within the same payload.",
        "constraint": [
          {
            "key": "aid-dosageFlag-true",
            "severity": "error",
            "human": "If the dosage-present indicator is true, a dosage instruction must be present.",
            "expression": "extension('https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag').exists().not() or ((extension('https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag').value as boolean)=true implies dosageInstruction.exists())"
          },
          {
            "key": "aid-dosageFlag-false",
            "severity": "error",
            "human": "If the dosage-present indicator is false, no dosage instruction may be present.",
            "expression": "extension('https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag').exists().not() or ((extension('https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag').value as boolean)=false implies dosageInstruction.exists().not())"
          }
        ]
      },
      {
        "id": "MedicationRequest.extension",
        "path": "MedicationRequest.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "short": "Extensions"
      },
      {
        "id": "MedicationRequest.extension:dosageFlag",
        "path": "MedicationRequest.extension",
        "sliceName": "dosageFlag",
        "short": "Dosage-present indicator",
        "definition": "Whether a dosage instruction is given at all (KBV_EX_ERP_DosageFlag). Governs, together with the aid-dosageFlag-true/aid-dosageFlag-false constraints, whether dosageInstruction may be present.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:renderedDosageInstruction",
        "path": "MedicationRequest.extension",
        "sliceName": "renderedDosageInstruction",
        "short": "Rendered dosage text (e.g. \"1-2-0-1\")",
        "definition": "Human-readable text generated from the structured dosage. Required once dosageInstruction is structured (see DosageDgMP: DosageStructuredRequiresGeneratedText).",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:generatedDosageInstructionsMeta",
        "path": "MedicationRequest.extension",
        "sliceName": "generatedDosageInstructionsMeta",
        "short": "Metadata for the generated dosage text",
        "definition": "Language and algorithm version of the generated dosage text. algorithmVersion is the version of the reference implementation, not of our own code.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:multiplePrescription",
        "path": "MedicationRequest.extension",
        "sliceName": "multiplePrescription",
        "short": "Multiple-prescription indicator",
        "definition": "Indicator, numbering and period of a multiple prescription (KBV_EX_ERP_Multiple_Prescription).",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Multiple_Prescription"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:legalBasis",
        "path": "MedicationRequest.extension",
        "sliceName": "legalBasis",
        "short": "Legal basis (incl. replacement prescription)",
        "definition": "Legal basis of the prescription (KBV_EX_FOR_Legal_basis). Codes relevant here: \"00\" (standard) and \"10\" (replacement prescription per § 31 Abs. 3 Satz 7 SGB V).",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_FOR_Legal_basis"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:statusCoPayment",
        "path": "MedicationRequest.extension",
        "sliceName": "statusCoPayment",
        "short": "Co-payment status",
        "definition": "Co-payment status of the prescription (KBV_EX_FOR_StatusCoPayment). Codes: \"0\" co-payment required, \"1\" co-payment exempt, \"2\" assisted reproduction per § 27a SGB V.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_FOR_StatusCoPayment"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:narcotic",
        "path": "MedicationRequest.extension",
        "sliceName": "narcotic",
        "short": "Narcotic (BtM)",
        "definition": "Special marker per § 9 Abs. 1 Nr. 6 BtMVV plus supplementary notes on the substitution medicine (KBV_EX_ERP_Narcotic).",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Narcotic"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.extension:teratogenic",
        "path": "MedicationRequest.extension",
        "sliceName": "teratogenic",
        "short": "T-prescription (teratogenic medicine)",
        "definition": "Declarations required for prescribing a teratogenic medicine (KBV_EX_ERP_Teratogenic): off-label status, childbearing potential, compliance with safety measures, provision of information material, and declared expertise.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Teratogenic"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.medicationReference",
        "path": "MedicationRequest.medication[x]",
        "sliceName": "medicationReference",
        "short": "Reference to the Medication resource",
        "definition": "urn:uuid reference to the Medication resource of the same prescription, resolvable only within the payload, not as a Bundle.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Medication"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.subject",
        "path": "MedicationRequest.subject",
        "short": "Patient (display-only is sufficient)",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.authoredOn",
        "path": "MedicationRequest.authoredOn",
        "short": "Date the prescription was issued",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.requester",
        "path": "MedicationRequest.requester",
        "short": "Requesting practitioner (optional)",
        "max": "1",
        "mustSupport": false
      },
      {
        "id": "MedicationRequest.insurance",
        "path": "MedicationRequest.insurance",
        "short": "Insurance coverage (optional)",
        "mustSupport": false
      },
      {
        "id": "MedicationRequest.dosageInstruction",
        "path": "MedicationRequest.dosageInstruction",
        "short": "Dosage, structured and/or free text (DosageDgMP)",
        "definition": "Binds DosageDgMP from de.fhir.medication for structured and/or free-text dosage. Whether an entry is present is governed by the dosageFlag extension, not by cardinality.",
        "min": 0,
        "type": [
          {
            "code": "Dosage",
            "profile": [
              "http://ig.fhir.de/igs/medication/StructureDefinition/DosageDgMP"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.dispenseRequest",
        "path": "MedicationRequest.dispenseRequest",
        "short": "Dispense authorization",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.dispenseRequest.quantity",
        "path": "MedicationRequest.dispenseRequest.quantity",
        "short": "Package quantity to dispense",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.dispenseRequest.expectedSupplyDuration",
        "path": "MedicationRequest.dispenseRequest.expectedSupplyDuration",
        "short": "Expected supply duration (days for narcotics, weeks for T-prescriptions)",
        "definition": "Expected supply duration of the medicine: in days for narcotics, in weeks for teratogenic medicines.",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.substitution",
        "path": "MedicationRequest.substitution",
        "short": "Substitution permission (aut idem)",
        "mustSupport": true
      },
      {
        "id": "MedicationRequest.substitution.allowed[x]",
        "path": "MedicationRequest.substitution.allowed[x]",
        "short": "Substitution permission (aut idem)",
        "type": [
          {
            "code": "boolean"
          }
        ],
        "mustSupport": true
      }
    ]
  }
}