The EHR platform is a large application that is used and frequently distributed as a full web
stack installation. Installation and setup typically requires a technically savvy user to install all
the dependencies, ie: OS, mySQL server, web server, PHP, etc. While there have been both
prebuilt VM distributions as well as Windows XAMPP style bundles, these are not typically easy
to secure, resilient and scalable.
This project proposes to rework core structure of the EHR so that it can be deployed as a series
of containers using common container management standards, such as Kubernetes.
Containerization Key Areas of Focus
● Cleanly separate PHP/HTML/Javascript Application code from backend services
● Modify document storage to use server (file or database) outside of the application
container.
● Modify all configuration data to be stored outside of the application container
● Create containers and container deployment models
● Create Kubernetes, Puppet, Chef or similar management tools to allow easy creation,
scaling and deployment
● Document the model and deploy the EHR demo and test sites using the new model
This new model will allow the project to grow by taking advantage of current industry trends in
scaling and deployment. Other projects that support one-click installations of services could
then adopt the EHR and help spread the use more broadly to more users.
Budget and high level Plans
Using existing volunteer and vendor resources the funds can will allow a spike in development
to accomplish the above focus areas in the next 2-3 months.
Success will be demonstrated by the project’s ability to deploy a fully containerized version of
the EHR and subsequently take the lessons learned and apply them to the other Librehealth
project code bases.
These are the 2 items relevant to getting the grant finalized / funded. @r0bby
We need to finalize and confirm what our internal finance team refers to as a “Statement of Work” for your grant. In most cases, this will align almost completely with your proposal, but we may need to add some additional detail. We will be sending you a proposed Statement of Work for your approval shortly. Please be on the lookout for it, and respond ASAP once you or your team has reviewed & approved it. (Or with any suggested revisions.)
We will need to agree on a final budget and payment schedule. Our internal accounting team requires invoices to be sent to us before we can issue payment on the agreed payment plan times/amounts. To begin this process, please respond to this message ASAP, listing all “line items” and amounts for each type of activity to be collected across all invoices. An example would be “Development - $X; Server Infrastructure - $Y, Printing Costs - $Z”. We will then respond back with a suggested payment schedule for you to review.
Project Management - 40h (5h per week for 2 months)
Infrastructure Management and development
– Build your own (reference example) - 20h
– Use External/Service Partnership, Enterprise Level - $200/m estimated
General:
Choose a container Model (Docker) 1-2h
Choose a registry (Gitlab and/or Docker Hub) 2h
Make specific modifications to the projects as needed (see below) **
Add the container to the registry (automation strategy, Jenkins?, etc) 10h
Create Installation tools / instructions (where are the secrets managed?) - 20h
Choose / design an orchestration model-Kubernetes/OpenShift? Rancher? - 30h
Choose or design the Discovery model - 4 hrs
Develop a testing plan and recommendations for deployment models and OS - 4h
QA and Testing (All 3 Products) - 60hrs
Deploy EHR to at least two environments such as LibreHealth infrastructure, Google Cloud, etc
Deploy Toolkit to at least two environments such as LibreHealth infrastructure, Google Cloud, etc
Deploy RIS to at least two environments such as LibreHealth infrastructure, Google Cloud, etc
EHR Specific:
Identify the all the persistent data needs in the EHR - 10h
Identify the applications that are outside of the EHR that can also be used from containers (PHP, SQL, COUCHDB, etc) - 5h
Determine the disk storage models that will be supported (NAS/Local/Cloud, etc) - 10h
Modify the code to allow the persistant data to be external to the EHR application container -30h
Create a container(s) (tagged tarfile) for the EHR code, configuration, static-data -10h65
TOOLKIT specific:
Refine and improve current toolkit container (tony’s wild guess: 20h )
This will need testing as I have seen in the GCI that Windows Docker is a different animal . The students had problems with the install and we don’t need that as we try to build a customer base. IMHO
That will need to be documented for various BIOS’s or the requirement will need to be stated windows 10 home not supported, no telling how many will be lost with that.
There seems to be some confusion here, I do NOT see the container as the model to deploy self installed versions of the EHR. It’s for use in scalable hosted / enterprise installations, it’s not a good model for one-off deployment. We will still need a installation / setup method for XAMPP, local install from gitrepos, downloaded zips etc.
@r0bby, I need your best guesses on the time (man hrs) involved in the items listed above that are “Infrastructure” related. As well as any costs that might be involved to third party for the registry, orchestration etc.
I am going to ask here again :… when we were prioritizing projects me and @sunbiz thought the containerization would be for all 3 projects managed and directed by @tony
If this is not the case it’s fine but I would like a response … I posted it to chat too but I may have missed a response
Per the second post on the thread… Mike says “ASAP”. I talking tomorrow with Hadrian at Apifocal, who I have been working with on the cTakes and who I mentioned has a platform for this sort of thing and will help us with the project.
@judywawira it can be, but I know nothing about what has already been done for lh-tookit and RIS and apparently neither did Robby. So, jump in and help scope the effort and we will go for as much of it as we can manage!
That is the question I am asking. what is needed to bring the toolkit and RIS docker model up to speed? I can’t answer that I as I have no information. Need to get feed back on this from the toolkit team, so we can move forward.