This guide is designed to assist EMR and EHR vendors with their integration with Ocean Cloud Connect using the FHIR module within Cloud Connect.

Historically, the Ocean team added specific modules to Cloud Connect for specific EMRs to connect to the proprietary APIs provided by these EMRs. This approach was effective for achieving integration in the early days before FHIR was the prevalent standard it is today. However, like other proprietary integrations, it does not scale well for either party.

Moving forward, the Ocean team is aiming to provide new integrators with the option of connecting to Ocean as an EMR/EHR using a single, well-defined FHIR protocol. In this context, Cloud Connect is acting not as the FHIR server but as a FHIR client, with certain specific requirements for the FHIR server. These requirements will ensure that adequate endpoints and resources are available for Ocean when providing the following EMR-integrated products and services:

High-Level Requirements

For a successful integration, implementors must provide the following services:

  • Authorization via OAuth2 client credentials with refresh token support
  • FHIR RESTful endpoints for core FHIR Resources such as Patient and Appointment
  • The Patient/$everything operation for comprehensive patient fetches
  • Depending on the product, extra endpoints may be required (such as Slot for OAB)

Design Considerations


RESTful Endpoint Requirements

M = mandatory, O = optional, N = not used

Endpoint eReferrals Online Booking (OAB) Reminders Kiosks Patient Messages Website Forms
Appointment GET M M M M O N
Appointment POST M M M M O N
Appointment PUT M M M M O N
Consent O O O O O O
DocumentReference M M M M M M
Observation O O O O O O
Patient GET M M M M M M
Patient POST M O M M M M
Patient/$everything M O N M M N
Practitioner O M M M N O
QuestionnaireResponse N O O O O O
Schedule N M M M N N
Slot N M N N N N
Task O O O O O O
ValueSet N M M O N N

Other Resources (not offered as endpoints)

Resource Used For Accessed Via
AllergyIntolerance eReferrals for CPP pre-population Patient/$everything
CareTeam OAB, Kiosk Patient/$everything
Immunization eReferrals for CPP pre-population, Vaccine reminder forms Patient/$everything
MedicationStatement eReferrals for CPP pre-population, Medication reconciliation form Patient/$everything

Suggested Implementation Strategy

  1. Familiarize yourself with FHIR, OAuth2 and this documentation. In this project specifically, focus on the iguide, the Resource Profiles, and the Documentation files associated with each individual FHIR Resource. Each Resource has additional documentation that explains Ocean's use of the Resource/endpoint as well as the specific RESTful calls and expectations.
  2. Use the Profiles to determine specifically which fields are used (read and written) by Ocean; these fields are the ones to focus on. Of course with FHIR we do not preclude integrators from using additional FHIR fields beyond this specification, but we do expect vendors to support our omission of these extra fields when writing data back via POST/PUT etc.
  3. Start implementing Authorization as a proof-of-concept, since this functionality will be required at an early stage to secure and test the API.
  4. Determine which products and use cases are required for your integration. Start implementating the associated mandatory endpoints for these use cases as shown above.
  5. Consider building the simpler read-only endpoints first as a proof-of-concept, such as the ValueSet, Practitioner and Patient/
  6. Use a RESTful API client such as Postman to test against your OAuth2 authorization and RESTful endpoints.
  7. Strongly consider building an automated test suite of the API as you go. This test-driven development will enhance your efficiency in the long term and ensure that the integration doesn't break with future changes to your code.
  8. Once the mandatory endpoints are functional, request assistance to set up your Ocean site in the test environment (https://test.cognisantmd.com, https://testcc.cognisantmd.com).
  9. Configure Cloud Connect to connect to your system by supplying the authorization credentials in the Cloud Connect web app. If it works, try "synchronization" and testing the use cases using Ocean. Good luck!