Continuous Glucose Monitoring, published by HL7 International / Orders and Observations. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cgm/ and changes regularly. See the Directory of published versions
Official URL: http://hl7.org/fhir/uv/cgm/ImplementationGuide/hl7.fhir.uv.cgm | Version: 1.0.0 | |||
IG Standards status: Trial-use | Maturity Level: 2 | Computable Name: ContinuousGlucoseMonitoring |
The Continuous Glucose Monitoring Implementation Guide provides a standardized approach for sharing Continuous Glucose Monitoring (CGM) data between actors. This Implementation Guide (IG) focuses on enabling the exchange of CGM data, including high-level reports and raw glucose observations, to support collaborative glucose management. The requirements for this guide were initially developed in the Argonaut Project with input from patients, providers, CGM device vendors, app developers, and EHR systems, and later in collaboration with the HL7 Orders and Observations Work Group.
Sarah, a type 1 diabetes patient, is switching to a new doctor. She has been using a CGM device and a patient app that stores her CGM data on her phone or in an app backend server. The app supports secure health data exchange standards compatible with the CGM IG. Sarah authorizes the app to connect with her new provider's EHR, using her patient portal credentials to grant access to the phone app. The app then sends Sarah's CGM reports from the past 3 months to the new provider's EHR using FHIR, ensuring her new doctor can access her recent CGM history for informed decision-making.
Dr. Johnson treats Michael, a type 2 diabetes patient struggling with glucose management. Dr. Johnson's practice uses "CloudCGM", a fictional cloud-based diabetes management platform that supports the CGM IG. Michael has a patient account in the CloudCGM platform, and a "Sharing Code" appears in his account settings. During a clinic visit, Dr. Johnson launches the CloudCGM SMART on FHIR app inside the EHR, entering the sharing code that Michael reads aloud. This process establishes a linkage between Michael's records in the two systems. CloudCGM is now able to submit data every week into Dr. Johnson's EHR, with results appearing in the native interface and easily incorporated into visit notes.
Dr. Patel is the principal investigator for a longitudinal research study. Participants are recruited from multiple diabetes management platforms that support the CGM IG. The study protocol allows participants to share CGM data after completing an informed consent process. For consented participants, the diabetes management platforms submit a weekly data feed to a study server under Dr. Patel's control. The standardized format and exchange protocols enable an efficient, multi-platform study focused on collecting raw glucose readings as part of the data package.
The data submitter is a software system that manages CGM data. It typically incorporates a patient-facing app and sometimes a clinician-facing EHR-integrated app and cloud service.
This IG also refers to Data Submitters as "apps" or "diabetes management platforms".
The data receiver is a software system that receives and stores the CGM data submitted by the data submitter.
This IG also refers to Data Receivers as "EHRs".
The following Must Support (MS) expectations for system capabilities are an initial draft to guide early implementations. The spec recognizes that actor-based MS may be needed in a future release.
The MS flag requires that data submitters must be capable of sending the element, and data receivers must be able to parse it without error. While receivers must process the element, they may choose to ignore the data if it does not apply to their use case, but they must not reject a resource solely because it contains it. For supported profiles, MS elements indicate which resource types and elements a submitter needs to be capable of submitting.
The CGM Data Submission Bundle profile defines resource type and Observation profile entries. They are all labeled as MS except for two pairs of Observation profiles that have molar and mass units options. However, any conformant implementation must support at least one option for each pair of options.
App Authorization: The Data Submitter completes an authorization process (e.g., SMART App Launch or SMART Backend Services Authorization) to securely access the EHR system.
Establish EHR Patient ID: After successful authorization, the Data Submitter determines the "logical id" of the patient's Patient
resource within the EHR's FHIR Server. The logical id can be discovered through authorization context (e.g., SMART's launch/patient
context), through FHIR patient search, or using an out-of-band (OOB) process.
Learn Submission Preferences: The Data Submitter determines the EHR's CGM data submission preferences by:
a. Querying the EHR FHIR server for a specific ServiceRequest
resource that contains the CGM data submission standing order or
b. Learning the submission schedule through an out-of-band process.
a. Scheduled Submission Interval: Based on the standing order obtained from the submission preferences, the Submitter initiates scheduled submissions of CGM data at the specified intervals.
b. One-Time Orders: The Submitter may also support manual triggers, such as an in-app button, allowing users to initiate on-demand submissions of CGM data.
Prepare FHIR Bundle: When a submission is triggered (either scheduled or a one-time order), the Data Submitter prepares a FHIR Bundle containing the relevant CGM data, conforming to the specified profiles and requirements.
POST Bundle to EHR: The Data Submitter issues a POST request to send the prepared FHIR Bundle to the EHR.
This workflow ensures that the Data Submitter is authorized, respects the EHR's submission preferences, and securely transmits CGM data in a standardized format. The combination of scheduled submissions and manual triggers provides flexibility, ensuring that the EHR receives up-to-date CGM data as needed.
In this workflow, a patient-facing app connects directly to the EHR using the EHR's authorization capabilities (e.g., SMART on FHIR). The app acts as a client and undergoes an authorization process, where the patient approves the app to access their EHR, granting it write scopes. This process ensures that both the patient and the source EHR system agree to allow the app to write data using an appropriate access token.
Technical Details
launch/patient
: patient app will already know who the patient is, and only requires a corresponding ID from the EHRoffline_access
: establish persistent access for long-term submissionspatient/Patient.r
: it may still be desirable to cross-reference patient demographics, e.g., to confirm a matchpatient/ServiceRequest.rs?code=cgm-data-submission-standing-order
: helps the app learn the EHR's data submission preferencespatient/DiagnosticReport.cu?category=LAB
: submit a summary reportpatient/Observation.cu?category=laboratory
: submit a summary observation or sensor readingpatient/Device.cu
: submit device details associated with a sensor readingFor provider-facing apps, the app can be integrated directly into the EHR's user interface using the SMART on FHIR EHR launch workflow. EHRs widely support this workflow, allowing apps to run within the EHR's screen real estate. The EHR-integrated app might represent a device manufacturer or an independent diabetes management platform. The app can retrieve the patient's ID and demographics from the EHR in real-time using the FHIR Patient API.
In-band or out-of-band processes can correlate the patient with a data record in the app's backend system.
Examples include but are not limited to:
Technical Details
launch/patient
at linkage timeoffline_access
user/
offline_access
system/
offline_access
because short-lived access tokens are available at any time via client credentials grant☛ See Example Bundle
☛ See Full Data Profile
☛ See $submit-cgm-bundle
Operation Definition
Once a Data Submitter is connected to the EHR, it can POST CGM data as a transaction
Bundle to [base]/$submit-cgm-bundle
.
The Bundle entry
array includes any combination of
Note: Unlike standard FHIR transactions, where servers must process all entries as a single unit, the
$submit-cgm-bundle
operation allows servers to selectively accept and persist only a subset of the submitted resources.
Technical Details
[base]/$submit-cgm-bundle
http://hl7.org/fhir/uv/cgm/CapabilityStatement/cgm-data-receiver
in their CapabilityStatement.instantiates
$submit-cgm-bundle
operation at the server level429
(Too Many Requests) if a client is submitting data too frequently$submit-cgm-bundle
transaction Bundles, including, but not limited to:
POST
operations for resources.Observation
, Device
, Patient
, DiagnosticReport
, ServiceRequest
).Warning: Accepting and processing arbitrary transaction Bundles without appropriate validation presents a security risk. Implementers must carefully consider the operations and resource types they will accept.
Handling Duplicate Submissions
When submitting CGM data, there are two complementary approaches for handling potential duplicates:
ifNoneExist
elements in Bundle.entry.request
Bundle.entry.request.ifNoneExist
: identifier=https://client.example.org|123
Bundle.entry
elements that have the ifNoneExist
element and, for each of these entries, respond with a status 400
in the response Bundle.Bundle.entry
elements according to other applicable rules.☛ See Example Order ("Send a summary every two weeks")
☛ See Full Data Profile
The Data Receiver can expose a standing order indicating:
Guiding Data Submission
This standing order is modeled as a FHIR ServiceRequest
resource, which
Data Submitters can query to guide their future submissions. The standing order specifies the patient, the type of data to be submitted, and the frequency of submission.
DataSubmissionSchedule
The DataSubmissionSchedule
extension contains:
submissionPeriod
: Quantity, with units bound to the UnitsOfTime value set (allowing s
, min
, h
, d
, wk
, mo
, a
) indicating how often the data should be submitted (e.g., every 2 weeks, every month).submissionDataProfile
(1..*): canonical
reference to FHIR profiles that represent the types of data to be submitted according to the specified schedule.lookbackPeriod
(optional): Quantity, with units bound to the UnitsOfTime value set (allowing s
, min
, h
, d
, wk
, mo
, a
) indicating the period of time the data submission should cover (e.g., past 30 days, past 3 months).While the value set supports granular units like seconds, minutes, and hours, CGM data submission schedules typically involve longer durations such as days, weeks, or months.
Multiple DataSubmissionSchedule
extensions can be included in a single DataSubmissionRequest
resource if the Data Recipient prefers a different schedule for different data types.
Out-of-band communication between the app developer and the clinical provider system can also be used to establish preferred submission schedules. Note that a patient or provider can also manually trigger a one-time submission within an app, and the CGM Data Submission One-Time Order profile can be used for these on-demand data requests.
Technical Details
The mechanism for transmitting one-time orders from EHR to CGM Data Submitter is left out-of-band in this version of the specification. Implementation approaches may include direct API calls triggered by automated logic or explicit user actions. CGM Data Receivers and Submitters SHOULD document their supported out-of-band mechanisms in their developer documentation. Future versions may provide an in-band option based on implementation experience.
☛ See Example Order ("Request data for all of 2024")
☛ See Example Order ("Request data for last 30 days")
☛ See Full Data Profile
The Data Receiver can expose a one-time order indicating:
Guiding Data Submission
Like the CGM Data Submission Standing Order, this one-time order is modeled as a FHIR ServiceRequest
resource. This profile is used to request CGM data for on-demand data requests rather than ongoing scheduled submissions. For example, a provider can fetch the most up-to-date results for an upcoming appointment.
DataSubmissionOneTimeSpec
The DataSubmissionOneTimeSpec
extension contains:
timePeriod
: A FHIR Period data type specifying the absolute start and end dates/times for data submission (e.g., January 1, 2024, to December 31, 2024).submissionDataProfile
(1..*): canonical
reference to FHIR profiles that represent the types of data to be submitted.While the value set supports granular units like seconds, minutes, and hours, CGM data submission schedules typically involve longer durations such as days, weeks, or months.
Data Chunking for Large Time Periods
While one-time orders can specify any time period (including a patient's entire history), it's usually better to break large requests into meaningful chunks. Chunking makes data size manageable and summary statistics more relevant. Receivers can control chunking by sending individual requests for yearly or monthly periods where the analysis period is more meaningful.
The Data Submission protocol defined above enables standardized integration between CGM data sources and receiving systems, such as EHRs. However, there are situations where tight integration is not feasible or desired. SMART Health Links (SHLinks) provide a complementary method for sharing CGM data and reports among patients, caregivers, clinicians, and other authorized parties. SHLinks enable users to easily share selected subsets of CGM data as needed, providing an always-up-to-date data feed without the need for direct system integration between the sharing parties. Specific scenarios where SHLinks provide value include:
This IG ensures comprehensive interoperability that accommodates diverse real-world requirements across the CGM data-sharing landscape by defining a tightly orchestrated Data Submission API and a more loosely coupled SHLinks capability.
SHLink Creator: A system that can generate SHLinks containing CGM data and reports, acting as a SHLink Sharing Application.
SHLink Receiver: A system that can receive and process SHLinks containing CGM data and reports, acting as a SHLink Receiving Application.
The SHLink Creator generates a SHLink containing the user-selected content, encrypted with a unique key.
The user shares the SHLink with the intended recipient(s), who use a SHLink Receiver to stay up-to-date by periodically accessing the shared data.
This Implementation Guide is designed to complement the Personal Health Device Implementation Guide (PHD). PHD provides a foundational framework for mapping device-level data into FHIR, with a focus on information flows into and through a Personal Health Gateway. It intentionally specifies no interpretations of the data or assumptions about what data is important. It provides no interpretation of the mapped data or guidance on actions to be taken with the data once it has passed beyond the Gateway. In contrast, CGM focuses on a downstream clinical workflow, specifically the submission of summary reports, key statistical metrics, and underlying measurements to a clinical system, such as an EHR.
A system can therefore use PHD as a guide for ingesting discrete sensor data, and CGM as a guide for sharing discrete results, generating summary observations, and producing clinical reports. For systems that originate data from a PHD-compliant gateway, it is possible to construct glucose Observations that conform to the profiles in both guides. The mapping between the PHD and CGM CodeSystem requirements is a point of further study.
This guide does not mandate specific Observation.category
and DiagnosticReport.category
values for CGM data. The appropriate categorization of CGM data will be addressed in future versions of this specification.
This guide is based on the FHIR R4 specification and relies on other implementation guides, including:
IG | Package | FHIR | Comment |
---|---|---|---|
hl7.fhir.uv.cgm#1.0.0 | R4 | ||
hl7.terminology.r4#6.5.0 | R4 | Automatically added as a dependency - all IGs depend on HL7 Terminology | |
hl7.fhir.uv.extensions.r4#5.2.0 | R4 | Automatically added as a dependency - all IGs depend on the HL7 Extension Pack | |
hl7.fhir.uv.tools.r4#0.7.1 | R4 | for example references |
Refer to the Validation Page for the complete list of dependencies.
There are no Global profiles defined
This publication includes IP covered under the following statements.
This is an R4 IG. None of the features it uses are changed in R4B, so it can be used as is with R4B} systems. Packages for both R4 (hl7.fhir.uv.cgm.r4) and R4B (hl7.fhir.uv.cgm.r4b) are available.
This Implementation Guide was developed with the input and collaboration of numerous individuals and organizations. The project's initial collaboration space can be found on Confluence: FHIR Write - CGM.
Primary Editors:
Key Contributors:
This guide benefited greatly from the foundational work and diverse perspectives brought forth during the Argonaut Project, including contributions from CGM device vendors, application developers, Electronic Health Record (EHR) system providers, patient advocates, and clinicians. Their collective insights were invaluable in shaping the requirements and solutions presented in this guide.