GSoC 2020 - OpenMRS Should Support PostgreSQL - Final Presentation

aman
Sat, 29 Aug 2020 19:50:28 +0000
GSoC

Project Title : OpenMRS Should Run on PostgreSQL

Primary mentor: Daniel Kayiwa

Backup mentor: Juliet Wamalwa

Student: Aman Mishra

Project Wiki: https://wiki.openmrs.org/display/projects/GSoC+2020+%3A+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

Documentation Done: https://wiki.openmrs.org/display/docs/OpenMRS+Setup+On+PostgreSQL

Weekly Blogs

Community Bonding Period

Week 1

Week 2

Week 3

Week 4

Week 5

Week 6

Week 7

Week 8

Week 9

Week 10

Week 11

Week 12

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

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.

2 posts - 2 participants