Skip to content

Condition Profile

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

Nexus EMR profile for Condition resource, representing health concerns (CII E11) or clinical assessments (CII E34). Constrains necessary elements, requires a Nexus EMR identifier, and adds support for required extensions and security labels.

TypedFhir API / Pydantic schema

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

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

    clinical_status: Concept | None = Field(
        None,
        description=(
            "Whether the condition is still current. The clinical status of the condition. "
            "Indicates whether the condition is currently active or resolved. Note: This is a "
            "modifier element that affects how the condition should be interpreted in clinical "
            "decision support. Condition.clinicalStatus — 0..1. codes (required): active | "
            "inactive | recurrence | relapse | remission | resolved"
        ),
    )
    verification_status: Concept | None = Field(
        None,
        description=(
            "How confident the recorder is that the condition is real. The verification status to "
            "support the clinical status of the condition. Indicates the confidence in the "
            "condition. Note: This is a modifier element. Unconfirmed conditions should be "
            "interpreted with caution. Condition.verificationStatus — 0..1. codes (required): "
            "confirmed | differential | entered-in-error | provisional | refuted | unconfirmed"
        ),
    )
    category: Concept | None = Field(
        None,
        description=(
            "problem-list-item | encounter-diagnosis. A category assigned to the condition. "
            "Distinguishes problem list items from encounter diagnoses. **Binding guidance for "
            "downstream converters:** - Conditions sourced from `dxresearch` (disease registry) → "
            "`problem-list-item` - Conditions sourced from `casemgmt_issue` with CPP types (e.g. "
            "`MedHistory`) → `problem-list-item` - Conditions referenced from an Invoice line "
            "item or appointment → `encounter-diagnosis`. Note: Multiple categories can be "
            "assigned. Problem list items persist across encounters. Condition.category — 1..*. "
            "codes (extensible): encounter-diagnosis | problem-list-item"
        ),
    )
    code: Concept | None = Field(
        None,
        description=(
            "Condition/diagnosis with raw code support. The specific condition, problem, or "
            "diagnosis. REQUIRED: text element for human readability OPTIONAL: Standard "
            "terminology codes (ICD-10, SNOMED CT, etc.) OPTIONAL: Raw EMR condition codes for "
            "source system preservation Nexus EMR does not mandate a specific coding system for "
            "conditions. The text element ensures human readability even when coded values are "
            "not recognized. Note: 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.code — 1..1"
        ),
    )
    body_site: Concept | None = Field(
        None,
        description=(
            "Anatomical location, if relevant. The anatomical location where this condition "
            "manifests itself. Note: Only used if not implicit in code found in Condition.code. "
            "If the use case requires attributes from the BodySite resource (e.g. to identify and "
            "track separately) then use the standard extension "
            "[bodySite](extension-bodysite.html). May be a summary code, or a reference to a very "
            "precise definition of the location, or both. Condition.bodySite — 0..*"
        ),
    )
    recorded_date: FuzzyDate | None = Field(
        None,
        description=(
            "Date condition was first recorded. The date on which the condition was first "
            "recorded in this system. This may differ from the onset date. Note: This represents "
            "when the condition was documented, not when it first occurred. "
            "Condition.recordedDate — 0..1"
        ),
    )
    onset_date_time: FuzzyDate | None = Field(
        None,
        description=(
            "When the condition started. The date/time or age when the condition first manifested "
            "or was first observed. Can be a specific date, age, period, or range. Note: The "
            "onset may be vague (e.g., 'childhood') or precise. Use the most appropriate data "
            "type. Condition.onset[x] — 0..1"
        ),
    )
    subject: Reference | None = Field(
        None,
        description=(
            "Who has the condition. The patient who has the condition, problem, or diagnosis. "
            "Must reference using Nexus EMR patient identifier. Note: References should use "
            "identifier-based references following Nexus EMR patterns. Condition.subject — 1..1"
        ),
    )
    onset: FuzzyDate | None = Field(
        None,
        description=(
            "When the condition started. The date/time or age when the condition first manifested "
            "or was first observed. Can be a specific date, age, period, or range. Note: The "
            "onset may be vague (e.g., 'childhood') or precise. Use the most appropriate data "
            "type. Salient field — onsetDateTime | onsetPeriod.start"
        ),
    )