Giter Club home page Giter Club logo

health-architectures's Introduction

⚠️ Thank you for your interest in our repository. As of May 13, 2022, this repository has been archived, and is no longer maintained or updated.

Introduction

UPDATE - As of 06/01/2021, FHIR Proxy is now in its own dedicated repository at https://github.com/microsoft/fhir-proxy.

Health Architectures is a collection of reference architectures and, when appropriate, implementations. They illustrate end-to-end best practices for using the Azure API for FHIR and related technologies. Below is the holistic conceptual end to end architecture for Azure API for FHIR. Microsoft Health Concecptual For more information on health solutions go to Azure for Health Cloud. For more information regarding the Azure Fast Healthcare Interoperability Resource (FHIR) service for health data solutions go to Azure API for FHIR.

We are the Microsoft Health Cloud & Data Architectural Engineering team, which is part of Microsoft Health. We work side by side with the product teams responsible for technologies such as the Azure API for FHIR, IoMT FHIR Connector for Azure, and more. Through collaboration with the product teams, partners and customers we bring you these reference architectures.

As we work with customers, partners, and co-workers, we frequently come across requests for references architectures & code for end to end implementations. For example, how can I pick up HL7v2 messages generated in my environment from my EMR (Electronic Medical Record), Lab System, Scheduling System, etc. then ingest them into FHIR near real-time? These questions and scenarios then become the basis for our reference architectures. Of course, we remove customer specific data, then generalize the design for greater suitability and impact.

As you look through this repository, which will be updated over time, you will see some typical 'hello world' examples as well as more complex solutions. We conduct peer reviews to bring you the best practices for using the Microsoft Health technologies.

We invite you to ask questions, make suggestions and share use cases which we might consider for future reference architectures or implementations.

Getting Started

We have organized this repo into areas which map to our offering for FHIR and related technologies.

  1. For capabilities central to our FHIR offerings look here.
    Topics include:

    • How to generate events when create, read, update, or delete (CRUD) operations take place in FHIR
    • How to export data from FHIR for research, analytics, machine learning, etc.
    • How to secure resources in FHIR and/or process data on egress (i.e. anonymization) and ingress (i.e proxy)
  2. For capabilities around our Internet of Medical Things (IoMT) offering look here.
    Topics include:

    • How to configure the IoMT FHIR Connector and process telemetry data
    • How to integrate IoMT data with FHIR and using Microsoft Power BI to create a dashboard
    • How to integrate IoMT data with FHIR and using Microsoft Teams to create notifications
  3. For capabilities around ingesting HL7v2 and converting messages to FHIR look here.
    Topics include:

    • How to ingest HL7v2 from your on-premises system and deliver to Azure for conversion and storage to FHIR

How to set-up a demonstration environment

We have provided code solutions alongside the reference architectures. While we have tested our code with our OSS & managed FHIR offerings many should be able to deploy against other FHIR deployments (if compliant and at the R4 level).

You can use your existing deployment of our API for FHIR or FHIR Server or you can deploy a sandbox/demo environment by deploying our FHIR server samples as described here.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

health-architectures's People

Contributors

alexgolesh-msft avatar c-w avatar corygstevenson avatar daemel avatar dc995 avatar dependabot[bot] avatar erikhoward avatar galiya avatar ginalee-dotcom avatar jeongl avatar joedrowan avatar kfprugger avatar lizashak avatar mathyousee avatar microsoftopensource avatar mikaelweave avatar paulhbartley avatar sordahl-ga avatar steverhall avatar techiekeri avatar v-pbartley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

health-architectures's Issues

FhirConverter not starting - fhirconverter:v2.1.1 not found

deployed FhirConverter with deployhl72fhir.bash script

when checking the logs I see this error:

2022-03-15T17:44:22.472Z INFO - Pulling image: healthplatformregistry.azurecr.io/fhirconverter:v2.1.1
2022-03-15T17:44:23.825Z ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"manifest for healthplatformregistry.azurecr.io/fhirconverter:v2.1.1 not found: manifest unknown: manifest tagged by "v2.1.1" is not found"}

2022-03-15T17:44:23.826Z ERROR - Pull image threw Exception: Input string was not in a correct format.
2022-03-15T17:44:23.827Z INFO - Pulling image from Docker hub: healthplatformregistry.azurecr.io/fhirconverter:v2.1.1
2022-03-15T17:44:25.024Z ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"manifest for healthplatformregistry.azurecr.io/fhirconverter:v2.1.1 not found: manifest unknown: manifest tagged by "v2.1.1" is not found"}

2022-03-15T17:44:25.025Z WARN - Image pull failed. Defaulting to local copy if present.
2022-03-15T17:44:25.032Z ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)
2022-03-15T17:44:25.033Z INFO - Stopping site hl72fhirv4hl7conv3489 because it failed during startup.
/home/LogFiles>

previous version worked fine.

HL7Conversion - deployhl72fhir.bash not working

Hi,

Tried deploying HL7Conversion:

  • Deploying FHIRProxy creates a KeyVault
  • Deploying Ingest creates a KeyVault
  • When deploying Convert (deployhl72fhir.bash), script is asking for one KeyVault name instead of the 2 above, causing the script to fail.

Incorrect API path in Readme

I'm not sure if I am confusing 2 APIs but as I was following the instructions to set up the Participant Filter Post-Processor I kept getting a 404 when trying to link my user to a fhir resource.

The instructions said to call the API endpoint following the path
https://<your fhir proxy url>/api/manage/link/<ResourceName>/<ResourceID>?name=<user principal name>.

however looking through the code it looks like the correct path is
https://<your fhir proxy url>/api/manage/link/<ResourceName>/<ResourceID>/<user principal name>

Are the readme instructions incorrect?

HL7 Ingest Error

IngestError

Trying to retrieve Function App Host Key when Function App is not fully created yet.
Adding a sleep 10 helped. But opening and saving in notepad, is causing pipe failed.

use mllp to liquid convertion api

I dont see a way to have my MLLP gateway send traffic to a store and use the Liquid templates? Is there a way to do that?
Thank you,

HL7 Ingest preserve strict message order use case

I would like to confirm a particular use case processing details.
The reference code is in hl7ingest.cs.

Use Case:
Input HL7 message Type MDM T02 with an OBX segment.

Given that : "The OBX segment can also contain encapsulated data, e.g., a CDA document or a DICOM image"
We have seen in practice that the OBX segment contains large size( lets say for example 10 MB) base64 encoded docs or images.

Question: Does the hl7ingest.cs code preserve the strict order for all messages?

To be more precise since the processing function will first save the message to a blob storage and then queue , it would appear that is possible for a new(smaller in size) HL7 to be received, processed and queued before the large MDM message loaded in storage and queued.

I wonder how this use case can be handled in the ingest component or is something that the HL7 conversion component should address.

Bash Scripts Not Stopping on Sub-shell Failures

I found this issue while working with deployhl72fhir.bash and confirmed that the same issue exists in at least one more .bash script. The start of the scripts has set -euo pipefail, however this is not honored in the sub-shells. This results in confusing behavior, like scripts saying they succeeded when they actually failed.

I don't have time for a PR now (apologies), but wanted to submit this for tracking. Probably the easiest solution is to implement what is suggested here and require Bash >= 4.4 since Bash 4+ is required already.

Example of what the user sees when this issue arises:
image

can not Authorize FHIRServerProxy-1

After running the deployhl72fhir.bash script everything is set up.

After that FHIRServerProxy-1 API Connection is in Error state ( This connection is not authenticated )

When attempting to Authorize I am directed to a login form for my credentials and getting this error message after logging in:

AADSTS90008: The user or administrator has not consented to use the application with ID '3648ca46-8d1e-4d62-8cde-27c00e70b03b'(https://sfp-proxy18447.azurewebsites.net). This happened because application is misconfigured: it must require access to Microsoft Graph by specifying at least 'Sign in and read user profile' permission.

In the documentation it is stated :

%%%%%
Goto the resource group that contains the deployed HL7toFHIR workflow
Find the FHIRServerProxy-1 API Connection and click on it
Click on Edit API Connection
Enter a Display name of FHIR Server Proxy
Click Authorize
Enter the Credentials for the user account, group or service principal from step #4
Click Save
%%%%%

3648ca46-8d1e-4d62-8cde-27c00e70b03b was created by the scripts and the values added to the key vault.

How can be this issue resolved? Where should I "Enter the Credentials for the user account, group or service principal from step #4"?

We can't use Validator endpoint

Hello, I'm trying to us configure the services endpoint using the documentation, but the when i run the docker command file (using windows as container) the command didn't work. when change to Linux container, the command run, but when i try to run this command => docker run -it --rm -p 8080:8080 myfhirvalidator-svc ... an error is shown and the image never run....

Also, when running the validator downloaded from here http://hl7.org/fhir/validator/ some of the profiles
i've being validating say "This is not a resource" or it does validate and throw errors like "Property not valid on
us-core...". Any help would be highly appretiated.

There are any consideration that i have to know.... in order to run this properly?

Regards !

Linking Users to Roles (FHIR Administrator Role)

Hi,

We are running into issues finalizing the SMART Proxy setup for external users within the Azure API for FHIR. We have created roles and are at the stage of Linking Users in the Participant Roles to FHIR Resources but are getting a 404 error. Can you please explain where one would grant the FHIR Administrative Role to complete the set-up.

health-architectures/FHIR/FHIRProxy at master · microsoft/health-architectures · GitHub

Kind Regards,
Moses Chege
Solution Architect , CHC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.