Da Vinci is a private sector initiative that addresses the needs of the Value Based Care Community by leveraging the HL7 FHIR platform. HSPC has joined forced with the Da Vinci community to operationalize a sandbox environment demonstrating the use cases outlined on the HL7 DaVinci program page.
Onboarding New Services
The DaVinci Sandbox environment provides a fully automated continuous Deployment Pipeline for nearly any type of service to be deployed. Your backend and/or frontend project(s) will build and deploy automatically, though require some setup and wiring. As a developer:
- Join the GitHub team at https://github.com/hl7-davinci and put each project into a public repository. (F/OSS license is assumed.)
- Add a Dockerfile such that compilation may be done automatically without any specific knowledge. Note that all configuration must be injected at runtime per 12factor principles and Marketplace requirements. Don't worry about SSL or HTTPS.. we'll handle that. Please optimize your Dockerfile to install dependencies prior to copying in your app code. This dramatically reduces build and deployment times, and allows the dependency layer of your image build to be cached.
- Verify your service manually builds and run locally. E.g.
docker build -t hspc/davinci-something:latest .
docker run -it --rm --name something -p 8080:8080 -e KEY1=value1 -e KEY2=value2
- Create a Logica Health ID here and make sure you can log in to our Portainer environment by clicking "Login with OAuth".
- Let us know the following:
- your GitHub, Docker Hub, and Logica Health IDs.
- port you're exposing. (Should also be declared in your Dockerfile)
- reasonable max RAM value
- Optional: any configuration variable key/pairs that need to be set. Remember: Never "bake in" configuration – always inject it at runtime via environment variables!
- Optional: whether or not you need WebSockets support. (We assume "no")
- Optional: any persistence requirements or database needs. (We will assume everything is stateless and ephemeral.)
- Optional: horizontal scale requirements. (We will assume 1-2 instances)
Once we go through our checklist, below, the CD pipeline will automatically build and, when successful, deploy all changes pushed to your master branch. (This is configurable.) You'll be able to log in to https://portainer.logicahealth.org directly to view logs and update your configuration.
Manual Logica Setup Checklist
Once we're in contact, we have a number of manual configuration steps to setting up your project's CD pipeline.
- Sanity check your source code for obvious oddities.
- Create DNS CNAME entry for davinci-*.logicahealth.org
- Issue SSL certificate and autorenewal internally
- Configure reverse proxy balancer at davinci.logicahealth.org. (Don't forget WebSockets rules if requested by the developer.)
- Configure swarm service definition in https://portainer.logicahealth.org
- Configure build pipeline: https://cloud.docker.com/u/hspc/repository/list
- Update the below table of hosted services
- Manually test deployment trigger
- Send notification email