FHIR Resources as Model Classes - Python classes for all FHIR resources with validation and serialization
—
Healthcare administration resources for operational management including appointments, encounters, organizations, practitioners, and schedules. These resources support the business and administrative aspects of healthcare delivery.
Appointment booking, scheduling, and availability management for healthcare services.
class Appointment(DomainResource):
"""Booking for healthcare service between patient(s) and practitioner(s)"""
def __init__(
self,
# Core appointment data
identifier: Optional[List["Identifier"]] = None,
status: str, # proposed | pending | booked | arrived | fulfilled | cancelled | noshow | entered-in-error | checked-in | waitlist
cancellationReason: Optional["CodeableConcept"] = None,
class_: Optional[List["CodeableConcept"]] = None,
serviceCategory: Optional[List["CodeableConcept"]] = None,
serviceType: Optional[List["CodeableReference"]] = None,
specialty: Optional[List["CodeableConcept"]] = None,
appointmentType: Optional["CodeableConcept"] = None,
reason: Optional[List["CodeableReference"]] = None,
# Priority and urgency
priority: Optional["CodeableConcept"] = None,
description: Optional[str] = None,
replaces: Optional[List["Reference"]] = None,
# Timing and duration
start: Optional[str] = None, # Instant
end: Optional[str] = None, # Instant
minutesDuration: Optional[int] = None,
requestedPeriod: Optional[List["Period"]] = None,
# Participants and locations
slot: Optional[List["Reference"]] = None,
account: Optional[List["Reference"]] = None,
created: Optional[str] = None, # DateTime
cancellationDate: Optional[str] = None, # DateTime
note: Optional[List["Annotation"]] = None,
patientInstruction: Optional[List["CodeableReference"]] = None,
basedOn: Optional[List["Reference"]] = None,
subject: Optional["Reference"] = None,
participant: List["AppointmentParticipant"],
# Recurrence
recurrenceId: Optional[int] = None,
occurrenceChanged: Optional[bool] = None,
recurrenceTemplate: Optional[List["AppointmentRecurrenceTemplate"]] = None,
**kwargs
): ...
class Schedule(DomainResource):
"""Container for time slots for booking appointments"""
def __init__(
self,
# Core schedule data
identifier: Optional[List["Identifier"]] = None,
active: Optional[bool] = None,
serviceCategory: Optional[List["CodeableConcept"]] = None,
serviceType: Optional[List["CodeableReference"]] = None,
specialty: Optional[List["CodeableConcept"]] = None,
name: Optional[str] = None,
# Participants and actors
actor: List["Reference"],
# Timing and availability
planningHorizon: Optional["Period"] = None,
comment: Optional[str] = None,
**kwargs
): ...
class Slot(DomainResource):
"""Time slot for appointment booking"""
def __init__(
self,
# Core slot data
identifier: Optional[List["Identifier"]] = None,
serviceCategory: Optional[List["CodeableConcept"]] = None,
serviceType: Optional[List["CodeableReference"]] = None,
specialty: Optional[List["CodeableConcept"]] = None,
appointmentType: Optional[List["CodeableConcept"]] = None,
schedule: "Reference",
# Availability and timing
status: str, # busy | free | busy-unavailable | busy-tentative | entered-in-error
start: str, # Instant
end: str, # Instant
overbooked: Optional[bool] = None,
comment: Optional[str] = None,
**kwargs
): ...Usage Example:
from fhir.resources.appointment import Appointment
from fhir.resources.appointmentparticipant import AppointmentParticipant
from fhir.resources.reference import Reference
from fhir.resources.codeableconcept import CodeableConcept
# Create appointment for patient visit
appointment = Appointment(
status="booked",
serviceCategory=[
CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/service-category",
code="17",
display="General Practice"
)]
)
],
appointmentType=CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/v2-0276",
code="ROUTINE",
display="Routine appointment"
)]
),
description="Annual physical examination",
start="2024-03-15T09:00:00Z",
end="2024-03-15T09:30:00Z",
minutesDuration=30,
participant=[
AppointmentParticipant(
actor=Reference(
reference="Patient/patient-001",
display="Jane Smith"
),
required=True,
status="accepted"
),
AppointmentParticipant(
actor=Reference(
reference="Practitioner/dr-jones",
display="Dr. Sarah Jones"
),
required=True,
status="accepted"
)
]
)Healthcare encounters representing interactions between patients and healthcare providers.
class Encounter(DomainResource):
"""Interaction between patient and healthcare provider"""
def __init__(
self,
# Core encounter data
identifier: Optional[List["Identifier"]] = None,
status: str, # planned | in-progress | on-hold | discharged | completed | cancelled | discontinued | entered-in-error | unknown
class_: List["CodeableConcept"],
priority: Optional["CodeableConcept"] = None,
type: Optional[List["CodeableConcept"]] = None,
serviceType: Optional[List["CodeableReference"]] = None,
subject: Optional["Reference"] = None,
subjectStatus: Optional["CodeableConcept"] = None,
episodeOfCare: Optional[List["Reference"]] = None,
# Participants
basedOn: Optional[List["Reference"]] = None,
careTeam: Optional[List["Reference"]] = None,
partOf: Optional["Reference"] = None,
serviceProvider: Optional["Reference"] = None,
participant: Optional[List["EncounterParticipant"]] = None,
# Timing and location
appointment: Optional[List["Reference"]] = None,
virtualService: Optional[List["VirtualServiceDetail"]] = None,
actualPeriod: Optional["Period"] = None,
plannedStartDate: Optional[str] = None, # DateTime
plannedEndDate: Optional[str] = None, # DateTime
length: Optional["Duration"] = None,
reason: Optional[List["EncounterReason"]] = None,
diagnosis: Optional[List["EncounterDiagnosis"]] = None,
account: Optional[List["Reference"]] = None,
dietPreference: Optional[List["CodeableConcept"]] = None,
specialArrangement: Optional[List["CodeableConcept"]] = None,
specialCourtesy: Optional[List["CodeableConcept"]] = None,
# Admission and discharge
admission: Optional["EncounterAdmission"] = None,
location: Optional[List["EncounterLocation"]] = None,
**kwargs
): ...Healthcare organizations, practitioners, and their roles within the healthcare system.
class Organization(DomainResource):
"""Healthcare organization"""
def __init__(
self,
# Core organization data
identifier: Optional[List["Identifier"]] = None,
active: Optional[bool] = None,
type: Optional[List["CodeableConcept"]] = None,
name: Optional[str] = None,
alias: Optional[List[str]] = None,
description: Optional[str] = None,
# Contact information
contact: Optional[List["ExtendedContactDetail"]] = None,
# Relationships
partOf: Optional["Reference"] = None,
endpoint: Optional[List["Reference"]] = None,
# Qualifications
qualification: Optional[List["OrganizationQualification"]] = None,
**kwargs
): ...
class Practitioner(DomainResource):
"""Healthcare practitioner"""
def __init__(
self,
# Core practitioner data
identifier: Optional[List["Identifier"]] = None,
active: Optional[bool] = None,
name: Optional[List["HumanName"]] = None,
telecom: Optional[List["ContactPoint"]] = None,
address: Optional[List["Address"]] = None,
gender: Optional[str] = None, # male | female | other | unknown
birthDate: Optional[str] = None, # Date
# Professional details
photo: Optional[List["Attachment"]] = None,
qualification: Optional[List["PractitionerQualification"]] = None,
communication: Optional[List["PractitionerCommunication"]] = None,
**kwargs
): ...
class PractitionerRole(DomainResource):
"""Roles/organizations that the practitioner is associated with"""
def __init__(
self,
# Core role data
identifier: Optional[List["Identifier"]] = None,
active: Optional[bool] = None,
period: Optional["Period"] = None,
practitioner: Optional["Reference"] = None,
organization: Optional["Reference"] = None,
code: Optional[List["CodeableConcept"]] = None,
specialty: Optional[List["CodeableConcept"]] = None,
# Contact and location
location: Optional[List["Reference"]] = None,
healthcareService: Optional[List["Reference"]] = None,
contact: Optional[List["ExtendedContactDetail"]] = None,
# Availability
characteristic: Optional[List["CodeableConcept"]] = None,
communication: Optional[List["CodeableConcept"]] = None,
availability: Optional[List["Availability"]] = None,
endpoint: Optional[List["Reference"]] = None,
**kwargs
): ...Usage Example:
from fhir.resources.organization import Organization
from fhir.resources.practitioner import Practitioner
from fhir.resources.practitionerrole import PractitionerRole
# Healthcare organization
hospital = Organization(
active=True,
type=[
CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/organization-type",
code="prov",
display="Healthcare Provider"
)]
)
],
name="General Hospital",
contact=[
ExtendedContactDetail(
telecom=[
ContactPoint(
system="phone",
value="555-123-4567",
use="work"
)
],
address=Address(
line=["123 Hospital Drive"],
city="Medical City",
state="CA",
postalCode="90210"
)
)
]
)
# Healthcare practitioner
practitioner = Practitioner(
active=True,
name=[
HumanName(
use="official",
family="Jones",
given=["Sarah", "M"],
prefix=["Dr."]
)
],
telecom=[
ContactPoint(
system="phone",
value="555-234-5678",
use="work"
),
ContactPoint(
system="email",
value="s.jones@hospital.org",
use="work"
)
],
qualification=[
PractitionerQualification(
code=CodeableConcept(
coding=[Coding(
system="http://terminology.hl7.org/CodeSystem/v2-0360",
code="MD",
display="Doctor of Medicine"
)]
),
period=Period(start="2010-06-01")
)
]
)Physical locations and healthcare services offered within the healthcare system.
class Location(DomainResource):
"""Physical location where services are provided"""
def __init__(
self,
# Core location data
identifier: Optional[List["Identifier"]] = None,
status: Optional[str] = None, # active | suspended | inactive
operationalStatus: Optional["Coding"] = None,
name: Optional[str] = None,
alias: Optional[List[str]] = None,
description: Optional[str] = None,
mode: Optional[str] = None, # instance | kind
type: Optional[List["CodeableConcept"]] = None,
# Contact and address
contact: Optional[List["ExtendedContactDetail"]] = None,
address: Optional["Address"] = None,
form: Optional["CodeableConcept"] = None,
# Geographical position
position: Optional["LocationPosition"] = None,
# Organization and management
managingOrganization: Optional["Reference"] = None,
partOf: Optional["Reference"] = None,
characteristic: Optional[List["CodeableConcept"]] = None,
hoursOfOperation: Optional[List["Availability"]] = None,
virtualService: Optional[List["VirtualServiceDetail"]] = None,
endpoint: Optional[List["Reference"]] = None,
**kwargs
): ...
class HealthcareService(DomainResource):
"""Details of healthcare service available at location"""
def __init__(
self,
# Core service data
identifier: Optional[List["Identifier"]] = None,
active: Optional[bool] = None,
providedBy: Optional["Reference"] = None,
category: Optional[List["CodeableConcept"]] = None,
type: Optional[List["CodeableConcept"]] = None,
specialty: Optional[List["CodeableConcept"]] = None,
location: Optional[List["Reference"]] = None,
name: Optional[str] = None,
comment: Optional[str] = None,
# Service details
extraDetails: Optional[str] = None,
photo: Optional["Attachment"] = None,
contact: Optional[List["ExtendedContactDetail"]] = None,
coverageArea: Optional[List["Reference"]] = None,
serviceProvisionCode: Optional[List["CodeableConcept"]] = None,
eligibility: Optional[List["HealthcareServiceEligibility"]] = None,
program: Optional[List["CodeableConcept"]] = None,
characteristic: Optional[List["CodeableConcept"]] = None,
communication: Optional[List["CodeableConcept"]] = None,
referralMethod: Optional[List["CodeableConcept"]] = None,
appointmentRequired: Optional[bool] = None,
availability: Optional[List["Availability"]] = None,
endpoint: Optional[List["Reference"]] = None,
**kwargs
): ...from typing import Optional, List
from fhir.resources.domainresource import DomainResource
# Administrative resource backbone elements
class AppointmentParticipant: ...
class AppointmentRecurrenceTemplate: ...
class EncounterParticipant: ...
class EncounterReason: ...
class EncounterDiagnosis: ...
class EncounterAdmission: ...
class EncounterLocation: ...
class OrganizationQualification: ...
class PractitionerQualification: ...
class PractitionerCommunication: ...
class LocationPosition: ...
class HealthcareServiceEligibility: ...
# Complex data types used in administrative resources
class ExtendedContactDetail: ...
class VirtualServiceDetail: ...
class Duration: ...
class Availability: ...Install with Tessl CLI
npx tessl i tessl/pypi-fhir--resources