Skip to content

RelatedPerson Profile

Canonical../StructureDefinition/nexus-emr-core-relatedperson
Statusdraft · 1.26.0
BaseRelatedPerson (constraint)
SourceFSH · JSON

Nexus EMR profile for RelatedPerson, capturing an alternative contact for a patient — a person the practice can reach on the patient's behalf, with a personal relationship, any number of contact purposes, contact details, an optional note, and an optional primary (call-first) flag. Backs the Patient Profile Relationships section.

TypedFhir API / Pydantic schema

The typed accessor surface RelatedPerson exposes for RelatedPerson — 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 RelatedPersonSchemamodel_json_schema() is a structured-output / tool definition; instantiating validates an extraction. Generated source.

class RelatedPersonSchema(BaseModel):
    """AI-facing shape of the RelatedPerson 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")

    patient: Reference | None = Field(
        None,
        description=(
            "The patient this person is a contact for. The patient on whose behalf this person "
            "can be contacted. RelatedPerson.patient — 1..1"
        ),
    )
    relationship: Concept | None = Field(
        None,
        description=(
            "Personal relationship to the patient, plus any contact purposes. The nature of the "
            "relationship between a patient and the related person. Note: Carries the personal "
            "relationship (a member of the official relatedperson-relationshiptype value set — "
            "HL7 v3 PersonalRelationshipRoleType or v2-0131 'O' — with v3 RoleCode GUARD for "
            "legal guardian) and zero or more contact purposes (the local contact-purpose system, "
            "dual-coded with an official v2-0131 / v3 RoleCode / v3 RoleClass code where one "
            "exists). Readers discriminate the relationship by matching system AND code against "
            "the relationship value set. 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). "
            "RelatedPerson.relationship — 0..*"
        ),
    )
    name: dict | None = Field(
        None,
        description=(
            "The contact's name. A name associated with the person. RelatedPerson.name — 0..*"
        ),
    )
    telecom: dict | None = Field(
        None,
        description=(
            "The contact's phone numbers and e-mail (a work number's extension rides on the "
            "contact-point-phone-extension). A contact detail for the person, e.g. a telephone "
            "number or an email address. Note: Person may have multiple ways to be contacted with "
            "different uses or applicable periods. May need to have options for contacting the "
            "person urgently, and also to help with identification. RelatedPerson.telecom — 0..*"
        ),
    )
    gender: Literal["female", "male", "other", "unknown"] | None = Field(
        None,
        description=(
            "male | female | other | unknown. Administrative Gender - the gender that the person "
            "is considered to have for administration and record keeping purposes. "
            "RelatedPerson.gender — 0..1"
        ),
    )