Risk Assessment Profile¶
| Canonical | ../StructureDefinition/nexus-emr-core-riskassessment |
|---|---|
| Status | draft (experimental) · 1.26.0 |
| Base | RiskAssessment (constraint) |
| Source | FSH · JSON |
Nexus EMR profile for RiskAssessment -- computed clinical risk scores. First pass: status, method, predictions (outcome + probability + qualitative band), basis. Closed to SMART apps pending an exposure decision.
FSH
The authored source of truth: resources/StructureDefinition-nexus-emr-core-riskassessment.fsh (edit on GitHub). One FSH file may define several related artifacts.
// NexusEmrCoreRiskAssessment.fsh
// FIRST PASS (FHIR-29). Computed clinical risk scores (CVD risk, fracture risk, ...).
//
// CONSUMER: the SD-242/SD-118 demo dataset lists risk scores, and the chart-module registry
// already anticipates this exact profile -- it carries a `profileAbsentReason` placeholder for
// RiskAssessment rather than fabricating a canonical (PSD-436's registry discipline). This
// profile replaces that placeholder with the real thing.
//
// FIRST-PASS SCOPE: status, method (which score), subject, one-or-more predictions
// (outcome + probability + qualitative band), basis (what went into the calculation).
// Deliberately NOT settled: score-method vocabulary (Framingham/QRISK/etc. have no agreed
// coding here yet) and mitigation modelling.
//
// MACHINE-COMPUTED SCORES CARRY `AIAST`, on the RiskAssessment itself. This follows the
// spec-wide rule rather than being a decision special to this profile: any resource whose
// content was produced by a non-human agent carries the label, whatever its type, so that
// "was this machine-produced" is one searchable question instead of a per-type rule. A score
// a clinician computed and recorded by hand does not carry it. The label answers WHETHER;
// `Provenance` answers what the calculation read and who accepted the result, and stays the
// place that detail lives. See the AI Attribution pattern in the handbook.
//
// Note the base resource already carries the model's own output precision: `prediction.
// probability[x]` admits a Range, and `prediction.qualitativeRisk` a band. Uncertainty about
// a score therefore has a home here without an extension.
//
// SMART EXPOSURE: deliberately NOT declared -- closed to apps pending a decision (FHIR-28 policy).
Alias: $NexusEmrCoreRiskAssessment = ../StructureDefinition/nexus-emr-core-riskassessment
Profile: NexusEmrCoreRiskAssessment
Parent: RiskAssessment
Id: nexus-emr-core-riskassessment
Title: "Risk Assessment Profile"
Description: "Nexus EMR profile for RiskAssessment -- computed clinical risk scores. First pass: status, method, predictions (outcome + probability + qualitative band), basis. Closed to SMART apps pending an exposure decision."
* ^url = $NexusEmrCoreRiskAssessment
* ^status = #draft
* insert NoResourceNoteExtension
* ^experimental = true
* insert EffectiveDate([[occurrenceDateTime]])
* . ^short = "Nexus EMR Risk Assessment Core"
* status 1..1 MS
* status ^short = "registered | preliminary | final | amended | ... | entered-in-error"
* method 0..1 MS
* method ^short = "Which score was computed (text-first until a method vocabulary settles)"
* subject 1..1 MS
* subject only Reference(NexusEmrCorePatient)
* subject ^short = "The patient"
* occurrenceDateTime 0..1 MS
* occurrenceDateTime ^short = "When the risk score was computed"
* condition 0..1 MS
* condition only Reference(NexusEmrCoreCondition)
* condition ^short = "The condition the assessment is about, when there is one"
* prediction 0..* MS
* prediction ^short = "The score itself: outcome + probability + qualitative band"
* prediction.outcome 0..1 MS
* prediction.outcome ^short = "What is being predicted ('10-year cardiovascular event')"
* prediction.probabilityDecimal 0..1 MS
* prediction.probabilityDecimal ^short = "The numeric score, as a probability in [0,1]"
* prediction.qualitativeRisk 0..1 MS
* prediction.qualitativeRisk from http://hl7.org/fhir/ValueSet/risk-probability (extensible)
* prediction.qualitativeRisk ^short = "low | moderate | high (the display band)"
* basis 0..* MS
* basis ^short = "What went into the calculation (the Observations/Conditions used)"