Can I go multi-tenant with Platform & RefApp?

@ssmusoke you may want to edit this as you see fit: https://wiki.openmrs.org/display/projects/Merge+Patient+data+from+Multiple+Installations

Hi All, enjoyed the discussion. Is this multi-tenancy exist in openMrs or any support exist for multi-tanancy in openMrs? Thanks

Hi is there any update on multi-tenant support? Is there a suggested path for how to approach it?

Thanks!

@danialbet what do you think of this? Bahmni as Multi-Tenant SAAS solution - #3 by angshuonline

1 Like

@danialbet some more reading:

Multi tenancy is a fancy word that is often used, but at the end of the day, what is really intended by it?

When unexplained I read in it that people want certain provider(s) to own certain patient files. Meaning conversely that a patient file that doesnā€™t belong to a provider should be invisible to that provider.

That is one of many possible definitions for a multi tenancy functional specification. Is that what you want to achieve? And if not, what is your functional use case?

1 Like

Appreciate the reading. That was helpful. When Iā€™m referring to Multi-tenancy, a part of the definition is in fact certain provider(s) to own certain patient files. It is also having separate instances similar to the example in the reading where clinic1 would go to clinic1.openmrs.com and clinic2 would use clinic2.openmrs.com. Each would potentially have unique configurations wrt to logoā€™s/concepts/etcā€¦

Assuming youā€™d use O3, this is more or less already achievable.

Splitting data (and hence metadata such as concepts) based on business rules can be done, thatā€™s Data Filter. One massive thing out of the way! However a lot of business analysis to figure out the actual business rules, thereā€™s work there to be done.

Sticking to a specific URL when browsing can certainly be done with Nginx that would sit in front. Anyway deploying O3 with Nginx is the recommended approach. Basically you would ensure that if someone started browsing via clinic1.example.com then this URL would follow them all along their browsing experience, and they would be served what is mapped by Nginx into a subfolder for clinic #1.

Typically each subfolder would serve what is specific for a clinic:

  • The subfolder /clinic1 would serve the ESMs and frontend config for clinic #1.
  • The subfolder /clinic2 would serve the ESMs and frontend config for clinic #2.
  • ā€¦ etc.

Obviously you need to figure out an appropriate CD process, but thatā€™s totally doable and out of scope (itā€™s not an OpenMRS question).

Just brainstorming :wink: Thatā€™s how we would approach such requirement. Credits to @mksrom and @achachiez for some of the ideas shared above.

1 Like