Integrating third party patient portal with Open EMR



I am new to Open EMR, Recently I went through the flow of integration of third party patient portal “Z and H HealthCare” with Open EMR, I would like to integrate our own patient portal with Open EMR, As mentioned over here “” set of API for supporting fully functional offsite patient portal, Whether the API’s are available at this time or is still in development phase (OpenEMR API) ? or will be depending on FHIR API’s for this ?

Any help on this would be much appreciated. Thanks in advance.
Ajeesh Ravindran


Hi @ajeesh ,

OpenEMR is still very open to integration of patient portals and tools. Do you have specifics in mind?



Hello @brady.miller,

Thanks for your quick response.

Please find below our requirement and expectation we have based on the same.

By integrating OpenEMR with our patient portal, we are expecting an available REST/SOAP web service which can be used to access the patient information (CCDA different section Informations etc) from OpenEMR and sync with the Patient Portal respective patient account.

So the flow will be the patient should authorize with OpenEMR (via Oauth2 authorization protocol or other recommended authorization protocol available) before accessing their details to ensure HIPAA compliance. Sometimes a representative of patient also can access the data on behalf of the patient, who will be authorized from patient for accessing his/her details. If we keep the patient credentials on both OpenEMR and Patient Portal are same and always in sync between two systems in case of updates to the credentials (shared db table), the authorization we can made through patient credentials. And on successful authorization, a patient identifier will be returned for accessing the patient health information available on OpenEMR.

The API’s are in such a way that filtered with dates, so it would be good to fetch the data available within the time range. And should have a mandatory resource name to be passed as form parameter in which only particular section details they can fetch from OpenEMR.

Please let me know your feedback on this and corrections in case if the solution will not work out for all
use cases.

Ajeesh Ravindran


Hi @ajeesh ,
Sounds very reasonable. Is your group willing/planning to work on this?


Hello @brady.miller,

We have not yet started working on it, we are going through the existing OpenEMR features and trying to learn the possibilities of using with Third Party Patient portals with external API’s.

Could you please let me know your suggestions ?

Ajeesh Ravindran


Hi @ajeesh ,

I’d rec building an API within OpenEMR using FHIR standards(with best practice authentication). There has been some thought put into this here:

Note there is currently a node.js instance in OpenEMR to serve/parse CCDA(openemr/ccdaservice at master · openemr/openemr · GitHub). And could follow the same logic/mechanism to create a node.js instance to serve/parse FHIR. Although not actively working on this now, this is something that @sjpadgett has put some thought into.

The cool thing about this is that this patient portal centric FHIR would then not only allow standard third party patient portal connections, but also would be the starting point to support full interoperability.



@ajeesh @brady.miller The current external portal(myportal) is a web api that once authenticated(not Oauth) calls various functions of Care Coordination module and patient data via calls to Zend frameworks REST endpoints and OpenEMR ado. The calls are called with structured parameters in arrays and generally return a string of xml data which can then be parsed to populate any FHIR Resource needed(not currently supported). The soap controller is in place within the Care Coordination module. Also a public endpoint is available that can return a C-CDA built via ccdaservice.

The challenge presented with the external api’s are figuring out the required calling parameter structures (not documented), some of which I have done. Date ranges are very much supported throughout.

Hope this helps. -Jerry


Thanks for the details @sjpadgett, @brady.miller,

Let me go through the current implementation and the working flow of external api’s with supporting parameters and once through with the flow, will let you know in case if additional inputs needed.