Skip to main contentAlvearie

Health Patterns

Health patterns are cloud agnostic reference implementations for the overall Alvearie architecture that incorporate best practices using open technologies.

Below are the initial patterns that incorporate parts of Alvearie along with other open technologies that can be used to start building your own healthcare solutions using a common base of proven technology.

The Clinical Ingestion health pattern with optional Enrichment is a cloud agnostic (has been run on IBM Cloud, AWS, Azure, Google), flexible approach to processing healthcare data and storing it into a FHIR server. At the most basic level, the Ingestion pattern will read HL7 or FHIR data from a Kafka topic and use NiFi to orchestrate any desired conversion or validation, and then store the results into the FHIR Server

Within the NiFi canvas, the Clinical Ingestion health pattern will:

  • Convert HL7 to FHIR using technology from LinuxForHealth
  • Validate the FHIR data without storing it in the FHIR Server
  • Put the converted/validated data on a Kafka topic for processing by the Enrichment pattern
  • Store the FHIR bundle into the FHIR Server
  • Handle errors:
    • In case of errors within the bundle, individual resources are retried
    • Errors are reported back to the data integrator via the kafka topic

The Clinical Enrichment health pattern has been separated from the Ingestion pattern. It is still available to be deployed and run as part of ingestion, but it can also be set up on its own. If it is run as part of Ingestion it will Enrich the data as it comes into the environment, before it is stored in the FHIR Server. It can also be run after the data is persisted in the FHIR server and configured to run on new or changed data. The goal for this Enrichment pattern is that the enriched data will be written to a FHIR server by default, but because these patterns are just reference implementations, they can be modified and consumed in a number of ways.

Enrichment will read FHIR data from a Kafka topic and use NiFi to orchestrate the optional types of enrichment such as:

The flexibility of this approach allows the consumer to use enrichment at the appropriate time. For instance, some of the enrichment could happen at Ingestion time (FHIR Terminology for instance) prior to storing the data, but after the data is persisted in the FHIR Server, Enrichment can run again to only run NLP and/or an analtyic algorithm.

To get started today, use the clinical data ingestion & enrichment pattern today but watch this space - the Enrichment pattern will be available separately soon.

The Clinical Data Cohorting pattern provides a reference implementation that uses the quality measure & cohort service to find patients within the FHIR server that match a given cohort as defined using CQL.

Get started using the cohorting pattern today

The Clinical Data Access pattern shows how to configure access to the FHIR server for traditional access methods, in particular how to configure the FHIR server for SMART on FHIR using Keycloak and the Keycloak extensions for FHIR

Get started using the Data Access pattern today

Clinical Data Analytics - Coming Soon

The Clinical Data Analytics reference implementation will incorporate various types of analytics using Kubeflow. To begin, we will incorporate all of the analytics found in the Enrichment pattern into Kubeflow by calling the same set of Microservices that were used by Enrichment.

We will have examples of

  • Using single patient data from the FHIR server to score against a model
  • Bulk export data from the FHIR Server, transform the data and run the model/analytic in Kubeflow pipelines against multiple patients
  • Bulk export data from the FHIR Server and transform it to train a new model
  • Serving an existing trained model