Skip to content

Family Member History Profile

Canonical../StructureDefinition/nexus-emr-core-familymemberhistory
Statusdraft (experimental) · 1.26.0
BaseFamilyMemberHistory (constraint)
SourceFSH · JSON

Nexus EMR profile for FamilyMemberHistory -- family history as discrete chart content for summaries and extraction output. First pass: one relative, coded relationship, condition list with onset. Closed to SMART apps pending an exposure decision.

FSH

The authored source of truth: resources/StructureDefinition-nexus-emr-core-familymemberhistory.fsh (edit on GitHub). One FSH file may define several related artifacts.

// NexusEmrCoreFamilyMemberHistory.fsh
// FIRST PASS (FHIR-29). Family history as discrete chart content.
//
// CONSUMER: the AI harness's read list names FamilyHistory among the Patient Summary Domains
// every summary loads, and clinical extraction produces family-history findings, so extraction
// output needs a contract to be written against. (The demo dataset, SD-242, lists it too.)
//
// FIRST-PASS SCOPE: one relative, one-or-more conditions, coded relationship. Deliberately NOT
// settled: age/estimated-age representation richness, genetic-pedigree modelling, and the
// relationship to the free-text family-history block heritage charts carry (a reconciliation
// question, same family as the OSCAR measurements mapping).
//
// SMART EXPOSURE: deliberately NOT declared -- closed to apps pending a decision (FHIR-28 policy).

Alias: $NexusEmrCoreFamilyMemberHistory = ../StructureDefinition/nexus-emr-core-familymemberhistory

Profile:        NexusEmrCoreFamilyMemberHistory
Parent:         FamilyMemberHistory
Id:             nexus-emr-core-familymemberhistory
Title:          "Family Member History Profile"
Description:    "Nexus EMR profile for FamilyMemberHistory -- family history as discrete chart content for summaries and extraction output. First pass: one relative, coded relationship, condition list with onset. Closed to SMART apps pending an exposure decision."
* ^url = $NexusEmrCoreFamilyMemberHistory
* ^status = #draft
* insert NoResourceNoteExtension
* ^experimental = true

* insert EffectiveDate([[date]])

// Salient fields -- the reader/render surface (see SalientField + the Salient RuleSet). What a
// family history says is WHO the relative is and WHAT they had; everything else is context.
* insert Salient(relationship, relationship, coded)
* insert Salient(status, status, code)
* insert Salient(date, date, dateTime)
* insert Salient(condition, [[condition.first().code.text | condition.first().code.coding.first().display]], string)
* insert SalientComment([[The FIRST condition, as text: its `code.text`, else the first coding's display. `condition` is 0..*, and a relative with several recorded conditions surfaces only the first here; the full list is reachable through the typed collection, and a chart that needs every one walks `condition` rather than reading this. Declared `string` rather than `coded` for the same reason AllergyIntolerance's `reaction` is: a derived expression does not resolve to a typed Concept, so a `coded` declaration would name a type the accessor does not return.]])
* insert Salient(deceased, [[deceasedBoolean]], boolean)
* insert SalientComment([[Whether the relative is deceased, and ONLY the boolean arm of `deceased[x]`. A record carrying an age or a date of death instead leaves this absent, and absent means the fact was not stated as a boolean rather than that the relative is alive. That value stays on the raw resource.]])

* . ^short = "Nexus EMR Family Member History Core"

* status 1..1 MS
* status ^short = "partial | completed | entered-in-error | health-unknown"

* patient 1..1 MS
* patient only Reference(NexusEmrCorePatient)
* patient ^short = "The patient whose family history this is"

* date 0..1 MS
* date ^short = "When the history was recorded/updated -- the effective date"

* relationship 1..1 MS
* relationship from http://terminology.hl7.org/ValueSet/v3-FamilyMember (extensible)
* relationship ^short = "Who the relative is (v3 FamilyMember: MTH, FTH, SIB, ...)"
* relationship ^comment = "Extensible: heritage charts may carry local relationship wording as text alongside the coding. Where this code was mapped from a source system's own vocabulary, carry the raw coding alongside the mapped one, flagged `userSelected = true`. See [Carrying the raw code](../guide/patterns/raw-codes.md)."

* condition 0..* MS
* condition ^short = "Conditions the relative had"
* condition.code 1..1 MS
* condition.code ^short = "A condition affecting a family member"
* condition.code ^comment = "Text is required for readability; coding is optional, the same posture as Condition.code."
* condition.onset[x] 0..1 MS
* condition.onset[x] ^short = "How old the relative was when the condition began"
* condition.onset[x] ^comment = "Typically onsetAge, as in 'diagnosed at 52'."