FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions icon

Responsible Owner: FHIR Infrastructure icon Work Group Standards Status: Informative

This page describes several issues around lifecycle management for the resources and the content they contain. Specifically, this page describes:

Many FHIR resources have a status element that represents the lifecycle state of the resource or the clinical process represented by the resource. Work groups can specify status values appropriate to the individual resource. Although consistency between resources is not the primary objective, it is helpful to users and developers to have well-crafted value sets that cover all possible states (since the value sets are typically required and non-extensible).

To understand existing status elements, and to help create extensions and resources involving resource states, we note that status value sets follow one of the following life cycles:

  • Clinical workflow process life cycle
  • Request/Order life cycle
  • Entity status life cycle
  • Clinical status life cycle

For additional information about managing resource life cycles, see:

Describes the lifecycle states of complex activities common in healthcare. Typically, these states follow a chronological life cycle that leads from initiation to the conclusion of the action. A characteristic (but non-exhaustive) set of states for the clinical workflow process life cycle include:

  • planned - resources for the activity are being allocated but the activity has not begun
  • cancelled - the planned activity did not start and will not take place
  • in-progress - the activity has begun
  • on-hold (suspended) - the activity has been temporarily interrupted
  • stopped (aborted, failed) - the activity has not been completed but no future action is planned
  • completed (finished) - the activity has been completed

Examples of the clinical workflow life cycle:

  • Communication.status: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
  • Appointment.status: proposed | pending | booked | arrived | fulfilled | cancelled | noshow | entered-in-error | checked-in | waitlist
  • Encounter.status: planned | in-progress | on-hold | discharged | completed | cancelled | discontinued | entered-in-error | unknown
  • Goal.lifecycleStatus: proposed | planned | accepted | cancelled | entered-in-error | rejected
  • MedicationAdministration.status: in-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown
  • MedicationDispense.status: preparation | in-progress | cancelled | on-hold | completed | entered-in-error | unfulfilled | declined | unknown
  • Procedure.status: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown

Some resources in FHIR represent orders or requests. The request lifecycle can be generalized in terms of four stages: creating the request, sending the request, receiving acceptance or refusal of the request, and fulfillment of the request. A characteristic (but non-exhaustive) set of states for the request/order pattern include:

  • proposed: An actor (e.g., a clinical decision support system) has proposed an action to be requested
  • draft: The request is in preliminary form, prior to being requested
  • requested: The request has been made
  • rejected: The request receiver has declined the request
  • accepted: The request receiver has accepted the request
  • in-progress: Work to fulfill the request has begun
  • on-hold (suspended): Work on the request has been interrupted
  • stopped (aborted): The activity has not been completed but no future action is planned
  • completed: Work on the requested task has been completed, and no further action is required
  • cancelled: The request has been withdrawn

Examples of the request/order life cycle:

The entity availability life cycle indicates if the resource, or the entity described by the resource, is ready for use, not yet ready for use, or has been retired from use. A characteristic (but non-exhaustive) set of states for the entity availability life cycle include:

  • draft: The entity is being prepared but is not yet in use
  • active: The entity is in use
  • suspended: The entity is not in use at the moment, but may return to active status
  • amended: The entity has undergone a revision but is still active
  • retired (superseded): The entity is no longer in use.

Examples of the entity availability life cycle:

Clinical status is somewhat different than the previous status values, since it does not deal with workflow or lifecycle. Instead, it indicates how evidence is affecting a clinical interpretation. Here are two examples:


The section regarding current lists has been removed due to lack of implementation experience and feedback. If there is continued interest in this topic, it may be reintroduced in the API Incubator icon.


The entered-in-error state indicates the resource was created accidentally and should be ignored. This state can apply to resources created by manual entry. It is usually not associated with the Clinical Workflow Process life cycle, but can be associated with the Request/Order and the Entity Availability life cycles.

Handling of erroneous data is tightly tied to business processes and thus there are no generic rules for what to do when data is flagged as erroneous. Implementation Guides may define additional guidance about what actions should be taken, such as data redaction, sending of notifications, etc.

This table summarizes what is expected to happen for each resource in the case that the data it contains is subsequently found to be an erroneous entry.

Resource Status
Account .status = entered-in-error
ActivityDefinition .status = retired
ActorDefinition .status = retired
AdministrableProductDefinition .status=entered-in-error
AdverseEvent .status = entered-in-error
AllergyIntolerance .verificationStatus = entered-in-error
Appointment .status=entered-in-error
AppointmentResponse .participantStatus=entered-in-error
ArtifactAssessment .workflowStatus = entered-in-error
AuditEvent Audit Events are recorded, there is no update or delete.
Basic There are no fixed arrangements for Basic - profiles should describe how this works as arrangements will depend on the 'type' of Basic resource
Binary n/a (This would be handled where the binary is linked from)
BiologicallyDerivedProduct .verificationStatus = entered-in-error
BodyStructure .active = false
Bundle Depends on the type: document - see for Composition; message - see for MessageHeader; transaction / transaction-response / history / searchset - not expected to be stored; collection: just delete it if it's stored, and in error
CapabilityStatement .status = retired
CarePlan .status = entered-in-error
CareTeam .status = entered-in-error
Claim .status = entered-in-error
ClaimResponse .status = entered-in-error
ClinicalAssessment .status = entered-in-error
ClinicalUseDefinition .status=entered-in-error
CodeSystem .status = retired
Communication .status = entered-in-error
CommunicationRequest .status = entered-in-error
CompartmentDefinition .status = retired
Composition .status = entered-in-error
ConceptMap .status = retired
Condition .verificationStatus = entered-in-error
ConditionDefinition .status = retired
Consent .status = entered-in-error
Contract .status = entered-in-error
Coverage .status = entered-in-error
CoverageEligibilityRequest .status = entered-in-error
CoverageEligibilityResponse .status = entered-in-error
DetectedIssue .status = entered-in-error
Device .status = entered-in-error
DeviceAlert .status = entered-in-error
DeviceAssociation .status = entered-in-error
DeviceDefinition .operationalStatus = entered-in-error
DeviceMetric .status = entered-in-error
DeviceRequest .status = entered-in-error
DiagnosticReport .status = entered-in-error
DocumentReference .status = entered-in-error
Encounter .status=entered-in-error
Endpoint .status=entered-in-error
EnrollmentRequest .status = entered-in-error
EnrollmentResponse .status = entered-in-error
EpisodeOfCare .status=entered-in-error
EventDefinition .status = retired
Evidence .status = retired
EvidenceVariable Delete the instance if it is in error
ExampleScenario .status = retired
ExplanationOfBenefit .status = entered-in-error
FamilyMemberHistory .status = entered-in-error
Flag .status = entered-in-error
FormularyItem .status = entered-in-error
GenomicStudy .status = entered-in-error
Goal .status = entered-in-error
Group .active = false
GuidanceResponse .status = entered-in-error
HealthcareService .active = false
ImagingSelection .status = entered-in-error
ImagingStudy .status = entered-in-error
Immunization .status = entered-in-error
ImplementationGuide .status = retired
Ingredient .status=entered-in-error
InsurancePlan .status = retired
InsuranceProduct .status = retired
Invoice .status = entered-in-error
Library .status = retired
Linkage .active = false
List .status = entered-in-error
Location .status = inactive
ManufacturedItemDefinition .status=entered-in-error
Measure Delete the instance if it is in error
MeasureReport Delete the instance if it is in error
Medication .status = entered-in-error
MedicationAdministration .status = entered-in-error
MedicationDispense .status = entered-in-error
MedicationKnowledge .status = entered-in-error
MedicationRequest .status = entered-in-error
MedicationStatement .status = entered-in-error
MedicinalProductDefinition .status=entered-in-error
MessageDefinition mostly n/a, but in the cases where messages are stored in error, they would simply be deleted
MessageHeader mostly n/a, but in the cases where messages are stored in error, they would simply be deleted
MolecularDefinition .status = entered-in-error
NamingSystem .status = retired
NutritionIntake .status = entered-in-error
NutritionOrder .status = entered-in-error
NutritionProduct .status = entered-in-error
Observation .status = entered-in-error
ObservationDefinition .status = retired
OperationDefinition .status = retired
OperationOutcome n/a - this resource is not expected to be stored
Organization .active = false
OrganizationAffiliation .active = false
PackagedProductDefinition .status=entered-in-error
Patient .active = false
PaymentNotice .status = entered-in-error
PaymentReconciliation .status = entered-in-error
Permission .status = entered-in-error
Person .active = false
PlanDefinition .status = retired
Practitioner .active = false
PractitionerRole .active = false
Procedure .status = entered-in-error
Provenance Provenance are recorded, there is no update or delete.
Questionnaire .status = retired
QuestionnaireResponse .status = entered-in-error
RegulatedAuthorization .status=entered-in-error
RelatedPerson .active = false
RequestOrchestration .status = entered-in-error
Requirements .status = retired
ResearchStudy .status = entered-in-error
ResearchSubject .status = entered-in-error
RiskAssessment .status = entered-in-error
Schedule .active = false
SearchParameter .status = retired
ServiceRequest .status = entered-in-error
Slot .status = entered-in-error
Specimen .status = entered-in-error
SpecimenDefinition .status = retired
StructureDefinition .status = retired
StructureMap .status = retired
Subscription .status = entered-in-error
SubscriptionStatus .status = entered-in-error
SubscriptionTopic .status = off (just turn it off, maybe update the error message)
Substance .status = entered-in-error
SubstanceDefinition .status=entered-in-error
Task .status = entered-in-error
TerminologyCapabilities .status = retired
ValueSet .status = retired
VisionPrescription .status = entered-in-error

Note: Resources that are not listed in this table do not have any explicit documentation with regard to being entered in error.