MII IG PRO
2026.2.0 - ci-build
Unknown region code '276'
MII IG PRO, published by Medizininformatik-Initiative. This guide is not an authorized publication; it is the continuous build for version 2026.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/medizininformatik-initiative/kerndatensatzmodul-proms/ and changes regularly. See the Directory of published versions
This page includes translations from the original source language in which the guide was authored. Information on these translations and instructions on how to provide feedback on the translations can be found here.
The MII PRO module supports various scoring strategies along the Questionnaire -> QuestionnaireResponse -> Observation workflow. The choice of scoring method depends on organizational requirements, technical infrastructure, and use cases.
The scoring strategies can be divided into two fundamental categories:
Use case: Structured data collection without score calculations
Use case: Integration of external PRO systems (REDCap, clinical systems)
derivedFrom references the original QuestionnaireResponseUse case: Specialized scoring services (R libraries, statistical packages)
Use case: Real-time scoring with moderate complexity
Implementation approach – variable-based (recommended):
// FSH
// PROMIS Depression SF 4a Example
* extension[+].url = "http://hl7.org/fhir/StructureDefinition/variable"
* extension[=].valueExpression.name = "rawScore"
* extension[=].valueExpression.language = #text/fhirpath
* extension[=].valueExpression.expression = "%resource.item.where(linkId.matches('^promis-eddep(04|06|29|41)$')).answer.value.ordinal().sum()"
// T-Score Conversion
* item[=].extension[+].url = $sdc-questionnaire-calculated-expression
* item[=].extension[=].valueExpression.language = #text/fhirpath
* item[=].extension[=].valueExpression.expression = "iif(%rawScore=4, 41.0, iif(%rawScore=5, 49.0, ..., {})))))))))))))))))"
Advantages:
Use case: Complex statistical calculations, population-based normalization
// CQL
library PHQ9Scoring version '1.0.0'
define "PHQ-9 Raw Score":
Sum(QuestionnaireResponse.item.answer.value)
define "PHQ-9 Severity Category":
case
when "PHQ-9 Raw Score" between 0 and 4 then 'minimal'
when "PHQ-9 Raw Score" between 5 and 9 then 'mild'
when "PHQ-9 Raw Score" between 10 and 14 then 'moderate'
when "PHQ-9 Raw Score" between 15 and 19 then 'moderately severe'
else 'severe'
end
6a. Observation-Based Extraction
6b. Definition-Based Extraction
6c. StructureMap-Based Extraction
Complex questionnaires often generate multiple scores. Example EQ-5D-5L:
// FSH
// Index Score (preference-based)
* item[score-index].code = SCT#736534008 "EuroQol EQ-5D-5L index value"
// VAS Score (self-assessment)
* item[score-vas].code = SCT#736535009 "EuroQol EQ-5D-5L visual analog scale"
// Profile Score (domain-specific)
* item[score-profile].code = MII#eq5d5l-profile "EQ-5D-5L Profile Score"
ObservationDefinition Integration:
Use case: Harmonization between different PRO instruments
// FSH
// PHQ-9 -> PROMIS Depression Mapping
* derivedFrom[0] = Reference(PHQ9-QuestionnaireResponse)
* code = LOINC#77861-3 "PROMIS Depression T-score"
* method.text = "PHQ-9 to PROMIS Depression conversion algorithm (Choi et al. 2014)"
Use case: Longitudinal analyses, population metrics
// CQL
library PRO_Population_Metrics version '1.0.0'
define "Depression Prevalence":
Count(Observation where code = LOINC#44261-6 and value > 9) /
Count(Observation where code = LOINC#44261-6)
Score Validation:
Reference Data: