This is a customized version of the original Documentation Requirements Lookup Service (DRLS) that deploys all applications as microservices on GKE. For the original instructions and in-depth explanations, refer to DaVinci GitHub page
Additionally, you must have credentials (api key) access to the Value Set Authority Center (VSAC). These credentials are required for allowing DRLS to pull down updates to value sets that are housed in VSAC. If you don't already have VSAC credentials, you should create them using UMLS.
Each deployed Prior-Auth Solution consumes following resources:
- GKE Autopilot cluster:
- 6 deployed services/workloads
- 6 GKE Ingress objects setup with NEG (Container native LB*)
- 6 GCE_VM_IP_PORT NEGs (zonal NEGs)
- GCP Cloud Storage
- Network Premium Tier:
- 1 VPC Network
- 6 Global external HTTP(S) Load Balancers (classic)
- 12 URL maps (HTTP+HTTPS for each service)
- 6 Reserved static IP addresses (used for the EndPoints to provide domain name)
- 6 Google managed SSL Global Certificates
- 6 Global Target HTTP proxies; 6 Global Target HTTPS(s) proxies
*Container-native load balancing enables load balancers to target Pods directly and to make load distribution decisions at the Pod-level instead of at the VM-level.
- Create new project on GCP
- Set env variable for PROJECT_ID:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
- Set VSAC key:
At this point, you should have credentials to access VSAC. If not, please refer to Prerequisites for how to create these credentials and return here after you have confirmed you can access VSAC. To download the full ValueSets, your VSAC account will need to be added to the CMS-DRLS author group on https://vsac.nlm.nih.gov/. You will need to request membership access from an admin. If this is not configured, you will get
org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found
errors.
Use your vsac_api_key to set VSAC credentials (otherwise the flow will not work):
export VSAC_API_KEY=<YOUR_VSAC_API_KEY>
- Run init step to provision required resources in GCP (will run terraform apply with auto-approve):
bash -e ./init.sh
This command will take ~15 minutes to complete. After successfully execution, you should see line like this at the end:
<...> Completed! Saved Log into /<...>/init.log
- Build/deploy microservices (using skaffold + kustomize):
bash -e ./deploy.sh
This command will take ~45 minutes to complete (due to build time and time required to deploy an end point).
It might take up to 30 minutes for managed certificates to get provisioned, before system becomes functional. You could check the status by running following command:
kubectl get managedcertificates
Sample Output:
NAME AGE STATUS
auth-service-certificate 43m Provisioning
crd-request-generator-service-certificate 28m Active
crd-service-certificate 40m Provisioning
dtr-service-certificate 37m Provisioning
prior-auth-service-certificate 34m Active
test-ehr-service-certificate 31m Active
When All are in Active
Status, system is ready to be used.
- Get the emr deploy address:
gcloud endpoints services list --filter="TITLE=( crd-request-generator-service )" --format "list(NAME)"
- Go to the address retrieved above in the web browser.
- Click Patient Select button in upper left.
- Find William Oster in the list of patients and click the dropdown menu next to his name.
- Select E0470 in the dropdown menu.
- Click anywhere in the row for William Oster.
- Click Submit at the bottom of the page.
- After several seconds you should receive a response in the form of two CDS cards:
- Respiratory Assist Device
- Positive Airway Pressure Device
- Select Order Form on one of those CDS cards.
- If you are asked for login credentials, use alice for username and alice for password.
- A webpage should open in a new tab, and after a few seconds, a questionnaire should appear.
Congratulations! DRLS is fully installed and ready for you to use!