Skip to main content

Architecture

The Carium cloud-hosted collaborative care platform is designed with a focus on evolutionary change. It aims to steer clear of complex solutions with unclear practical use. The platform values quick adaptability, particularly in situations with uncertain initial requirements. It also facilitates smaller, manageable incremental changes.

The platform adopts a microservices architecture to meet these requirements. Each microservice boasts robust interfaces, allowing it to define its own implementation. The platform ensures a balanced number of these services, as too few could result in an unwieldy monolithic service, whereas too many could pose challenges in management and testing.

The platform also features a comprehensive set of HTTP APIs for managing and monitoring the platform, services, and users. These APIs provide all functionalities supported by Carium's web and mobile applications. This facilitates integration with third-party applications (for example, EMRs, BI tools, etc.) and the creation of custom workflows and automations.

This document provides an overview of the infrastructure and various services that comprise the Carium platform.

Infrastructure

Carium's computing infrastructure is spread across three Availability Zones in the same Amazon Cloud region. Each Availability Zone operates with independent power and network connections, and can withstand a disaster event in the other zones.

Carium software utilizes a shared-nothing architecture. In this setup, each virtual machine that runs the Carium server application doesn't hold any unique data. As a result, it can be forcefully terminated without causing any downtime for the application. As a part of Carium's regular operations, servers running production workloads are restarted at random. This ensures that there is no dependency on the longevity of a particular server and confirms that the software is fault-tolerant.

All durable customer data is stored on several HIPAA-eligible Amazon managed services, with Availability Zone redundancy options enabled. For instance, Carium's database is hosted by the Amazon Relational Database Service, which includes at least one redundant hot-standby in another Availability Zone. If a disaster causes resources in a specific Availability Zone to become unavailable, a healthy master resource in a functioning Availability Zone is immediately promoted. Similar redundancy configurations are used for other major data stores that Carium employs, such as Amazon Simple Storage Service (Amazon S3) and Elastic File System (EFS).

Customer data stores that are vital to the Carium application are automatically backed up at least once daily and retained for a minimum of 31 days. Disaster recovery requirements are reviewed for each resource at least quarterly to guarantee that all necessary durable resources are identified.

Platform Architecture - High Level.png

To provide customers with the best user experience, Carium utilizes AWS Global Accelerator to route customer traffic to the closest networking Point of Presence (PoP). After being routed to the nearest of 23 North American PoPs, traffic carried over AWS’s high-performance private network to the Carium backend and the overall latency to the Carium backend is reduced dramatically.

Services

Caredb

Caredb manages all the FHIR-based participant information in the product. It has also been extended to support additional participant level services.

FHIR-based object support is provided for:

  • Allergies
  • Appointments
  • Care Plans
  • Conditions
  • Diagnostic Reports
  • Encounters
  • Immunizations
  • Medication Statements
  • Observations
  • Patients
  • Practitioners

Additional capabilities supported by CareDB include:

  • Articles (Learning Content, Educational documents, videos, URLs)
  • Actions (SMART Goals)
  • Challenges
  • Custom Records
  • Journals
  • Medication reminders
  • Todo-list entries (Work-list Items)

Courier

Courier handles all communications between users of the platform. This includes:

  • Multicast notifications
  • Chat messages
  • Text/SMS
  • Emails
  • Mobile notifications
    • APN (Apple Push Notification) for iOS
    • FCM (Firebase Cloud Messaging) for both Android and Web
  • Video conferencing

In addition, Courier supports additional AWS/Twilio-based integrations, such as:

  • Alexa
  • Comprehend, message sentiment analyzer
  • Polly, text-to-speech
  • Transcribe, speech-to-text
  • TwiML, audio-call survey
  • Voice call

Cronkite

Cronkite controls the configuration and operation of dashboards and reporting within the Carium platform. It's responsible for:

  • Periodically collecting latest data from all backend services, process, and store them to the database warehouse (Redshift)
  • Manages custom dashboard job and dashboard APIs for custom reporting across different customers/organizations

Cronkite's Custom Job framework allows the solutions team to upload a custom Python code on the fly that runs in a sandbox. The custom code can run complex logic to query the data warehouse, and perform integration with 3rd-party data services, and generates metadata that will be presented to the dashboard widget, in the form of table, mark-down, or graph (Vega Lite).

The custom job can run in a scheduled manner, as well as on demand.

Dataengine

The Data Engine service provides a layer of additional analysis, summarization, and aggregation on top of the standard Carium time-series service, Lachesis. Below are a few examples of the support provided:

  • On-demand summary statistics (sum, max, min, mean, etc.) for a time-series metric over a given time interval.
  • Unit conversion for various metrics (for example kg to lbs)
  • Boolean tests that apply rules against metrics and time periods
    • All_in_range
    • Any_out_of_range
    • Daily_total_in_range
    • Decreasing
    • Decreasing_strict (monotonic)
    • Delta_in_range
    • Empty
    • Increasing
    • Increasing_strict (monotonic)
    • Mean
    • Mean_in_range
    • Nonempty
    • Pct_change_in_range
    • Threshold_index
    • Total_change_in_range

Drow

Drow manages email campaigns typically utilized in the recruitment of patients. In addition to managing contact lists, subscription handling, spam-monitoring and email designs/templates, Drow can provide analytics on the success rates of campaigns including open and click results.

Identity

The Identity service is responsible for managing user identity and other user related services, including:

  • Authentication
    • Native
    • OAuth2
    • Single sign-on/SAML
  • Authorization
  • Feature Flags
  • Multi-factor authentication
  • Organization
    • Onboarding code/rules
    • Provider users
    • Templates (email, message, SMS, theme)
  • Participant onboarding
  • Security groups

Authorization is a calculation based on users, organizations and the sharing of participant details. Participants can share their details to organizations or other users. Within an organization, sharing is calculated based on the organization members roll and their security group access.

Integrator

Integrator manages third-party data integrations including but not limited to:

  • Apple Health Kit
  • Fitbit
  • Bodytrace (weight scales and blood pressure cuffs)
  • Dexcom (Continuous Glucose Monitors)
  • Google Fit
  • Omron
  • Direct connect Bluetooth Devices
  • Nutrition data
  • Smartmeter
  • Tenovi

A selection of these integrations are done via standard Oauth2 process, where Carium is granted access to the users third-party data directly. Other integrations are pushed to this application from mobile devices, originating there via Bluetooth or local integrations such as Apple Health Kit. Still other integrations are linked dedicated cellular devices that use their own cloud backend and push new data reading to the Carium backend via webhooks.

User nutrition logs are stored in Integrator; the nutrition lookup database is served indirectly from Nutritionix.

Lachesis

Lachesis is responsible for management of raw time-series metrics on the Carium platform. Over 30 unique data types are currently supported. Low-level access to this data is available through Lachesis, but higher level services typically consume the data with the support of the previously described Data Engine APIs.

Lachesis is designed to be scalable, given the type of the data is typically in a large volume for each user. It supports many time-series operations, including summary, grouping, dimensional slicing, and slicing across arbitrary time ranges.

Overlord

Overlord manages participant “workflow and interactions” typically referred to as programs as well as surveys and survey results. Complex coordinated care work processes can be modeled as pathways. Overlord also manages programmable aspects of these processes such as forms and surveys(interviews).

Overlord pathway allows organization specific configuration of complex care navigation workflows. The pathways is managed in a number stages where each stage contains a number of steps. A pathway can assign learning content, assign and react to participant forms, manage work-list to-do items, and more.

Overlord survey is a specialized workflow that allows the user to go through a set of interview questions/answers. The workflow is designed to support multiple branches and different sets of possible questions/answers. The survey definitions are all configured through a JSON document that can be changed dynamically.

The survey supports the following question types:

  • calendar
  • multi-select
  • number
  • option (style: button, dropdown, slider)
  • range
  • text

Questions are presented to the user one at a time, depending upon the previous answer. Surveys also support ML-based interpreted value answers, which detect the user answer's sentiment, and drive the next question based on the interpreted value.

Overlord form is a organization programmable form which can be assigned to participants as part of a pathway. Forms are programmed through API and JSON configurations. Forms are presented to the user as a single page with answerable fields. Response fields can be free-form text, enumerated options, etc. Currents answers to one field may drive the defaults or allowable enumerations for another field.

Overlord program is a customizable workflow, fully configurable, through JSON documents. It consists of a state machine and a set of interaction models. Each program can be assigned to each individual dynamically. Any changes to the program (state-machine & interaction) is version-controlled to ensure that the changes don't disrupt the running program.

Overlord has built in, but still configurable program for RPM.

Pylon

Pylon is responsible for managing 3rd-party system integrations (for example EMRs) and custom event handlers. The EMR integration module is responsible for translating customer data to Carium normalized format. It supports the following connections:

  • FHIR-API + HL7: Athena, Cerner, Epic
  • Web API: Elation
  • XML API: MicroMD
  • 3rd-party Proxy: Redox

Custom event-handlers is a set of custom Python code that will be executed in a sandbox environment. It provides extensibility points that each customer organization can extend. The event-handler will be invoked by specific events (for example user addition, new journal entry), scheduled on specific times (one time or recurring), or manually invoked.

Showboat

Showboat acts as an API gateway that simplifies access across different services and is primarily intended for UI-based clients. To provide a simpler and more unified UI experience, Showboat can aggregate disparate API responses to provide a uniform UI view across clients. This app also stores user based UI preferences.

Sked

Sked manages schedulers and timed-based callbacks across different services. Both one-shot and periodic schedulers are supported. Periodic schedulers have the option to occur at a fixed local time, following a user's timezone time changes.