Family Member History Profile¶
| Canonical | ../StructureDefinition/nexus-emr-core-familymemberhistory |
|---|---|
| Status | draft (experimental) · 1.26.0 |
| Base | FamilyMemberHistory (constraint) |
| Source | FSH · 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.
TypedFhir API / Pydantic schema
The typed accessor surface FamilyMemberHistory exposes for FamilyMemberHistory — generated from this IG's compiled profile; each typed accessor has a validating raw-FHIR twin (xRaw) where marked. The three ports are parity-enforced.
The AI-facing shape: from typed_fhir.facade.generated.schemas import FamilyMemberHistorySchema — model_json_schema() is a structured-output / tool definition; instantiating validates an extraction. Generated source.
class FamilyMemberHistorySchema(BaseModel):
"""AI-facing shape of the FamilyMemberHistory profile: the facade's typed accessor
surface (curated + salient fields) as a pydantic model. `model_json_schema()` is a
structured-output / tool schema; instantiating validates an extraction."""
model_config = ConfigDict(extra="forbid")
status: Literal["completed", "entered-in-error", "health-unknown", "partial"] | None = Field(
None,
description=(
"partial | completed | entered-in-error | health-unknown. A code specifying the "
"status of the record of the family history of a specific family member. Note: This "
"element is labeled as a modifier because the status contains codes that mark the "
"resource as not currently valid. FamilyMemberHistory.status — 1..1"
),
)
data_absent_reason: Concept | None = Field(
None,
description=(
"subject-unknown | withheld | unable-to-obtain | deferred. Describes why the family "
"member's history is not available. FamilyMemberHistory.dataAbsentReason — 0..1"
),
)
patient: Reference | None = Field(
None,
description=(
"The patient whose family history this is. The person who this history concerns. "
"FamilyMemberHistory.patient — 1..1"
),
)
date: FuzzyDate | None = Field(
None,
description=(
"When the history was recorded/updated -- the effective date. The date (and possibly "
"time) when the family member history was recorded or last updated. Note: This should "
"be captured even if the same as the date on the List aggregating the full family "
"history. FamilyMemberHistory.date — 0..1"
),
)
relationship: Concept | None = Field(
None,
description=(
"Who the relative is (v3 FamilyMember: MTH, FTH, SIB, ...). The type of relationship "
"this person has to the patient (father, mother, brother etc.). Note: 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). "
"FamilyMemberHistory.relationship — 1..1"
),
)
sex: Concept | None = Field(
None,
description=(
"male | female | other | unknown. The birth sex of the family member. Note: This "
"element should ideally reflect whether the individual is genetically male or female. "
"However, as reported information based on the knowledge of the patient or reporting "
"friend/relative, there may be situations where the reported sex might not be totally "
"accurate. E.g. 'Aunt Sue' might be XY rather than XX. Questions soliciting this "
"information should be phrased to encourage capture of genetic sex where known. "
"However, systems performing analysis should also allow for the possibility of "
"imprecision with this element. FamilyMemberHistory.sex — 0..1. codes (extensible): "
"female | male | other | unknown"
),
)
reason_code: Concept | None = Field(
None,
description=(
"Why was family member history performed?. Describes why the family member history "
"occurred in coded or textual form. Note: Textual reasons can be captured using "
"reasonCode.text. FamilyMemberHistory.reasonCode — 0..*"
),
)
condition: dict | None = Field(
None,
description=(
"Conditions the relative had. The significant Conditions (or condition) that the "
"family member had. This is a repeating section to allow a system to represent more "
"than one condition per resource, though there is nothing stopping multiple resources "
"- one per condition. FamilyMemberHistory.condition — 0..*"
),
)
deceased: bool | None = Field(
None,
description=(
"Dead? How old/when?. Deceased flag or the actual or approximate age of the relative "
"at the time of death for the family member history record. Note: 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. Salient field — deceasedBoolean"
),
)