Skip to content

Risk Assessment Profile

Canonical../StructureDefinition/nexus-emr-core-riskassessment
Statusdraft (experimental) · 1.26.0
BaseRiskAssessment (constraint)
SourceFSH · 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)"