{
  "resourceType": "StructureDefinition",
  "id": "MaiaRiskPredictionModel",
  "url": "https://tiplu.de/fhir/maia/StructureDefinition/MaiaRiskPredictionModel",
  "version": "1.0.0",
  "name": "MaiaRiskPredictionModel",
  "title": "Maia Risk Prediction Model",
  "status": "draft",
  "experimental": false,
  "date": "2025-04-30",
  "publisher": "Tiplu GmbH",
  "description": "Tiplu risk predictions are based on machine learning models trained in Tiplu's own ML network and on the basis of medical labels, which are used to generate alerts on the probability of occurrence of certain diseases and medical events.\n\n*German:*\nTiplu-Risikoprädiktionen beruhen auf Machine Learning-Modellen, die im Tiplu-eigenen ML-Netz und auf Grundlage medizinischer Labels trainiert werden und auf deren Basis Hinweise zur Eintrittswahrscheinlichkeit bestimmter Erkrankungen und medizinischer Ereignisse angeboten werden.",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "RiskAssessment",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/RiskAssessment",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "RiskAssessment.text",
        "path": "RiskAssessment.text",
        "short": "human-readable narrative",
        "comment": "HTML representation of this risk prediction model",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.text.status",
        "path": "RiskAssessment.text.status",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.text.div",
        "path": "RiskAssessment.text.div",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.extension",
        "path": "RiskAssessment.extension",
        "min": 1
      },
      {
        "id": "RiskAssessment.extension:DefinitionReference",
        "path": "RiskAssessment.extension",
        "sliceName": "DefinitionReference",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaRiskAssessmentDefinitionReference"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.extension:DefinitionReference.value[x]",
        "path": "RiskAssessment.extension.value[x]",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.status",
        "path": "RiskAssessment.status",
        "short": "Status of the risk prediction model",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.method",
        "path": "RiskAssessment.method",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.method.coding",
        "path": "RiskAssessment.method.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.method.coding:AssessmentMethode",
        "path": "RiskAssessment.method.coding",
        "sliceName": "AssessmentMethode",
        "short": "Assessment method used for this RiskAssessment",
        "min": 1,
        "max": "1",
        "patternCoding": {
          "system": "https://tiplu.de/fhir/maia/CodeSystem/MaiaAssessmentMethod"
        },
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://tiplu.de/fhir/maia/ValueSet/MaiaAssessmentMethodVS"
        }
      },
      {
        "id": "RiskAssessment.method.coding:AssessmentMethode.system",
        "path": "RiskAssessment.method.coding.system",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.method.coding:AssessmentMethode.code",
        "path": "RiskAssessment.method.coding.code",
        "min": 1,
        "patternCode": "TRPM",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.method.coding:AssessmentMethode.display",
        "path": "RiskAssessment.method.coding.display",
        "min": 1,
        "patternString": "Tiplu risk prediction model",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.code",
        "path": "RiskAssessment.code",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.code.coding",
        "path": "RiskAssessment.code.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.code.coding:AssessmentTyp",
        "path": "RiskAssessment.code.coding",
        "sliceName": "AssessmentTyp",
        "short": "Coding of the Tiplu risk rediction model",
        "min": 1,
        "max": "1",
        "patternCoding": {
          "system": "http://snomed.info/sct"
        },
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://tiplu.de/fhir/maia/ValueSet/MaiaRiskPredictionModelAssessmentTypeVS"
        }
      },
      {
        "id": "RiskAssessment.code.coding:AssessmentTyp.system",
        "path": "RiskAssessment.code.coding.system",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.code.coding:AssessmentTyp.code",
        "path": "RiskAssessment.code.coding.code",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.code.coding:AssessmentTyp.display",
        "path": "RiskAssessment.code.coding.display",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.subject",
        "path": "RiskAssessment.subject",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaPatient"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.subject.identifier",
        "path": "RiskAssessment.subject.identifier",
        "short": "Patient ID of the referenced patient",
        "comment": "The MAIA FHIR endpoints don't have the possibility to get the patient resource. For this, the resource identifier is mandatory.",
        "min": 1,
        "type": [
          {
            "code": "Identifier",
            "profile": [
              "http://fhir.de/StructureDefinition/identifier-pid"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.subject.identifier.type",
        "path": "RiskAssessment.subject.identifier.type",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.subject.identifier.system",
        "path": "RiskAssessment.subject.identifier.system",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.subject.identifier.value",
        "path": "RiskAssessment.subject.identifier.value",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter",
        "path": "RiskAssessment.encounter",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaKontaktGesundheitseinrichtung"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter.extension",
        "path": "RiskAssessment.encounter.extension",
        "min": 1
      },
      {
        "id": "RiskAssessment.encounter.extension:AccountIdentifier",
        "path": "RiskAssessment.encounter.extension",
        "sliceName": "AccountIdentifier",
        "short": "Account Identifier (German: Fallnummer/Abrechnungsnummer) of the referenced account",
        "comment": "The MAIA FHIR endpoints don't have the possibility to get the account or encounter resource. For this, the resource identifier is mandatory.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaAccountIdentifier"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter.extension:AccountIdentifier.value[x]",
        "path": "RiskAssessment.encounter.extension.value[x]",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter.extension:AccountIdentifier.value[x].type",
        "path": "RiskAssessment.encounter.extension.value[x].type",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter.extension:AccountIdentifier.value[x].system",
        "path": "RiskAssessment.encounter.extension.value[x].system",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.encounter.extension:AccountIdentifier.value[x].value",
        "path": "RiskAssessment.encounter.extension.value[x].value",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.occurrence[x]",
        "path": "RiskAssessment.occurrence[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "RiskAssessment.occurrence[x]:occurrenceDateTime",
        "path": "RiskAssessment.occurrence[x]",
        "sliceName": "occurrenceDateTime",
        "short": "Last calculation of MAIA",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "dateTime"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.performer",
        "path": "RiskAssessment.performer",
        "short": "Which software identifies the Tiplu risk predition model",
        "comment": "A Device example with valid MAIA information can be found in the Simplifier project.",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Device"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.basis",
        "path": "RiskAssessment.basis",
        "short": "Definition of the Tiplu risk predition model",
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction",
        "path": "RiskAssessment.prediction",
        "short": "Information about the predicted outcome",
        "comment": "There can be multiple prediction elements, tracking the individual predictions made at different timestamps defined by whenPeriod.start. Newer predictions invalidate older ones.",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.extension:Trend",
        "path": "RiskAssessment.prediction.extension",
        "sliceName": "Trend",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaRiskPredictionModelTrend"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.extension:Trend.value[x]",
        "path": "RiskAssessment.prediction.extension.value[x]",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.extension:Factor",
        "path": "RiskAssessment.prediction.extension",
        "sliceName": "Factor",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://tiplu.de/fhir/maia/StructureDefinition/MaiaRiskPredictionModelFactor"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.extension:Factor.value[x]",
        "path": "RiskAssessment.prediction.extension.value[x]",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.outcome",
        "path": "RiskAssessment.prediction.outcome",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.outcome.coding",
        "path": "RiskAssessment.prediction.outcome.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "RiskAssessment.prediction.outcome.coding:MaiaRiskResultCategory",
        "path": "RiskAssessment.prediction.outcome.coding",
        "sliceName": "MaiaRiskResultCategory",
        "short": "Category of the risk prediction result",
        "min": 1,
        "max": "*",
        "patternCoding": {
          "system": "https://tiplu.de/fhir/maia/CodeSystem/MaiaRiskResultCategory"
        },
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://tiplu.de/fhir/maia/ValueSet/MaiaRiskResultCategoryVS"
        }
      },
      {
        "id": "RiskAssessment.prediction.outcome.coding:MaiaRiskResultCategory.system",
        "path": "RiskAssessment.prediction.outcome.coding.system",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.outcome.coding:MaiaRiskResultCategory.code",
        "path": "RiskAssessment.prediction.outcome.coding.code",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.outcome.coding:MaiaRiskResultCategory.display",
        "path": "RiskAssessment.prediction.outcome.coding.display",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.probability[x]",
        "path": "RiskAssessment.prediction.probability[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.probability[x]:probabilityDecimal",
        "path": "RiskAssessment.prediction.probability[x]",
        "sliceName": "probabilityDecimal",
        "short": "Percentage of the probability",
        "comment": "Describes the probability of the risk to actually occur within the next 24 hours",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "decimal"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.when[x]",
        "path": "RiskAssessment.prediction.when[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "RiskAssessment.prediction.when[x]:whenPeriod",
        "path": "RiskAssessment.prediction.when[x]",
        "sliceName": "whenPeriod",
        "comment": "As long as the risk is active, the end time is set 24 hours into the future. If there are changes to the order, the end time is updated accordingly and the new value is added.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Period"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.when[x]:whenPeriod.start",
        "path": "RiskAssessment.prediction.when[x].start",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.when[x]:whenPeriod.end",
        "path": "RiskAssessment.prediction.when[x].end",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "RiskAssessment.prediction.rationale",
        "path": "RiskAssessment.prediction.rationale",
        "short": "Reasoning",
        "comment": "Provides the most relevant factors for the result provided by the risk prediction model",
        "mustSupport": true
      }
    ]
  }
}