This page is part of the HL7 FHIR Implementation Guide: minimal Common Oncology Data Elements (mCODE) Release 1 - US Realm | STU1 (v2.0.0: STU 2) based on FHIR R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions
This section outlines requirements and recommendations for mCODE participants. The conformance verbs - SHALL or MUST, SHOULD, and MAY - are defined in FHIR Conformance Rules.
Two roles for mCODE Participants are defined:
This IG currently only provides CapabilityStatements and documentation for “pull” (query-response) architectures, however, regardless how exchanges occur, all participants MUST follow the conformance requirements in this IG, except those specifically identified as applying only to pull architectures.
mCODE participants MUST meet the following requirements for conformance:
To facilitate conformance testing, testing software must be able to determine which patients are “in-scope” (meaning cancer patients whose data is presented or exchanged with the intention of conforming to mCODE). In general, all patients with confirmed cancer diagnoses SHOULD be covered by mCODE, but mCODE provides several ways to to identify this group of in-scope patients. See the Identifying In-Scope Patients page for details.
The information produced and consumed by mCODE participants is defined by a set of profiles. Both Senders and Receivers must conform to the expectations set by these profiles. See the Profile Conformance page for details.
mCODE Senders MUST be able to populate data elements Must-Support (MS) obligations, for all profiles they support (as declared in their CapabilityStatement). Receivers MUST be able to meaningfully process elements with MS obligations for each profiles they support (as declared in their CapabilityStatement). “Able to Populate” and “Meaningfully Process” have particular meanings, as discussed on the Profile Conformance page.
mCODE defines operations that Senders and Receivers use to exchange mCODE information. In a “pull” (query-response) architecture, Senders MUST support the requests below for retrieving all resources conforming to a given mCODE Profile, UNLESS they do not support the profile at all (see “Support All mCODE Profiles” below). For more details on the conformance requirements for Senders and Receivers, see Profile Conformance.
Note that the requests below may return resources associated with patients who are not in-scope patients. These resources MAY not conform to mCODE profiles.
GET [base]/Condition?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-primary-or-uncertain-behavior-cancer-disorder-vs
GET [base]/Condition?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-secondary-cancer-disorder-vs
GET [base]/Observation?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-observation-codes-stage-group-vs
GET [base]/Observation?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-observation-codes-primary-tumor-vs
GET [base]/Observation?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-observation-codes-regional-nodes-vs
GET [base]/Observation?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-observation-codes-distant-metastases-vs
GET [base]/Observation?code:in=http://hl7.org/fhir/us/mcode/ValueSet/mcode-tumor-marker-test-vs
GET [base]/Observation?code=http://loinc.org|78923-0
GET [base]/Observation?code=http://loinc.org|89247-1
GET [base]/Observation?code=http://loinc.org|89243-0
GET [base]/Observation?category=vital-signs
GET [base]/DiagnosticReport?category=LAB
(note that LAB
MUST be capitalized)GET [base]/Observation?category=laboratory
GET [base]/Observation?code=http://loinc.org|69548-6
specimen
element in resources conforming to GenomicVariant or GenomicsReportGET [base]/DiagnosticReport?code=http://loinc.org|81247-9
GET [base]/Observation?code=http://loinc.org|53041-0
reasonCode
element, and/or (2) a reference to a resource conforming to PrimaryCancerCondition or SecondaryCancerCondition in the reasonReference
element. Because these elements are not required, these criteria may not identify all conforming resources.GET [base]/Procedure?code=http://snomed.info/sct|387713003
will identify all surgical procedures. Procedure.code
is extensibly bound to CancerRelatedSurgicalProcedureVS, so further filtering to include only Procedures with code
in this value set will identify some but not necessarily all cancer-related surgical procedures.GET [base]/Procedure?code=mcode-radiotherapy-course-summary
GET [base]/Observation?code=http://loinc.org|88040-1
BodyStructure.morphology
is fixed to http://snomed.info/sct|367651003
, but this is not a required element. This may therefore be used to identify some but not all BodyStructure resources conforming to this profile.GET [base]/Specimen?type=http://terminology.hl7.org/CodeSystem/v2-0487|TUMOR
(note that TUMOR
MUST be capitalized)GET [base]/Observation?code=http://loinc.org|21889-1
Each mCODE participant MUST publish a FHIR CapabilityStatement listing their supported profiles, by declaring the profile in CapabilityStatement.rest.resource.supportedProfile
. The CapabilityStatement SHALL be returned in response to a GET [base]/metadata
request.
ALL mCODE participants MUST at minimum support the CancerPatient and PrimaryCancerCondition profiles.
Additional conformance requirements from US Core apply to RESTful interactions, searches, and resource formats in mCODE. mCODE “inherits” all US Core conformance requirements. US Core provides base profiles for many (but not all) mCODE profiles, outlines expectations for handling of missing or unknown data elements, and outlines how to associate provenance information associated with collection, transfer, and updating of clinical information.
International users of mCODE may find US Core an impediment to implementation. Application of mCODE to other countries is open to further discussion.
mCODE participants SHOULD meet the following requirements for conformance:
In addition to supporting the core profiles as described above, mCODE participants SHOULD support all profiles defined in mCODE UNLESS the participant does not anticipate supplying or consuming a certain type of data, usually by virtue of playing a limited or specialized role in clinical or information workflows. For example, a genomics laboratory may support GenomicsReport, but not vital signs or staging.
Participants SHOULD also support the non-mCODE-specific profiles that are considered part of an mCODE Patient Bundle, such as blood pressure.
The mCODE Patient Bundle provides a mechanism to retrieve all mCODE-conforming resources for an Identify in-scope Patient. Participants SHOULD support this CapabilityStatement (sender/receiver) for the mcode-patient-everything operation, which retrieves an mCODE Patient Bundle for a given Patient ID.
GET [base]/Patient/[id]/$mcode-everything
This endpoint SHALL support start
and end
parameters which operate the same as in the Patient/[id]/$everything
operation.
mCODE Patient Bundles SHALL be identified by an id
value that matches the id
in the contained CancerPatient-conforming resource.
meta.profile
to Signal ConformanceParticipants SHOULD populate meta.profile
elements for all resources to indicate which profiles the resources should conform to. Participants SHOULD also implement profile search, which allows participants to query using the _profile
parameter to return resources conforming to the profiles declared in meta.profile
.
Participants MUST populate meta.profile
for elements included in the mCODE Patient Bundle.
Profile search and population of meta.profile
originate as “SHALL” requirements in the base FHIR specification; they are not an additional requirements imposed by mCODE. However, in practice, few implementations have followed these requirements. Refer to the FHIR Documentation on supported profiles for details.