Giter Club home page Giter Club logo

openhack-fhir's Introduction

OpenHack-FHIR

This repository hosts the general guidance and reference architecture(s) for delivering an OpenHack focusing on Azure API for FHIR.

Go HERE for OpenHack focused on Microsoft Cloud for Health (MC4H).

Reference Architectures

Contents

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.

Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the Creative Commons Attribution 4.0 International Public License, see the LICENSE file, and grant you a license to any code in the repository under the MIT License, see the LICENSE-CODE file.

Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.

Privacy information can be found at https://privacy.microsoft.com/en-us/

Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents, or trademarks, whether by implication, estoppel or otherwise.


Go To Challenge00 - Pre-requisites: Technical and knowledge requirements for completing the Challenges

openhack-fhir's People

Contributors

ansgoyal avatar cajetzer avatar cyberuna avatar jfattic avatar jkarasha avatar matthansen0 avatar microsoftopensource avatar pjirsa avatar sameerdoshi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openhack-fhir's Issues

Error when creating App Registrations (PowerShell and Cloud Shell)

When using the PowerShell method or the Cloud Shell method I am getting an error when trying to create App Registrations:

Cloud Shell:
image
1st Error: Deploy\Scripts\openhack-fhir-auth-config.sh - Line 42

PowerShell:
image
1st Error: deploy\scripts\fhir-server\samples\scripts\PowerShell\FhirServer\Public\New-FhirServerApiApplicationRegistration.ps1 - Line 68

It looks like this is being caused by a breaking change in AzureAD which have new requirements for the AppId Uri:
https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-breaking-changes#appid-uri-in-single-tenant-applications-will-require-use-of-default-scheme-or-verified-domains

I believe this could be resolved by appending the domain name to the end of the ServiceURL when creating App Registrations, but Im not sure what downstream effects that will have on this OpenHack.

Procedure to Bootstap Mac Powershell

A few of us on mac got stuck with the very first powershell step and getting the correct modules installed. The following process was used by a few of us and seemed to work pretty well.

Bootstrap Mac Powershell

  • brew cask install powershell or Restart powershell
  • Uninstall Az, Azure, AzureRM and AzureAD
  • Unregister-PSRepository -Name 'Posh Test Gallery'

This should get you "clean", then:

  • Restart powershell
  • Install-Module Az
  • Install-Module Azure
  • Install-Module -Name Az.Accounts -AllowPrerelease -Force
  • Register-PackageSource -Trusted -ProviderName 'PowerShellGet' -Name 'Posh Test Gallery' -Location https://www.poshtestgallery.com/api/v2/
  • Install-Module AzureAD.Standard.Preview
  • Restart powershell
  • Import-Module Az
  • Import-Module Azure
  • Import-Module AzureAD.Standard.Preview

You should then be able to login, set you subscription then set your azuread to point at the new tenant.

When you go to run the first ps1 file you need to add the -adminPassword as explained in the docs because you are on mac.

Clarify which tenant is which

When listing Primary /secondary tenant, would be valuable to indicate Primary (Resource), secondary (Data). i keep losing track

[challenge 4] Troubleshooting Iot Connector

When something is wrong with device or fhir templates no data gets into FHIR Server.
What is the the way to troubleshoot the problems - any logging that could be enabled?

Edit Postman Environment

Doc Says its a slider. i see a drop down, where i can select the environment. then click the Eye to view. then edit.
image

[challenge 05] SQL schema incompatible with databricks workbook

The databricks notebook will fail out of the box because the insert statement in Cmd 13 is not compatible with the SQL Schema.

There should be a fix to the databricks workbook or the SQL schema. The insert that fails is the following:

INSERT INTO jdbcObservationTable
SELECT id AS observationid, SUBSTRING_INDEX(subject.reference,'/',-1) AS patientid, code.coding[0].code AS observationcode, code.coding[0].display AS observation, status, valueQuantity.unit, valueQuantity.value FROM observationTable;

A simple workaround is to insert dummy data to the missing columns:

INSERT INTO jdbcObservationTable
SELECT id AS observationid, SUBSTRING_INDEX(subject.reference,'/',-1) AS patientid, code.coding[0].code AS observationcode, '' AS deviceid, code.coding[0].display AS observation, '', '', status, valueQuantity.unit, valueQuantity.value FROM observationTable;

A better workaround is to fix the SQL schema, or insert the correct data in the databricks workbook.

Windows and Linux file formats

If you are using Windows subsystem for Linux and bash/Ubuntu shell, and Github desktop, github desktop converts the file format to Windows/DOS. this creates the following error:
: invalid option nameh: line 2: set: pipefail

there are 2 fixes - run git clone from subsystem for linux - so we can supply the command
or
run 'dos2unix ./deployhl7ingest.bash' which will convert file format.

This is a fix for the already existing error in troubleshooting section.

carify 'environment name' in challenge 3

Script requires an enviornment name, which was originally used to create the fhir resources. picking the same thing puts all new resources for anonymization and export into same RG. Probably want them in new rg, so should leave a hint that this is a New environment name

JDK Clarification

Given the naming conventions used by JAVA, consider clarifying the relationship between JDK 1.8 and JDK SE 8 for participants that may not be familiar.

Key Vault permission issues

Got below warnings while completing first challenge.

WARNING: The provided information does not map to an AD object id.
WARNING: Access policy is not set. No user or application have access permission to use this vault. This can happen if the vault was
created by a service principal. Please use Set-AzKeyVaultAccessPolicy to set access policies.

Missing dotnet core 3.1 requirement

In order to do challenge 3 you'll need to install dotnet core 3.1 to build the FHIR data tools. It should be added as a prereq in challenge 0

Consider devcontainer to help with environment configuration

When running through the hack steps I found myself debugging a lot of dependency installation issues or version mismatches where my local environment was using a different version than the hack instructions called for.

One area of improvement would be to configure the dependencies using a devcontainer so that people can focus on hacking, and less on dependency management/tooling installs.

Link Hygiene

On the prerequisite links (Challenge 00), since there are multiple links and steps, consider making the links open in a new tab or new window so the person following the instructions does not lose their instruction page when navigating to the specific pre-requisite information.

[challenge 1] - admin consent for SPs

In Challenge 1 when navigating to dashboards getting block by AAD message blocked by Admin consent needed.

Resolution - navigate to secondary Tenant and grant Admin Consent in API/permissions for each of the three SP created with environment

image

Why Download Health Architectures as a Zip?

I saw something curious during Challenge 2 that may be an issue. Is there a reason to have OpenHack participants download the Health Architectures repo as a zip instead of cloning/downloading it themselves directly from that Github repo?

Reasons to send the user to the repo:

  • Reduces size of OpenHack repository
  • Reduces need to update the OpenHack repo when Health Architectures repo changes
  • Exposes users to another repo that may help drive Health Cloud adoption

[challenge 2] - creating ingest function times out

Running deployhl7ingest.bash throws time out exception

Executing ./deployhl7ingest.bash...
Checking Azure Authentication...
Enter your subscription ID [xxx]:
Resource group with name fhirhacknero2 could not be found. Creating new resource group..
+ az group create --name fhirhacknero2 --location eastus
Starting HL7 Ingest Platform deployment...
Creating Storage Account [hack2store32574]...
The behavior of this command has been altered by the following extension: storage-preview
Retrieving Storage Account Connection String...
Creating Storage Account Container [hl7]...
Creating Service Bus Namespace [hlsb19805]...
Creating Queue [hl7ingest]...
Retrieving ServiceBus Connection String...
Creating hl7ingest Function App Serviceplan[hack2asp]...
Creating hl7ingest Function App [hl7ingest21194]...
Application Insights "hl7ingest21194" was created for this Function App. You can visit https://portal.azure.com/#resource/subscriptions/7xxxx/resourceGroups/fhirhacknero2/providers/microsoft.insights/components/hl7ingest21194/overview to view your Application Insights component
Retrieving Function App Host Key...
Configuring hl7ingest Function App [hl7ingest21194]...
Deploying hl7ingest Function App from source repo to [hl7ingest21194.azurewebsites.net]...
Setting SCM_DO_BUILD_DURING_DEPLOYMENT to false
Waiting SCM site to be updated with the latest app settings
The command failed with an unexpected error. Here is the traceback:

HTTPSConnectionPool(host='hl7ingest21194.scm.azurewebsites.net', port=443): Read timed out. (read timeout=3)
Traceback (most recent call last):
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-zmnkj_hi\urllib3\urllib3\connectionpool.py", line 384, in _make_request
  File "<string>", line 2, in raise_from
  File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-zmnkj_hi\urllib3\urllib3\connectionpool.py", line 380, in _make_request
  File "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\li

Resolution Updating SKU to "B3" in deployhl7ingest.bash declare serviceplansku="B3" works

[challenge 4] - data export from Iot Central

current instructions ask to use Iot Central Data Export (Legacy), we have tested it with newer version of Data Export and it worked with following changes:

  • setup Data Export
    Add destinattion pointing to IotConnector EventHubs Connection String and export Telemetry:

image

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "IotCentralJsonPathContent",
            "template": {
                "typeName": "heartrate",
                "typeMatchExpression": "$..[?(@telemetry.HeartRate)]",
                "values": [
                    {
                        "required": "true",
                        "valueExpression": "$.telemetry.HeartRate",
                        "valueName": "hr"
                    }
                ]
            }
        }
    ]
}

Hack 1 documentation suggestions

Postman section indicates that you should 'Import Collection' and 'Import environment'. for non-postman user this would lead me down the path of clicking import, choosing the JSON file. Postman returns not recognized format. Should specify - Click import, select Raw Text tab, and past the contents of the Collection and Enviroment files.

Also it says import collection 2x.

Env Variables in postman

Doc States: mport Environment. An environment is a set of variables pre-created that will be used in requests. Click on Manage Environments (a slider on the top right). Click on the environment you imported. Enter these values for Initial Value:

I added to initial value, but nothing worked until i added to current value. Not sure how to 'set' current value. should document

[challenge 3] - Logic App settings

in Task 2: After running ./deployFHIRExportwithAnonymization.ps1 with all required updates in parameters.json
Logic App was failing as the tenantid populated is the for the primary tenant instead of secondary AD tenant:

image

  • also had to set manually in Keyvault clientappID and secret

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.