Clinical Document Architecture
2.0.0-sd-ballot - ballot

Clinical Document Architecture, published by Health Level 7. This guide is not an authorized publication; it is the continuous build for version 2.0.0-sd-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/ahdis/cda-core-2.0/ and changes regularly. See the Directory of published versions

Artifacts Summary

This page provides a list of the FHIR artifacts defined as part of this implementation guide.

CDA Classes

Primary CDA Objects

Act (CDA Class)

A derivative of the RIM Act class, to be used when the other more specific classes aren’t appropriate. Act.negationInd, when set to “true”, is a positive assertion that the Act as a whole is negated. Some properties such as Act.id, Act.moodCode, and the participations are not affected. These properties always have the same meaning: i.e., the author remains the author of the negative Act. An act statement with negationInd is still a statement about the specific fact described by the Act. For instance, a negated “finding of wheezing on July 1” means that the author positively denies that there was wheezing on July 1, and that he takes the same responsibility for such statement and the same requirement to have evidence for such statement than if he had not used negation.

AlternateIdentification (CDA Class)

The alternateIdentification extension provides additional information about an identifier found in the linked role. The extensions augment the id information in the linked role. The id in the alternateIdentification extension SHALL match an id in the linked role. The alternateIdentification provides additional information about a particular identifier, such as its type. As an extension it needs to be safe for implementers to ignore this additional information.

AssignedAuthor (CDA Class)

An author is a person in the role of an assigned author (AssignedAuthor class).

AssignedCustodian (CDA Class)

A custodian is a scoping organization in the role of an assigned custodian (AssignedCustodian class).

AssignedEntity (CDA Class)

AssignedEntity (CDA Class)

AssociatedEntity (CDA Class)

A participant is a person or organization in the role of a participating entity (AssociatedEntity class).

Authenticator (CDA Class)

Represents a participant who has attested to the accuracy of the document, but who does not have privileges to legally authenticate the document. An example would be a resident physician who sees a patient and dictates a note, then later signs it. A clinical document can have zero to many authenticators. While electronic signatures are not captured in a CDA document, both authentication and legal authentication require that a document has been signed manually or electronically by the responsible individual. An authenticator has a required authenticator.time indicating the time of authentication, and a required authenticator.signatureCode, indicating that a signature has been obtained and is on file.

Author (CDA Class)

Represents the humans and/or machines that authored the document. In some cases, the role or function of the author is inherent in the ClinicalDocument.code, such as where ClinicalDocument.code is “Medical Student Progress Note”. The role of the author can also be recorded in the Author.functionCode or AssignedAuthor.code attribute. If either of these attributes is included, they should be equivalent to or further specialize the role inherent in the ClinicalDocument.code (such as where the ClinicalDocument.code is simply “Physician Progress Note” and the value of Author.functionCode is “rounding physician”), and shall not conflict with the role inherent in the ClinicalDocument.code, as such a conflict would constitute an ambiguous situation.

AuthoringDevice (CDA Class)

AuthoringDevice (CDA Class)

Authorization (CDA Class)

Authorization (CDA Class)

Birthplace (CDA Class)

A Patient’s birthplace is represented as a relationship between a patient and a place. The Birthplace class is played by a place (Place class), and scoped by the patient (Patient class).

ClinicalDocument (CDA Class)

This is a generated StructureDefinition that describes CDA - that is, CDA as it actually is for R2. The intent of this StructureDefinition is to enable CDA to be a FHIR resource. That enables the FHIR infrastructure - API, conformance, query - to be used directly against CDA

Component (CDA Class)

Component (CDA Class)

ComponentOf (CDA Class)

ComponentOf (CDA Class)

Consent (CDA Class)

This class references the consents associated with this document. The type of consent (e.g. a consent to perform the related ServiceEvent, a consent for the information contained in the document to be released to a third party) is conveyed in Consent.code. Consents referenced in the CDA Header have been finalized (Consent.statusCode must equal “completed”) and should be on file.

Criterion (CDA Class)

Criterion (CDA Class)

Custodian (CDA Class)

Represents the organization that is in charge of maintaining the document. The custodian is the steward that is entrusted with the care of the document. Every CDA document has exactly one custodian.The custodian participation satisfies the CDA definition of Stewardship (see What is the CDA (§ 1.1 )). Because CDA is an exchange standard and may not represent the original form of the authenticated document, the custodian represents the steward of the original source document.

CustodianOrganization (CDA Class)

The steward organization (CustodianOrganization class) is an entity scoping the role of AssignedCustodian, and has a required CustodianOrganization.id.

DataEnterer (CDA Class)

Represents the participant who has transformed a dictated note into text.

Device (CDA Class)

A ManufacturedMaterial used in an activity without being substantially changed through that activity. This includes durable (reusable) medical equipment as well as disposable equipment. The kind of device is identified by the code attribute inherited from Entity.

DocumentationOf (CDA Class)

TODO

Performer1 (CDA Class)

TODO

Performer2 (CDA Class)

TODO

EncompassingEncounter (CDA Class)

This optional class represents the setting of the clinical encounter during which the documented act(s) or ServiceEvent occurred. Documents are not necessarily generated during an encounter, such as when a clinician, in response to an abnormal lab result, attempts to contact the patient but can’t, and writes a Progress Note. In some cases, the setting of the encounter is inherent in the ClinicalDocument.code, such as where ClinicalDocument.code is “Diabetes Clinic Progress Note”. The setting of an encounter can also be transmitted in the HealthCareFacility.code attribute. If HealthCareFacility.code is sent, it should be equivalent to or further specialize the value inherent in the ClinicalDocument.code (such as where the ClinicalDocument.code is simply “Clinic Progress Note” and the value of HealthCareFacility.code is “cardiology clinic”), and shall not conflict with the value inherent in the ClinicalDocument.code, as such a conflict would constitute an ambiguous situation. EncompassingEncounter.dischargeDispositionCode can be used to depict the disposition of the patient at the time of hospital discharge (e.g., discharged to home, expired, against medical advice, etc.).

Encounter (CDA Class)

A derivative of the RIM PatientEncounter class, used to represent related encounters, such as follow-up visits or referenced past encounters. NOTE: The EncompassingEncounter class in the CDA Header (see Header Relationships (§ 4.2.3 )) represents the setting of the clinical encounter during which the documented act occurred. The Encounter class in the CDA Body is used to represent other related encounters.

EncounterParticipant (CDA Class)

TODO

Entity (CDA Class)

A physical thing, group of physical things or an organization capable of participating in Acts while in a role. An entity is a physical object that has, had or will have existence. The only exception to this is Organization, which while not having a physical presence, fulfills the other characteristics of an Entity. Entity stipulates the thing itself, not the Roles it may play: the Role of Patient, e.g., is played by the Person Entity. Living subjects (including human beings), organizations, materials, places and their specializations.

Entry (CDA Class)

CDA entries represent the structured computer-processable components within a document section. Each section can contain zero to many entries.

EntryRelationship (CDA Class)

CDA entries represent the structured computer-processable components within a document section. Each section can contain zero to many entries.

ExternalAct (CDA Class)

ExternalAct is a derivative of the RIM Act class, to be used when the other more specific classes are not appropriate.

ExternalDocument (CDA Class)

ExternalDocument is a derivative of the RIM Document class, used for representing external documents. ExternalDocument.text is modeled as an ED data type - allowing for the expression of the MIME type of the external document.

ExternalObservation (CDA Class)

ExternalObservation is a derivative of the RIM Observation class, used for representing external coded and other observations.

ExternalProcedure (CDA Class)

ExternalProcedure is a derivative of the RIM Procedure class, used for representing external procedures.

Guardian (CDA Class)

A patient’s guardian is a person or organization in the role of guardian (Guardian class). The entity playing the role of guardian is a person (Person class) or organization (Organization class). The entity scoping the role is the patient (Patient class). Where a guardian is not explicitly stated, the value should default to local business practice (e.g. the patient makes their own health care decisions unless incapacitated in which case healthcare decisions are made by the patient’s spouse).

HealthCareFacility (CDA Class)

HealthCareFacility (CDA Class)

IdentifiedBy (CDA Class)

The alternateIdentification extension provides additional information about an identifier found in the linked role. The extensions augment the id information in the linked role. The id in the alternateIdentification extension SHALL match an id in the linked role. The alternateIdentification provides additional information about a particular identifier, such as its type. As an extension it needs to be safe for implementers to ignore this additional information.

Informant (CDA Class)

An informant (or source of information) is a person that provides relevant information, such as the parent of a comatose patient who describes the patient’s behavior prior to the onset of coma.

InformationRecipient (CDA Class)

Represents the participant who has transformed a dictated note into text.

InfrastructureRoot (Base Type for all CDA Classes)

Defines the base elements and attributes on all CDA elements (other than data types)

InFulfillmentOf (CDA Class)

This class represents those orders that are fulfilled by this document. For instance, a provider orders an X-Ray. The X-Ray is performed. A radiologist reads the X-Ray and generates a report. The X-Ray order identifier is transmitted in the Order class, the performed X-Ray procedure is transmitted in the ServiceEvent class, and the ClinicalDocument.code would be valued with “Diagnostic Imaging Report”.

InFulfillmentOf1 (CDA Class)

This is an actRelationship called inFulfillmentOf1 that represents the Fulfills General Relationship Operator in QDM 4.1.x in QDM-Base QRDA Category 1, R3.

IntendedRecipient (CDA Class)

IntendedRecipient (CDA Class)

LabeledDrug (CDA Class)

The LabeledDrug class, which is an Entity class playing the Role of Manufactured Product, identifies the drug that is consumed in the substance administration. The medication is identified by means of the LabeledDrug.code or the LabeledDrug.name.

LanguageCommunication (CDA Class)

The language communication capabilities of an Entity. While it may seem on the surface that this class would be restricted in usage to only the LivingSubject subtypes, Devices also have the ability to communicate, such as automated telephony devices that transmit patient information to live operators on a triage line or provide automated laboratory results to clinicians. A patient who originally came from Mexico may have fluent language capabilities to speak, read and write in Spanish, and rudimentary capabilities in English. A person from Russia may have the capability to communicate equally well in spoken language in Russian, Armenian or Ukrainian, and a preference to speak in Armenian.

LegalAuthenticator (CDA Class)

Represents a participant who has legally authenticated the document. The CDA is a standard that specifies the structure of exchanged clinical documents. In the case where a local document is transformed into a CDA document for exchange, authentication occurs on the local document, and that fact is reflected in the exchanged CDA document. A CDA document can reflect the unauthenticated, authenticated, or legally authenticated state. The unauthenticated state exists when no authentication information has been recorded (i.e., it is the absence of being either authenticated or legally authenticated). While electronic signatures are not captured in a CDA document, both authentication and legal authentication require that a document has been signed manually or electronically by the responsible individual. A legalAuthenticator has a required legalAuthenticator.time indicating the time of authentication, and a required legalAuthenticator.signatureCode, indicating that a signature has been obtained and is on file.

MaintainedEntity (CDA Class)

The MaintainedEntity class is present for backwards compatibility, and its use is discouraged, except where needed to support the transformation of CDA, Release One documents. NOTE: In CDA, Release One, it was possible to specify those individuals responsible for the device. This functionality has been deprecated in CDA, Release Two.

ManufacturedProduct (CDA Class)

ManufacturedProduct (CDA Class)

Material (CDA Class)

A subtype of Entity that is inanimate and locationally independent. Materials are entities that are neither Living Subjects nor places. Manufactured or processed products are considered material, even if they originate as living matter. Materials come in a wide variety of physical forms and can pass through different states (ie. Gas, liquid, solid) while still retaining their physical composition and material characteristics. Clarify the meaning of “locationally independent”; suggest removing it and supplanting with first Usage Note sentence. Pharmaceutical substances (including active vaccines containing retarded virus), disposable supplies, durable equipment, implantable devices, food items (including meat or plant products), waste, traded goods.

NonXMLBody (CDA Class)

The NonXMLBody class represents a document body that is in some format other than XML. NonXMLBody.text is used to reference data that is stored externally to the CDA document or to encode the data directly inline. Rendering a referenced non-XML body requires a software tool that recognizes the particular MIME media type of the blob.

Observation (CDA Class)

A derivative of the RIM Observation class, used for representing coded and other observations. Observation.negationInd, when set to “true”, is a positive assertion that the Observation as a whole is negated. Some properties such as Observation.id, Observation.moodCode, and the participations are not negated. These properties always have the same meaning: i.e., the author remains the author of the negative Observation. An observation statement with negationInd is still a statement about the specific fact described by the Observation. For instance, a negated “finding of wheezing on July 1” means that the author positively denies that there was wheezing on July 1, and that he takes the same responsibility for such statement and the same requirement to have evidence for such statement than if he had not used negation.

ObservationMedia (CDA Class)

A derivative of the RIM Observation class that represents multimedia that is logically part of the current document. This class is only for multimedia that is logically part of the attested content of the document. Rendering a referenced ObservationMedia requires a software tool that recognizes the particular MIME media type. An XML attribute “ID” of type XML ID, is added to ObservationMedia within the CDA Schema. This attribute serves as the target of a renderMultiMedia reference (see renderMultiMedia). All values of attributes of type XML ID must be unique within the document (per the W3C XML specification). The distinction between ObservationMedia and ExternalObservation is that ObservationMedia entries are part of the attested content of the document whereas ExternalObservations are not. For instance, when a clinician draws a picture as part of a progress note, that picture is represented as a CDA ObservationMedia. If that clinician is also describing a finding seen on a chest-x-ray, the referenced chest-x-ray is represented as a CDA ExternalObservation.

ObservationRange (CDA Class)

ObservationRange (CDA Class)

Order (CDA Class)

This class represents those orders that are fulfilled by this document. For instance, a provider orders an X-Ray. The X-Ray is performed. A radiologist reads the X-Ray and generates a report. The X-Ray order identifier is transmitted in the Order class, the performed X-Ray procedure is transmitted in the ServiceEvent class, and the ClinicalDocument.code would be valued with “Diagnostic Imaging Report”.

Organization (CDA Class)

An Entity representing a formalized group of persons or other organizations with a common purpose and the infrastructure to carry out that purpose. Companies and institutions, a government department, an incorporated body that is responsible for administering a facility, an insurance company.

OrganizationPartOf (CDA Class)

OrganizationPartOf (CDA Class)

Organizer (CDA Class)

A derivative of the RIM Act class, which can be used to create arbitrary groupings of other CDA entries that share a common context. An Organizer can contain other Organizers and/or other CDA entries, by traversing the component relationship. An Organizer can refer to external acts by traversing the reference relationship. An Organizer cannot be the source of an entryRelationship relationship. NOTE: CDA entries such as Observation can also contain other CDA entries by traversing the entryRelationship class. There is no requirement that the Organizer entry be used in order to group CDA entries.

OrganizerComponent (CDA Class)

CDA entries represent the structured computer-processable components within a document section. Each section can contain zero to many entries.

ParentDocument (CDA Class)

The ParentDocument represents the source of a document revision, addenda, or transformation. ParentDocument.text is modeled as an ED data type - allowing for the expression of the MIME type of the parent document. It is not to be used to embed the related document, and thus ParentDocument.text.BIN is precluded from use.

Participant1 (CDA Class)

Used to represent other participants not explicitly mentioned by other classes, that were somehow involved in the documented acts.

Participant2 (CDA Class)

Can be used to represent any other participant that cannot be represented with one of the more specific participants. The participant can be ascribed to a CDA entry, and propagates to nested CDA entries, unless overridden.

ParticipantRole (CDA Class)

ParticipantRole (CDA Class)

Patient (CDA Class)

A LivingSubject as a recipient of health care services from a healthcare provider. The patient is the player; the provider is the scoper.

PatientRole (CDA Class)

A recordTarget is represented as a relationship between a person and an organization, where the person is in a patient role (PatientRole class). The entity playing the role is a patient (Patient class). The entity scoping the role is an organization (Organization class). A patient is uniquely identified via the PatientRole.id attribute.

Person (CDA Class)

A human being. This class can be used to represent either a single individual, a group of individuals or a kind of individual based on the values of Entity.determinerCode and Entity.quantity.

Place (CDA Class)

A bounded physical place or site, including any contained structures. Place may be natural or man-made. The geographic position of a place may or may not be constant. Places may be work facilities (where relevant acts occur), homes (where people live) or offices (where people work). Places may contain sub-places (floor, room, booth, bed). Places may also be sites that are investigated in the context of health care, social work, public health administration (e.g., buildings, picnic grounds, day care centers, prisons, counties, states, and other focuses of epidemiological events). Examples: A field, lake, city, county, state, country, lot (land), building, pipeline, power line, playground, ship, truck

PlayingEntity (CDA Class)

PlayingEntity (CDA Class)

Precondition (CDA Class)

The precondition class, derived from the ActRelationship class, is used along with the Precondition class to express a condition that must hold true before some over activity occurs.

Precondition2 (CDA Class)

The sdtc:precondition2 extension allows a more flexible set of skip conditions on a set of criteria. Without this extension the skip condition is restricted to all criteria true. The extension allows a choice of the following logical operation extensions sdtc:allTrue, sdtc:allFalse, sdtc:atLeastOneTrue, sdtc:atLeastOneFalse, sdtc:onlyOneFalse, and sdtc:onlyOneTrue to be placed upon the encapsulated criteria or a criterion. The logical operation extensions nest a [0 .. *] sdtc:precondition2 extension allowing for a complex specification of nested skip conditions if needed.

PreconditionBase (CDA Class)

An abstract class containing the common fields used by sdtc:allTrue, sdtc:allFalse, sdtc:atLeastOneTrue, sdtc:atLeastOneFalse, sdtc:onlyOneTrue, and sdtc:onlyOneFalse.

Procedure (CDA Class)

A derivative of the RIM Procedure class, used for representing procedures. Procedure.negationInd, when set to “true”, is a positive assertion that the Procedure as a whole is negated. Some properties such as Procedure.id, Procedure.moodCode, and the participations are not affected. These properties always have the same meaning: i.e., the author remains the author of the negative Procedure. A procedure statement with negationInd is still a statement about the specific fact described by the Procedure. For instance, a negated “appendectomy performed” means that the author positively denies that there was ever an appendectomy performed, and that he takes the same responsibility for such statement and the same requirement to have evidence for such statement than if he had not used negation.

RecordTarget (CDA Class)

The recordTarget represents the medical record that this document belongs to. A clinical document typically has exactly one recordTarget participant. In the uncommon case where a clinical document (such as a group encounter note) is placed into more than one patient chart, more than one recordTarget participants can be stated. The recordTarget(s) of a document are stated in the header and propagate to nested content, where they cannot be overridden (see See CDA Context (§ 4.4 )).

Reference (CDA Class)

CDA entries can reference external objects such as external images and prior reports. These external objects are not part of the authenticated document content. They contain sufficient attributes to enable an explicit reference rather than duplicating the entire referenced object. The CDA entry that wraps the external reference can be used to encode the specific portions of the external reference that are addressed in the narrative block.

Each object allows for an identifier and a code, and contains the RIM Act.text attribute, which can be used to store the URL and MIME type of the object. External objects always have a fixed moodCode of “EVN”.

The reference class contains the attribute reference.seperatableInd, which indicates whether or not the source is intended to be interpreted independently of the target. The indicator cannot prevent an individual or application from separating the source and target, but indicates the author’s desire and willingness to attest to the content of the source if separated from the target. Typically, where seperatableInd is “false”, the exchanged package should include the target of the reference so that the recipient can render it.

RegionOfInterest (CDA Class)

A derivative of the RIM Observation class that represents a region of interest on an image, using an overlay shape. RegionOfInterest is used to make reference to specific regions in images, e.g., to specify the site of a physical finding by “circling” a region in a schematic picture of a human body. The units of the coordinate values in RegionOfInterest.value are in pixels, expressed as a list of integers. The origin is in the upper left hand corner, with positive X values going to the right and positive Y values going down. The relationship between a RegionOfInterest and its referenced ObservationMedia or ExternalObservation is specified by traversing the entryRelationship or reference class, respectively, where typeCode equals “SUBJ”. A RegionOfInterest must reference exactly one ObservationMedia or one ExternalObservation. If the RegionOfInterest is the target of a renderMultimedia reference, then it shall only reference an ObservationMedia and not an ExternalObservation. An XML attribute “ID” of type XML ID, is added to RegionOfInterest within the CDA Schema. This attribute serves as the target of a renderMultiMedia reference (see renderMultiMedia). All values of attributes of type XML ID must be unique within the document (per the W3C XML specification).

RelatedDocument (CDA Class)

Represents the participant who has transformed a dictated note into text.

RelatedEntity (CDA Class)

The RelatedEntity role is used to represent an informant without a role.id (e.g. a parent or guy on the street).

RelatedSubject (CDA Class)

A subject is a person playing one of several possible roles (RelatedSubject class). The entity playing the role is a person (SubjectPerson class).

Section (CDA Class)

Document sections can nest, can override context propagated from the header (See CDA Context), and can contain narrative and CDA entries. An XML attribute “ID” of type XML ID, is added to Section within the CDA Schema. This attribute serves as the target of a linkHtml reference (see linkHtml). All values of attributes of type XML ID must be unique within the document (per the W3C XML specification).

ServiceEvent (CDA Class)

This class represents the main Act, such as a colonoscopy or an appendectomy, being documented. In some cases, the ServiceEvent is inherent in the ClinicalDocument.code, such as where ClinicalDocument.code is “History and Physical Report” and the procedure being documented is a “History and Physical” act. A ServiceEvent can further specialize the act inherent in the ClinicalDocument.code, such as where the ClinicalDocument.code is simply “Procedure Report” and the procedure was a “colonoscopy”. If ServiceEvent is included, it must be equivalent to or further specialize the value inherent in the ClinicalDocument.code, and shall not conflict with the value inherent in the ClinicalDocument.code, as such a conflict would constitute an ambiguous situation. ServiceEvent.effectiveTime can be used to indicate the time the actual event (as opposed to the encounter surrounding the event) took place.

Specimen (CDA Class)

A specimen is a part of some entity, typically the subject, that is the target of focused laboratory, radiology or other observations. In many clinical observations, such as physical examination of a patient, the patient is the subject of the observation, and there is no specimen. The specimen participant is only used when observations are made against some substance or object that is taken or derived from the subject.

SpecimenRole (CDA Class)

SpecimenRole (CDA Class)

StructuredBody (CDA Class)

The StructuredBody class represents a CDA document body that is comprised of one or more document sections. The StructuredBody class is associated with one or more Section classes through a component relationship.

Subject (CDA Class)

The subject participant represents the primary target of the entries recorded in the document. Most of the time the subject is the same as the recordTarget, but need not be, for instance when the subject is a fetus observed in an obstetrical ultrasound.

The subject participant can be ascribed to a CDA section or a CDA entry. It propagates to nested components, unless overridden. The subject of a document is presumed to be the patient.

SubjectPerson (CDA Class)

The entity playing the role is a person (SubjectPerson class).

SubstanceAdministration (CDA Class)

A derivative of the RIM SubstanceAdministration class, used for representing medication-related events such as medication history or planned medication administration orders. SubstanceAdministration.negationInd, when set to “true”, is a positive assertion that the SubstanceAdministration as a whole is negated. Some properties such as SubstanceAdministration.id, SubstanceAdministration.moodCode, and the participations are not affected. These properties always have the same meaning: i.e., the author remains the author of the negative SubstanceAdministration. A substance administration statement with negationInd is still a statement about the specific fact described by the SubstanceAdministration. For instance, a negated “aspirin administration” means that the author positively denies that aspirin is being administered, and that he takes the same responsibility for such statement and the same requirement to have evidence for such statement than if he had not used negation. SubstanceAdministration.priorityCode categorizes the priority of a substance administration. SubstanceAdministration.doseQuantity indicates how much medication is given per dose. SubstanceAdministration.rateQuantity can be used to indicate the rate at which the dose is to be administered (e.g., the flow rate for intravenous infusions). SubstanceAdministration.maxDoseQuantity is used to capture the maximum dose of the medication that can be given over a stated time interval (e.g., maximum daily dose of morphine, maximum lifetime dose of doxorubicin). SubstanceAdministration.effectiveTime is used to describe the timing of administration. It is modeled using the GTS data type to accommodate various dosing scenarios. The capture of medication-related information also involves the interrelationship of SubstanceAdministration with several other classes. The consumable participation is used to bring in the LabeledDrug or Material entity that describes the administered substance. The LabeledDrug class, which is an Entity class playing the Role of Manufactured Product, identifies the drug that is consumed in the substance administration. The medication is identified by means of the LabeledDrug.code or the LabeledDrug.name. The Material entity is used to identify non-drug administered substances such as vaccines and blood products.

Supply (CDA Class)

A derivative of the RIM Supply class, used for representing the provision of a material by one entity to another. The dispensed product is associated with the Supply act via a product participant, which connects to the same ManufacturedProduct role used for SubstanceAdministration. The Supply class represents dispensing, whereas the SubstanceAdministration class represents administration. Prescriptions are complex activities that involve both an administration request to the patient (e.g. take digoxin 0.125mg by mouth once per day) and a supply request to the pharmacy (e.g. dispense 30 tablets, with 5 refills). This should be represented in CDA by a SubstanceAdministration entry that has a component Supply entry. The nested Supply entry can have Supply.independentInd set to “false” to signal that the Supply cannot stand alone, without it’s containing SubstanceAdministration. The following example illustrates a prescription representation in CDA.

V3 Complex Data Types

General-purpose complex types, which are re-usable clusters of elements

AD: PostalAddress (V3 Data Type)

Mailing and home or office addresses. A sequence of address parts, such as street or post office Box, city, postal code, country, etc.

ADXP: CharacterString (V3 Data Type)

A character string that may have a type-tag signifying its role in the address. Typical parts that exist in about every address are street, house number, or post box, postal code, city, country but other roles may be defined regionally, nationally, or on an enterprise level (e.g. in military addresses). Addresses are usually broken up into lines, which are indicated by special line-breaking delimiter elements (e.g., DEL).

ANY: DataValue (V3 Data Type)

Defines the basic properties of every data value. This is an abstract type, meaning that no value can be just a data value without belonging to any concrete type. Every concrete type is a specialization of this general abstract DataValue type.

BL: Boolean (V3 Data Type)

The Boolean type stands for the values of two-valued logic. A Boolean value can be either true or false, or, as any other value may be NULL.

CD: ConceptDescriptor (V3 Data Type)

A concept descriptor represents any kind of concept usually by giving a code defined in a code system. A concept descriptor can contain the original text or phrase that served as the basis of the coding and one or more translations into different coding systems. A concept descriptor can also contain qualifiers to describe, e.g., the concept of a “left foot” as a postcoordinated term built from the primary code “FOOT” and the qualifier “LEFT”. In cases of an exceptional value, the concept descriptor need not contain a code but only the original text describing that concept.

CE: CodedWithEquivalents (V3 Data Type)

Coded data that consists of a coded value (CV) and, optionally, coded value(s) from other coding systems that identify the same concept. Used when alternative codes may exist.

CO: CodedOrdinal (V3 Data Type)

Coded data, where the coding system from which the code comes is ordered

CR: ConceptRole (V3 Data Type)

A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system of the CD containing the concept qualifier. For example, if SNOMED RT defines a concept “leg”, a role relation “has-laterality”, and another concept “left”, the concept role relation allows to add the qualifier “has-laterality: left” to a primary code “leg” to construct the meaning “left leg”.

CS: CodedSimpleValue (V3 Data Type)

Coded data in its simplest form, where only the code is not predetermined. The code system and code system version are fixed by the context in which the CS value occurs. CS is used for coded attributes that have a single HL7-defined value set.

CV: CodedValue (V3 Data Type)

Coded data, specifying only a code, code system, and optionally display name and original text. Used only as the data type for other data types’ properties.

ED: EncapsulatedData (V3 Data Type)

Data that is primarily intended for human interpretation or for further machine processing outside the scope of HL7. This includes unformatted or formatted written language, multimedia data, or structured information in as defined by a different standard (e.g., XML-signatures.) Instead of the data itself, an may contain only a reference (see .) Note that the data type is a specialization of the data type when the media type is text/plain.

EIVL_TS: EventRelatedPeriodicInterval (V3 Data Type)

Specifies a periodic interval of time where the recurrence is based on activities of daily living or other important events that are time-related but not fully determined by time.

EN: EntityName (V3 Data Type)

A name for a person, organization, place or thing. A sequence of name parts, such as given name or family name, prefix, suffix, etc. Examples for entity name values are “Jim Bob Walton, Jr.”, “Health Level Seven, Inc.”, “Lake Tahoe”, etc. An entity name may be as simple as a character string or may consist of several entity name parts, such as, “Jim”, “Bob”, “Walton”, and “Jr.”, “Health Level Seven” and “Inc.”, “Lake” and “Tahoe”.

ENXP: Entity Name Part (V3 Data Type)

A character string token representing a part of a name. May have a type code signifying the role of the part in the whole entity name, and a qualifier code for more detail about the name part type. Typical name parts for person names are given names, and family names, titles, etc.

II: InstanceIdentifier (V3 Data Type)

An identifier that uniquely identifies a thing or object. Examples are object identifier for HL7 RIM objects, medical record number, order id, service catalog item id, Vehicle Identification Number (VIN), etc. Instance identifiers are defined based on ISO object identifiers.

INT: IntegerNumber (V3 Data Type)

Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers that are results of counting and enumerating. Integer numbers are discrete, the set of integers is infinite but countable. No arbitrary limit is imposed on the range of integer numbers. Two NULL flavors are defined for the positive and negative infinity.

INT_POS: Positive integer numbers (V3 Data Type)

Positive integer numbers.

IVL_INT: Interval (V3 Data Type)

A set of consecutive values of an ordered base data type.

IVL_PQ: Interval (V3 Data Type)

A set of consecutive values of an ordered base data type.

IVL_TS: Interval (V3 Data Type)

A set of consecutive values of an ordered base data type.

IVXB_INT: Interval Boundary IntegerNumber (V3 Data Type)

An integer interval boundary containing an inclusive/exclusive flag.

IVXB_PQ: Interval Boundary PhysicalQuantity (V3 Data Type)

A physical quantity interval boundary containing an inclusive/exclusive flag.

IVXB_TS: Interval Boundary PointInTime (V3 Data Type)

A timestamp interval boundary containing an inclusive/exclusive flag.

MO: MonetaryAmount (V3 Data Type)

A monetary amount is a quantity expressing the amount of money in some currency. Currencies are the units in which monetary amounts are denominated in different economic regions. While the monetary amount is a single kind of quantity (money) the exchange rates between the different units are variable. This is the principle difference between physical quantity and monetary amounts, and the reason why currency units are not physical units.

ON: OrganizationName (V3 Data Type)

A name for an organization. A sequence of name parts. Examples for organization name values are “Health Level Seven, Inc.”, “Hospital”, etc. An organization name may be as simple as a character string or may consist of several person name parts, such as, “Health Level 7”, “Inc.”. ON differs from EN because certain person related name parts are not possible.

PIVL_TS: PeriodicIntervalOfTime (V3 Data Type)

An interval of time that recurs periodically. Periodic intervals have two properties, phase and period. The phase specifies the “interval prototype” that is repeated every period.

PN: PersonName (V3 Data Type)

A name for a person. A sequence of name parts, such as given name or family name, prefix, suffix, etc. Examples for person name values are “Jim Bob Walton, Jr.”, “Adam Everyman”, etc. A person name may be as simple as a character string or may consist of several person name parts, such as, “Jim”, “Bob”, “Walton”, and “Jr.”. PN differs from EN because the qualifier type cannot include LS (Legal Status).

PQ: PhysicalQuantity (V3 Data Type)

A dimensioned quantity expressing the result of measuring.

PQR: PhysicalQuantityRepresentation (V3 Data Type)

An extension of the coded value data type representating a physical quantity using a unit from any code system. Used to show alternative representation for a physical quantity.

QTY: Quantity (V3 Data Type)

The quantity data type is an abstract generalization for all data types (1) whose value set has an order relation (less-or-equal) and (2) where difference is defined in all of the data type’s totally ordered value subsets. The quantity type abstraction is needed in defining certain other types, such as the interval and the probability distribution.

REAL: RealNumber (V3 Data Type)

Fractional numbers. Typically used whenever quantities are measured, estimated, or computed from other real numbers. The typical representation is decimal, where the number of significant decimal digits is known as the precision.

RTO_PQ_PQ: Ratio (V3 Data Type)

A quantity constructed as the quotient of a numerator quantity divided by a denominator quantity. Common factors in the numerator and denominator are not automatically cancelled out. The data type supports titers (e.g., “1:128”) and other quantities produced by laboratories that truly represent ratios. Ratios are not simply “structured numerics”, particularly blood pressure measurements (e.g. “120/60”) are not ratios. In many cases the should be used instead of the .

SC: CharacterStringWithCode (V3 Data Type)

A character string that optionally may have a code attached. The text must always be present if a code is present. The code is often a local code.

ST: CharacterString (V3 Data Type)

The character string data type stands for text data, primarily intended for machine processing (e.g., sorting, querying, indexing, etc.) Used for names, symbols, and formal expressions.

SXCM_TS: GeneralTimingSpecification (V3 Data Type)

A set of points in time, specifying the timing of events and actions and the cyclical validity-patterns that may exist for certain kinds of information, such as phone numbers (evening, daytime), addresses (so called “snowbirds,” residing closer to the equator during winter and farther from the equator during summer) and office hours.

SXPR_TS: Component part of GTS (V3 Data Type)

A set-component that is itself made up of set-components that are evaluated as one value

TEL: TelecommunicationAddress (V3 Data Type)

A telephone number (voice or fax), e-mail address, or other locator for a resource mediated by telecommunication equipment. The address is specified as a Universal Resource Locator (URL) qualified by time specification and use codes that help in deciding which address to use for a given time and purpose.

TN: TrivialName (V3 Data Type)

A restriction of entity name that is effectively a simple string used for a simple name for things and places.

TS: PointInTime (V3 Data Type)

A quantity specifying a point on the axis of natural time. A point in time is most often represented as a calendar expression.

V3 Simple Data Types

Simple / primitive types, which are single XML attributes

bin: Binary Data

Binary data is a raw block of bits. Binary data is a protected type that MUST not be used outside the data type specification.

bl: Boolean

The Boolean type stands for the values of two-valued logic. A Boolean value can be either true or false.

bn: BooleanNonNull

The BooleanNonNull type is used where a Boolean cannot have a null value. A Boolean value can be either true or false.

cs: Coded Simple Value

Coded data in its simplest form, consists of a code. The code system and code system version is fixed by the context in which the value occurs. ‘cs’ is used for coded attributes that have a single HL7-defined value set.

int: Integer Number

Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers that are results of counting and enumerating. Integer numbers are discrete, the set of integers is infinite but countable. No arbitrary limit is imposed on the range of integer numbers. Two NULL flavors are defined for the positive and negative infinity.

oid: ISO Object Identifier

A globally unique string representing an ISO Object Identifier (OID) in a form that consists only of numbers and dots (e.g., ‘2.16.840.1.113883.3.1’).

probability: Probability

The probability assigned to the value, a decimal number between 0 (very uncertain) and 1 (certain).

real: Real Number

Fractional numbers. Typically used whenever quantities are measured, estimated, or computed from other real numbers. The typical representation is decimal, where the number of significant decimal digits is known as the precision. Real numbers are needed beyond integers whenever quantities of the real world are measured, estimated, or computed from other real numbers. The term “Real number” in this specification is used to mean that fractional values are covered without necessarily implying the full set of the mathematical real numbers.

ruid: HL7 Reserved Identifier Scheme

HL7 Reserved Identifier Scheme (RUID)\nA globally unique string defined exclusively by HL7. Identifiers in this scheme are only defined by balloted HL7 specifications. Local communities or systems must never use such reserved identifiers based on bilateral negotiations.

HL7 reserved identifiers are strings that consist only of (US-ASCII) letters, digits and hyphens, where the first character must be a letter. HL7 may assign these reserved identifiers as mnemonic identifiers for major concepts of interest to HL7.

st: Character String

The character string data type stands for text data, primarily intended for machine processing (e.g. sorting, querying, indexing, etc.) Used for names, symbols, and formal expressions.

ts: Point in Time

A quantity specifying a point on the axis of natural time. A point in time is most often represented as a calendar expression.

uid: Unique Identifier String

A unique identifier string is a character string which identifies an object in a globally unique and timeless manner. The allowable formats and values and procedures of this data type are strictly controlled by HL7. At this time, user-assigned identifiers may be certain character representations of ISO Object Identifiers (OID) and DCE Universally Unique Identifiers (UUID). HL7 also reserves the right to assign other forms of UIDs (RUID), such as mnemonic identifiers for code systems.

url: Universal Resource Locator

A telecommunications address specified according to Internet standard RFC 1738 [http://www.ietf.org/rfc/rfc1738.txt]. The URL specifies the protocol and the contact point defined by that protocol for the resource. Notable uses of the telecommunication address data type are for telephone and telefax numbers, e-mail addresses, Hypertext references, FTP references, etc.

uuid: DCE Universal Unique Identifier

A globally unique string representing a DCE Universal Unique Identifier (UUID) in the common UUID format that consists of 5 hyphen-separated groups of hexadecimal digits having 8, 4, 4, 4, and 12 places respectively.

NOTE: The output of UUID related programs and functions may use all sorts of forms, upper case, lower case, and with or without the hyphens that group the digits. This variate output must be postprocessed to conform to the HL7 specification, i.e., the hyphens must be inserted for the 8-4-4-4-12 grouping and all hexadecimal digits must be converted to upper case.

XML Data Types

Other, non-CDA, data types used to support exchange of CDA documents

xs:ID

ID represents the ID attribute type from [XML 1.0 (Second Edition)]. The “value space” of ID is the set of all strings that “match” the NCName production in [Namespaces in XML]. The “lexical space” of ID is the set of all strings that “match” the NCName production in [Namespaces in XML].

Terminology: Value Sets

These define sets of codes used by systems conforming to this implementation guide.

Binary Data Encoding Value Set

Identifies the representation of binary data in a text field

CDAEntityNameUse

A set of codes advising a system or user which name in a set of names to select for a given purpose - limited to values allowed in original CDA definition

CDANullFlavor

CDA NullFlavors - limited to values allowed in original CDA definition

CDAPostalAddressUse

A set of codes advising a system or user which address in a set of like addresses to select for a given purpose - limited to values allowed in original CDA definition

CDASignatureCode

A set of codes specifying whether and how the participant has attested his participation through a signature - limited to values allowed in original CDA definition.

Note: CDA Release One represented either an intended (X) or actual (S) authenticator. CDA Release Two only represents an actual authenticator, so has deprecated the value of X.

CompressionAlgorithm

Type of compression algorithm used - limited to 4 concepts from original CDA definition

Terminology: Code Systems

These define new code systems used by systems conforming to this implementation guide.

Binary Data Encoding Code System

Identifies the representation of binary data in a text field

Example: Example Instances

These are example instances that show what data produced and consumed by systems conforming with this implementation guide might look like.

Example CDA document

Example CDA document from original CDA release