FHIR Resources as Model Classes - Python classes for all FHIR resources with validation and serialization
—
Clinical data resources for comprehensive healthcare documentation including observations, conditions, procedures, medications, and diagnostic reports. These resources capture the clinical aspects of patient care and medical history.
Clinical observations, measurements, and assessments including vital signs, laboratory results, and clinical findings.
class Observation(DomainResource):
"""Clinical observation, measurement, or assertion"""
def __init__(
self,
# Core observation data
identifier: Optional[List["Identifier"]] = None,
status: str, # registered | preliminary | final | amended | corrected | cancelled | entered-in-error | unknown
category: Optional[List["CodeableConcept"]] = None,
code: "CodeableConcept",
subject: Optional["Reference"] = None,
# Context and timing
encounter: Optional["Reference"] = None,
effectiveDateTime: Optional[str] = None, # DateTime
effectivePeriod: Optional["Period"] = None,
effectiveTiming: Optional["Timing"] = None,
effectiveInstant: Optional[str] = None, # Instant
issued: Optional[str] = None, # Instant
# Value and results
valueQuantity: Optional["Quantity"] = None,
valueCodeableConcept: Optional["CodeableConcept"] = None,
valueString: Optional[str] = None,
valueBoolean: Optional[bool] = None,
valueInteger: Optional[int] = None,
valueRange: Optional["Range"] = None,
valueRatio: Optional["Ratio"] = None,
valueSampledData: Optional["SampledData"] = None,
valueTime: Optional[str] = None, # Time
valueDateTime: Optional[str] = None, # DateTime
valuePeriod: Optional["Period"] = None,
valueAttachment: Optional["Attachment"] = None,
# Interpretation and reference ranges
dataAbsentReason: Optional["CodeableConcept"] = None,
interpretation: Optional[List["CodeableConcept"]] = None,
note: Optional[List["Annotation"]] = None,
bodySite: Optional["CodeableConcept"] = None,
method: Optional["CodeableConcept"] = None,
specimen: Optional["Reference"] = None,
device: Optional["Reference"] = None,
referenceRange: Optional[List["ObservationReferenceRange"]] = None,
# Related observations
hasMember: Optional[List["Reference"]] = None,
derivedFrom: Optional[List["Reference"]] = None,
component: Optional[List["ObservationComponent"]] = None,
# Performers
performer: Optional[List["Reference"]] = None,
**kwargs
): ...Usage Example:
from fhir.resources.observation import Observation
from fhir.resources.codeableconcept import CodeableConcept
from fhir.resources.coding import Coding
from fhir.resources.quantity import Quantity
from fhir.resources.reference import Reference
# Blood pressure observation
bp_observation = Observation(
status="final",
category=[
CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/observation-category",
code="vital-signs",
display="Vital Signs"
)]
)
],
code=CodeableConcept(
coding=[Coding(
system="http://loinc.org",
code="85354-9",
display="Blood pressure panel with all children optional"
)]
),
subject=Reference(
reference="Patient/patient-001"
),
effectiveDateTime="2024-01-15T10:30:00Z",
component=[
ObservationComponent(
code=CodeableConcept(
coding=[Coding(
system="http://loinc.org",
code="8480-6",
display="Systolic blood pressure"
)]
),
valueQuantity=Quantity(
value=120,
unit="mmHg",
system="http://unitsofmeasure.org",
code="mm[Hg]"
)
),
ObservationComponent(
code=CodeableConcept(
coding=[Coding(
system="http://loinc.org",
code="8462-4",
display="Diastolic blood pressure"
)]
),
valueQuantity=Quantity(
value=80,
unit="mmHg",
system="http://unitsofmeasure.org",
code="mm[Hg]"
)
)
]
)Medical conditions, diagnoses, and health problems affecting the patient.
class Condition(DomainResource):
"""Medical condition, diagnosis, or health problem"""
def __init__(
self,
# Core condition data
identifier: Optional[List["Identifier"]] = None,
clinicalStatus: Optional["CodeableConcept"] = None,
verificationStatus: Optional["CodeableConcept"] = None,
category: Optional[List["CodeableConcept"]] = None,
severity: Optional["CodeableConcept"] = None,
code: Optional["CodeableConcept"] = None,
bodySite: Optional[List["CodeableConcept"]] = None,
subject: "Reference",
# Context and timing
encounter: Optional["Reference"] = None,
onsetDateTime: Optional[str] = None, # DateTime
onsetAge: Optional["Age"] = None,
onsetPeriod: Optional["Period"] = None,
onsetRange: Optional["Range"] = None,
onsetString: Optional[str] = None,
abatementDateTime: Optional[str] = None, # DateTime
abatementAge: Optional["Age"] = None,
abatementPeriod: Optional["Period"] = None,
abatementRange: Optional["Range"] = None,
abatementString: Optional[str] = None,
recordedDate: Optional[str] = None, # DateTime
# Clinical details
stage: Optional[List["ConditionStage"]] = None,
evidence: Optional[List["ConditionEvidence"]] = None,
note: Optional[List["Annotation"]] = None,
# Recorder and asserter
recorder: Optional["Reference"] = None,
asserter: Optional["Reference"] = None,
**kwargs
): ...Usage Example:
from fhir.resources.condition import Condition
# Diabetes diagnosis
diabetes_condition = Condition(
clinicalStatus=CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/condition-clinical",
code="active",
display="Active"
)]
),
verificationStatus=CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/condition-ver-status",
code="confirmed",
display="Confirmed"
)]
),
category=[
CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/condition-category",
code="encounter-diagnosis",
display="Encounter Diagnosis"
)]
)
],
code=CodeableConcept(
coding=[Coding(
system="http://snomed.info/sct",
code="44054006",
display="Diabetes mellitus type 2"
)]
),
subject=Reference(
reference="Patient/patient-001"
),
onsetDateTime="2020-06-15",
recordedDate="2020-06-15T14:30:00Z"
)Medical procedures, surgeries, and therapeutic interventions performed on patients.
class Procedure(DomainResource):
"""Medical procedure performed on patient"""
def __init__(
self,
# Core procedure data
identifier: Optional[List["Identifier"]] = None,
instantiatesCanonical: Optional[List[str]] = None,
instantiatesUri: Optional[List[str]] = None,
basedOn: Optional[List["Reference"]] = None,
partOf: Optional[List["Reference"]] = None,
status: str, # preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
statusReason: Optional["CodeableConcept"] = None,
category: Optional[List["CodeableConcept"]] = None,
code: Optional["CodeableConcept"] = None,
subject: "Reference",
# Context and timing
encounter: Optional["Reference"] = None,
occurrenceDateTime: Optional[str] = None, # DateTime
occurrencePeriod: Optional["Period"] = None,
occurrenceString: Optional[str] = None,
occurrenceAge: Optional["Age"] = None,
occurrenceRange: Optional["Range"] = None,
occurrenceTiming: Optional["Timing"] = None,
recorded: Optional[str] = None, # DateTime
# Clinical details
recorder: Optional["Reference"] = None,
reportedBoolean: Optional[bool] = None,
reportedReference: Optional["Reference"] = None,
performer: Optional[List["ProcedurePerformer"]] = None,
location: Optional["Reference"] = None,
reason: Optional[List["CodeableReference"]] = None,
bodySite: Optional[List["CodeableConcept"]] = None,
outcome: Optional["CodeableConcept"] = None,
report: Optional[List["Reference"]] = None,
complication: Optional[List["CodeableReference"]] = None,
followUp: Optional[List["CodeableConcept"]] = None,
note: Optional[List["Annotation"]] = None,
# Devices and supplies
focalDevice: Optional[List["ProcedureFocalDevice"]] = None,
used: Optional[List["CodeableReference"]] = None,
supportingInfo: Optional[List["Reference"]] = None,
**kwargs
): ...Medication administration, dispensing, requests, and statements for comprehensive medication management.
class MedicationRequest(DomainResource):
"""Prescription or medication order"""
def __init__(
self,
# Core request data
identifier: Optional[List["Identifier"]] = None,
status: str, # active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown
statusReason: Optional["CodeableConcept"] = None,
intent: str, # proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
category: Optional[List["CodeableConcept"]] = None,
priority: Optional[str] = None, # routine | urgent | asap | stat
doNotPerform: Optional[bool] = None,
medication: "CodeableReference",
subject: "Reference",
# Context and timing
informationSource: Optional[List["Reference"]] = None,
encounter: Optional["Reference"] = None,
supportingInformation: Optional[List["Reference"]] = None,
authoredOn: Optional[str] = None, # DateTime
requester: Optional["Reference"] = None,
reported: Optional[bool] = None,
performer: Optional[List["Reference"]] = None,
device: Optional[List["Reference"]] = None,
recorder: Optional["Reference"] = None,
# Dosage and administration
reason: Optional[List["CodeableReference"]] = None,
courseOfTherapyType: Optional["CodeableConcept"] = None,
insurance: Optional[List["Reference"]] = None,
note: Optional[List["Annotation"]] = None,
renderedDosageInstruction: Optional[str] = None,
effectiveDosePeriod: Optional["Period"] = None,
dosageInstruction: Optional[List["Dosage"]] = None,
# Dispensing details
dispenseRequest: Optional["MedicationRequestDispenseRequest"] = None,
substitution: Optional["MedicationRequestSubstitution"] = None,
eventHistory: Optional[List["Reference"]] = None,
**kwargs
): ...
class MedicationAdministration(DomainResource):
"""Record of medication given to patient"""
def __init__(
self,
# Core administration data
identifier: Optional[List["Identifier"]] = None,
basedOn: Optional[List["Reference"]] = None,
partOf: Optional[List["Reference"]] = None,
status: str, # in-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown
statusReason: Optional[List["CodeableConcept"]] = None,
category: Optional[List["CodeableConcept"]] = None,
medication: "CodeableReference",
subject: "Reference",
# Context and timing
encounter: Optional["Reference"] = None,
supportingInformation: Optional[List["Reference"]] = None,
occurenceDateTime: Optional[str] = None, # DateTime
occurencePeriod: Optional["Period"] = None,
recorded: Optional[str] = None, # DateTime
isSubPotent: Optional[bool] = None,
subPotentReason: Optional[List["CodeableConcept"]] = None,
performer: Optional[List["MedicationAdministrationPerformer"]] = None,
reason: Optional[List["CodeableReference"]] = None,
request: Optional["Reference"] = None,
device: Optional[List["Reference"]] = None,
note: Optional[List["Annotation"]] = None,
# Dosage details
dosage: Optional["MedicationAdministrationDosage"] = None,
eventHistory: Optional[List["Reference"]] = None,
**kwargs
): ...Results of diagnostic procedures including laboratory tests, imaging studies, and pathology reports.
class DiagnosticReport(DomainResource):
"""Report of diagnostic procedure results"""
def __init__(
self,
# Core report data
identifier: Optional[List["Identifier"]] = None,
basedOn: Optional[List["Reference"]] = None,
status: str, # registered | partial | preliminary | modified | final | amended | corrected | appended | cancelled | entered-in-error | unknown
category: Optional[List["CodeableConcept"]] = None,
code: "CodeableConcept",
subject: Optional["Reference"] = None,
encounter: Optional["Reference"] = None,
# Timing and context
effectiveDateTime: Optional[str] = None, # DateTime
effectivePeriod: Optional["Period"] = None,
issued: Optional[str] = None, # Instant
performer: Optional[List["Reference"]] = None,
resultsInterpreter: Optional[List["Reference"]] = None,
specimen: Optional[List["Reference"]] = None,
# Results and findings
result: Optional[List["Reference"]] = None,
note: Optional[List["Annotation"]] = None,
study: Optional[List["Reference"]] = None,
supportingInfo: Optional[List["DiagnosticReportSupportingInfo"]] = None,
# Media and presentation
media: Optional[List["DiagnosticReportMedia"]] = None,
composition: Optional["Reference"] = None,
conclusion: Optional[str] = None,
conclusionCode: Optional[List["CodeableConcept"]] = None,
presentedForm: Optional[List["Attachment"]] = None,
**kwargs
): ...from typing import Optional, List
from fhir.resources.domainresource import DomainResource
# Clinical resource backbone elements
class ObservationComponent: ...
class ObservationReferenceRange: ...
class ConditionStage: ...
class ConditionEvidence: ...
class ProcedurePerformer: ...
class ProcedureFocalDevice: ...
class MedicationRequestDispenseRequest: ...
class MedicationRequestSubstitution: ...
class MedicationAdministrationPerformer: ...
class MedicationAdministrationDosage: ...
class DiagnosticReportSupportingInfo: ...
class DiagnosticReportMedia: ...
# Complex data types used in clinical resources
class Age: ...
class CodeableReference: ...
class SampledData: ...
class Timing: ...
class Dosage: ...Install with Tessl CLI
npx tessl i tessl/pypi-fhir--resources