GSoC 2020 - OpenMRS Should Support PostgreSQL - Final Presentation

Project Title : OpenMRS Should Run on PostgreSQL

Overview

Before work started on this project, OpenMRS only offered MySQL as its compatible database system. The main aim of this project was to extend the database support to PostgreSQL as well. This majorly involves extending the PostgreSQL support to OpenMRS Platform which forms the basis of all the different api’s and services used by different OpenMRS modules. Then subsequently extend this support to different Reference Application modules and ultimately to Reference Application itself. This is going to be a major feature to be released in the next iterations of both OpenMRS Platform as well as OpenMRS Reference Application.

Objectives

  • Add PostgreSQL support for OpenMRS Platform — Done
  • Add PostgreSQL support for OpenMRS Reference Application — Done
  • Create a CI build which breaks when liquibase changesets fail to run on PostgreSQL — Done

Contributions

OpenMRS-Core

  1. TRUNK-5751: https://github.com/openmrs/openmrs-core/pull/3220
  2. TRUNK-5752 : https://github.com/openmrs/openmrs-core/pull/3224
  3. TRUNK-5758 : https://github.com/openmrs/openmrs-core/pull/3235
  4. TRUNK-5794 : https://github.com/openmrs/openmrs-core/pull/3252
  5. TRUNK-5798 : https://github.com/openmrs/openmrs-core/pull/3272
  6. TRUNK-5800 : https://github.com/openmrs/openmrs-core/pull/3260
  7. TRUNK-5807 : https://github.com/openmrs/openmrs-core/pull/3318
  8. TRUNK-5823 : https://github.com/openmrs/openmrs-core/pull/3282
  9. TRUNK-5826 : https://github.com/openmrs/openmrs-core/pull/3288
  10. TRUNK-5831 : https://github.com/openmrs/openmrs-core/pull/3299
  11. TRUNK-5832 : https://github.com/openmrs/openmrs-core/pull/3296
  12. TRUNK-5843 :https://github.com/openmrs/openmrs-core/pull/3327
  13. TRUNK-5870 : https://github.com/openmrs/openmrs-core/pull/3372
  14. TRUNK-5887 : https://github.com/openmrs/openmrs-core/pull/3398
  15. TRUNK-5901 : https://github.com/openmrs/openmrs-core/pull/3426
  16. TRUNK-5917 : https://github.com/openmrs/openmrs-core/pull/3490
  17. TRUNK-5921 : https://github.com/openmrs/openmrs-core/pull/3498
  18. TRUNK-5927 : https://github.com/openmrs/openmrs-core/pull/3506

HTML Form Entry Module

  1. HTML-740 : https://github.com/openmrs/openmrs-module-htmlformentry/pull/190
  2. HTML-743 : https://github.com/openmrs/openmrs-module-htmlformentry/pull/193
  3. HTML-744 : https://github.com/openmrs/openmrs-module-htmlformentry/pull/194

Calculation Module

  1. CALC-56 : https://github.com/openmrs/openmrs-module-calculation/pull/8
  2. CALC-55 : https://github.com/openmrs/openmrs-module-calculation/pull/7

IDGen Module

  1. IDGEN-115 :https://github.com/openmrs/openmrs-module-idgen/pull/82
  2. IDGEN-116 : https://github.com/openmrs/openmrs-module-idgen/pull/83
  3. IDGEN-117 :https://github.com/openmrs/openmrs-module-idgen/pull/84
  4. IDGEN-118 :https://github.com/openmrs/openmrs-module-idgen/pull/85
  5. IDGEN-119 : https://github.com/openmrs/openmrs-module-idgen/pull/86
  6. IDGEN-120 : https://github.com/openmrs/openmrs-module-idgen/pull/87

App Framework Module

  1. AF-65 : https://github.com/openmrs/openmrs-module-appframework/pull/53

Provider Management Module

  1. PROV-104 :https://github.com/openmrs/openmrs-module-providermanagement/pull/41
  2. PROV-105 : https://github.com/openmrs/openmrs-module-providermanagement/pull/39
  3. PROV-106 : https://github.com/openmrs/openmrs-module-providermanagement/pull/40

Metadata Mapping Module

  1. MAP-40 :https://github.com/openmrs/openmrs-module-metadatamapping/pull/53
  2. MAP-41 :https://github.com/openmrs/openmrs-module-metadatamapping/pull/55

Metadata Sharing Module

  1. META-374 : https://github.com/openmrs/openmrs-module-metadatasharing/pull/57

Reporting Module

  1. REPORT-866 : https://github.com/openmrs/openmrs-module-reporting/commit/13352367050341bae9c1792221d1e43563041454
  2. REPORT-867 : https://github.com/openmrs/openmrs-module-reporting/pull/201
  3. REPORT-869 : https://github.com/openmrs/openmrs-module-reporting/pull/203

Reference Metadata Module

  1. RA-1799 : https://github.com/openmrs/openmrs-module-referencemetadata/pull/53

Reference Demodata Module

  1. RA-1797 : https://github.com/openmrs/openmrs-module-referencedemodata/pull/7

Appointment Scheduling Module

  1. AM-216 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/33
  2. AM-217 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/34
  3. AM-218 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/35
  4. AM-219 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/36
  5. AM-220 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/37
  6. AM-221 : https://github.com/openmrs/openmrs-module-appointmentscheduling/pull/38

Address Hierarchy Module

  1. ADDR-119 : https://github.com/openmrs/openmrs-module-addresshierarchy/pull/30
  2. ADDR-120 : https://github.com/openmrs/openmrs-module-addresshierarchy/pull/31

EMR Api Module

  1. EA-159 : https://github.com/openmrs/openmrs-module-emrapi/pull/187
  2. EA-160 : https://github.com/openmrs/openmrs-module-emrapi/pull/189
  3. EA-161 : https://github.com/openmrs/openmrs-module-emrapi/pull/190

Weekly Blogs

Resources

Talk Threads Initiated :

  1. https://talk.openmrs.org/t/gsoc-2020-openmrs-should-support-postgresql/28755
  2. https://talk.openmrs.org/t/sequence-error-on-creating-patient-in-postgresql/28127/3
  3. https://talk.openmrs.org/t/patient-management-in-postgresql/28228/7
  4. https://talk.openmrs.org/t/liquibase-issues-with-postgresql/28040

Final Project Demo Apologies for demo being a bit long but there was a lot to show :slightly_smiling_face:

Future Works

Comparing with how MySQL is deeply rooted into the OpenMRS systems, what can be done is :

  • Although, I have done one round of testing on PostgreSQL for both Reference Application as well as OpenMRS Platform to ensure that all the features are working same as they work on MySQL, still much more extensive testing can be done to test the different possible scenarios.
  • Add PostgreSQL support as a part of OpenMRS SDK. This will be of great help to developers that work on OpenMRS day and night for rapid development and testing.

Thoughts on GSoC 2020

This project is my very first contribution to an open source community. The whole process, starting from community bonding period to the entire coding period, has been a huge learning experience from me. The regular scrum meets, insightful discussion with mentors, helping others in community and many such things will always remind me how work can be made interesting. And as long as you hold a will to learn, its never an end. Numerous good habits came out of GSoC for me-being punctual, admitting when you are wrong, being meticulous in your work; are some of them. I would like to thank the entire OpenMRS community for providing me with this opportunity, my mentors Daniel Kayiwa and Juliet Wamalwa for believing in me through out the process and at last Google for making this program happen even in such harsh situations.

3 Likes

@aman congratulations for this far and I wish you the best in your career path! I was so blessed working with you and hopefully we shall see you more often in the community. Thanks to @dkayiwa, @ibacher and @mksd who labored to make the project more clear from the beginning.

1 Like