OpenMRS vs GNU Health: when each one is the right choice
Choose OpenMRS when you need a patient-based medical record platform that your implementers will extend, and GNU Health when you need a hospital and public health information system with billing, laboratory, pharmacy and federation in one installation. OpenMRS is a Java platform released under the MPL 2.0, designed for resource-constrained environments, and most of its value comes from the implementer organizations that customize and deploy it. GNU Health HIS is a Tryton-based system licensed under the GPL v3 or later, covering hospital management, billing, stock and pharmacy, laboratory and imaging orders, and epidemiological reporting, with Thalamus linking nodes into regional or national networks.
Three factors usually settle the decision. The first is required scope: if the program needs finance, pharmacy and lab workflows out of the box, GNU Health covers more of that footprint, while OpenMRS asks you to assemble those pieces through modules and partners. The second is FHIR needs. OpenMRS offers the FHIR2 module, focused on FHIR R4 with translation support for R3, and SMART on FHIR through a separate module. The GNU Health FHIR REST server is documented as still in development and not fulfilling the FHIR specification, so confirm any interoperability requirement against the current documentation before you commit.
The third factor is in-house or partner capacity. OpenMRS rewards a team, or a partner, that can write and maintain Java modules on Tomcat or Jetty with MySQL, MariaDB or PostgreSQL. GNU Health rewards a team comfortable with PostgreSQL 15 or later, Python 3.10 or later and one installation method kept consistent, since its documentation warns against mixing methods. Ask any implementation partner for a written scope covering installation, data migration, backups and upgrades on each platform, and confirm which GNU Health release line and OpenMRS platform version they will support.
OpenMRS vs GNU Health fit by scenario
This table maps five common public health and clinical scenarios to the platform that tends to fit each one better and the condition that decides it. Read each row as a starting point, then confirm the named requirement with the vendor or in your own environment before choosing.
| Scenario (illustrative) | Better fit | Condition that makes it so |
|---|---|---|
| Single clinic needing a longitudinal patient record | OpenMRS | OpenMRS is a patient-based medical record platform built for resource-constrained settings, so a clinic that needs a per-patient longitudinal record with a Java-based platform and room for local customization points toward it. Confirm the modules your clinic needs in the O3 or 2.x distribution. |
| National program needing billing, lab and pharmacy in one system | GNU Health | GNU Health HIS covers billing, health center finances, stock and pharmacy, and a laboratory information system in one Tryton-based package. Confirm whether the national lab and billing rules match the packaged functions or need custom development. |
| Team of Java developers with an existing implementer | OpenMRS | OpenMRS core is written in Java, built with Maven and runs on Tomcat or Jetty, and it has an implementer ecosystem that customizes and deploys it. Confirm the implementer's track record with your target distribution before committing. |
| Ministry wanting regional or national federation | GNU Health | Thalamus, the GNU Health Federation message and authentication server, interconnects nodes into regional or national networks. Confirm how federation fits your data-sharing and governance model, since the platform's own features should be verified against your requirements. |
| FHIR-first integration program | Neither as a default | The GNU Health FHIR REST server is documented as still in development and not fulfilling the FHIR specification, while OpenMRS offers a FHIR2 module focused on FHIR R4. Confirm the exact FHIR resources, versions and SMART requirements with each vendor before choosing, or consider a dedicated FHIR server alongside either platform. |
How OpenMRS and GNU Health are built and deployed
Both platforms are self-hosted, but they ask different things of your team. OpenMRS is a Java application you assemble from a WAR file or Standalone package, while GNU Health is a Python and Tryton stack with several installation paths. The cards below cover the components, the install options and what each choice means for patching, backups and on-call staffing.
OpenMRS core stack
The OpenMRS core is written in Java, built with Maven, and runs on Tomcat or Jetty. It supports MySQL, MariaDB and PostgreSQL. Your team needs Java, servlet container and database skills in-house, and should confirm which database and container combination your implementing partner or the OpenMRS community supports for the version you plan to run. Ask who owns each layer of the stack after go-live.
O3 reference application containers
The O3 Docker Compose setup runs four services: a MariaDB database, the OpenMRS backend, an Nginx frontend serving the 3.x modules, and an Nginx gateway. An optional Certbot service handles SSL certificates. This makes O3 easier to stand up as a unit, but your team still owns container hosting, certificate renewal and the database behind it. Confirm whether the compose file is suitable for production or only for evaluation.
GNU Health HIS on Tryton
GNU Health HIS is built on the Tryton framework and needs PostgreSQL 15 or later, Python 3.10 or later, Gunicorn 23.0 and Tryton 7.0 on a GNU/Linux or BSD server. Your team needs Python and Tryton operations skills alongside database administration. Check that your staff can maintain a Python application server, not only the database, because that is where GNU Health differs most from a Java-based OpenMRS deployment.
Installation paths compared
OpenMRS offers a WAR file for Apache Tomcat with an existing MySQL database, a Standalone package with an embedded database, and an SDK for module development. GNU Health supports a vanilla installation with gnuhealth-control, Ansible installation since 4.4, operating system packages, a virtual machine image and an embedded Raspberry Pi edition. The GNU Health documentation warns against mixing installation methods, so choose one path and document it before you start.
Patching and version drift
With OpenMRS, a WAR or Tomcat deployment means patching the servlet container, Java runtime and OpenMRS modules as separate steps. With GNU Health, patching touches the Tryton modules, Python runtime, Gunicorn and PostgreSQL. Ask each vendor which release line receives fixes and how module compatibility is tested before you apply an upgrade. The GNU Health HIS 5.0 line and its patch releases are the current reference point for that discussion.
Backups and on-call staffing
Both platforms keep patient data in a relational database, so backup and restore is a database discipline first. Confirm how often each database is backed up, how restores are tested, and whether module files and uploaded attachments are covered. On-call rotations need someone who can restart a Tomcat service or a Gunicorn worker at night. Decide whether that person is an OpenMRS Java engineer, a Tryton or Python operator, or a shared platform team.
Capability by capability: OpenMRS vs GNU Health
This table compares OpenMRS and GNU Health across scope, interoperability, runtime, installation, clinical adjacencies and federation. Read each row as a question to put to both vendors and your own integration team. The main takeaway is that OpenMRS is a platform you extend with modules and implementer work, while GNU Health ships a broader hospital and public health suite with its own FHIR server still in development.
| Capability | OpenMRS | GNU Health |
|---|---|---|
| Core scope | Patient-based medical record platform for resource-constrained settings, extended through modules and implementer-built applications | Hospital management and health information system with EMR, laboratory, billing, pharmacy and epidemiological reporting in one suite |
| FHIR support | FHIR2 module provides a FHIR R4 REST API with translation support for R3; confirm which resources your workflows need | FHIR REST server is documented as still in development and not fulfilling the FHIR specification; do not plan on it for standards-based exchange |
| SMART on FHIR and identity | openmrs-module-smartonfhir supports the SMART App Launch Framework with FHIR2, using Keycloak as the default authorization server; OAuth2 Login module replaces basic authentication with an OAuth 2.0 provider | Identity and federation handled through Thalamus, the federation message and authentication server; confirm SMART App Launch support with the GNU Health team before relying on it |
| Language and runtime | Core written in Java, built with Maven, running on Tomcat or Jetty; the O3 frontend uses micro-frontend modules | Python-based on Tryton, served through Gunicorn; the stack requires Python 3.10 or later and Tryton 7.0 for the latest stable HMIS |
| Database support | Supports MySQL, MariaDB and PostgreSQL; the O3 Docker Compose setup uses MariaDB | Requires PostgreSQL 15 or later for the latest stable HMIS component |
| Installation methods | Standalone package with embedded database, SDK for module development, O3 container stack, or WAR file for Tomcat with an existing MySQL database | Vanilla install with gnuhealth-control, Ansible since 4.4, operating system packages, a virtual machine image and a Raspberry Pi edition; the docs warn against mixing methods |
| Medical imaging | Imaging is not part of core scope; confirm the DICOM and PACS integration path with your implementer | Imaging orders and DICOM worklists are in scope; version 5.0 added better integration with the Orthanc PACS server |
| Laboratory | Laboratory depends on modules or an external system; confirm the lab integration your site needs | Laboratory information system added in version 5.0, announced 30 June 2025 |
| Billing and pharmacy | Billing and pharmacy are not core features; confirm whether an implementer module or external system covers your revenue cycle | Health center finances, billing, stock and pharmacy are part of the documented feature set |
| Federation and networks | No built-in national network layer in the supplied facts; interoperability runs through FHIR APIs and integrations you build | Thalamus interconnects nodes into regional or national networks, a core design goal of the platform |
| License | MPL 2.0 with Healthcare Disclaimer, copyright OpenMRS Inc.; OpenMRS Inc. is a 501(c)(3) nonprofit | GPL v3 or later, copyright held by Luis Falcon and GNU Solidario |
| Public health footprint | Deployed by implementers in resource-constrained settings; ask for current deployment references in your region | Listed deployments include Spain, Argentina, Jamaica, India, Laos, Cameroon, Pakistan and Gambia; GNU Health is a Digital Public Goods Alliance digital public good |
How FHIR support and identity integration differ
If your integration plan depends on third-party apps reading and writing clinical data through a standard API, check resource coverage before anything else. OpenMRS offers the most documented path here: the FHIR2 module provides a FHIR REST API focused on FHIR R4, with translation support for R3, and the openmrs-module-smartonfhir module adds the SMART App Launch Framework on top of it. GNU Health takes a different position. Its FHIR REST server is documented with a warning that it is still in development and does not fulfill the FHIR specification, so it should not be the basis of a FHIR-first design today.
On identity, OpenMRS has a defined replacement for basic authentication. The OAuth2 Login module swaps in an OAuth 2.0 provider, creates users on the fly, maps names, email and roles from the token, supports JWT service accounts, and documents Keycloak and Google configurations. The smartonfhir module uses Keycloak as its default authorization server, so a Keycloak-based identity setup is the path with the fewest unknowns. GNU Health's identity story sits in Thalamus, the federation message and authentication server that interconnects nodes into regional or national networks. Thalamus is built for linking GNU Health installations, not for issuing tokens to outside clinical apps, so confirm its scope with the GNU Health project before assuming it covers your application login.
The decision condition is specific: if you need SMART-launched apps or third-party FHIR clients against a defined resource list, verify each required resource, search parameter and SMART scope against the module documentation and a test instance in your own environment before you commit. Ask the GNU Health project whether the FHIR server roadmap covers your resources and whether Thalamus can serve as an identity provider for non-GNU Health applications. Whichever platform you choose, the identity provider, role mapping and token lifetimes are configuration you own, and DeployOpen can plan and document that work, but the mapping has to match your own access model.
OpenMRS vs GNU Health licensing and editions
OpenMRS is released under the Mozilla Public License 2.0 (MPL 2.0) and carries a Healthcare Disclaimer, with copyright held by OpenMRS Inc. OpenMRS Inc. is a 501(c)(3) nonprofit that provides the fiscal and legal foundation and infrastructure for the project. The code itself is maintained by a volunteer community alongside implementer organizations that customize and deploy it, so there is no single vendor selling a licensed edition.
- File-level copyleft: MPL 2.0 requires that changes to MPL-covered source files be shared when you distribute them. Your own modules and configuration can usually stay separate, so review how your custom code is packaged with counsel.
- No paid edition in the supplied facts: Neither the platform nor the O3 reference application is sold in a commercial tier, so licensing cost is zero and the spend goes to services.
- Paid services come from third parties: Implementation, hosting, support and training are bought from implementer organizations or consultancies, each quoted on its own scope.
- Governance through the nonprofit: The 501(c)(3) structure supports the project's legal and financial base, which matters when you assess long-term continuity.
- Healthcare Disclaimer: The license notice states that the software is not a certified medical device or complete compliance solution, so your own validation and compliance work remains yours.
Before you commit, ask the implementer which support tiers, response commitments and upgrade services they offer, and confirm in writing what the OpenMRS Inc. nonprofit does and does not provide to your deployment.
GNU Health is licensed under the GNU General Public License version 3 or later (GPL v3 or later), with copyright held by Luis Falcon and GNU Solidario. The GNU Health website lists it as a GNU official package and a Digital Public Goods Alliance digital public good. The project is a free software health information system, so the license governs how you may modify and redistribute it, and no commercial edition is described in the supplied facts.
- Strong copyleft: GPL v3 or later requires that distributed modifications be released under the same terms. If you run a modified build for internal use only, the obligation to publish source generally does not arise, but confirm the position for your deployment model.
- Copyright concentration: Copyright sits with the founder and a foundation-style organization, which is a different governance pattern from a nonprofit that fiscally supports a broad community.
- No paid edition in the supplied facts: The product is free to use, so your spend is on installation, customization, hosting, training and support from providers.
- Third-party services: Deployment support is available from providers who work with the software, and you should compare their scopes in writing rather than assume a single source.
- Public-sector recognition: The Digital Public Goods Alliance listing may matter to ministries that procure digital public goods, but check whether your procurement rules require it.
Before you commit, ask each provider which GNU Health versions they support, who holds responsibility for upgrades and patches, and whether they will sign a support agreement covering your installation method.
Community, governance and release cadence
OpenMRS is governed as a shared project. OpenMRS Inc. is a 501(c)(3) nonprofit that provides the fiscal and legal foundation and infrastructure, while a volunteer community and implementer organizations customize and deploy the software. The current releases are the O3 Reference Application 3.7.1, released July 13, 2026, and the OpenMRS Platform 2.8.1, released October 7, 2025. GNU Health is governed differently. It is a GNU official package and a Digital Public Goods Alliance digital public good, with copyright held by Luis Falcon and GNU Solidario. Its HIS 5.0 was announced on 30 June 2025, and the latest patch release is 5.0.7, published on 11 April 2026.
The governance difference matters most in a funding gap. With OpenMRS, the foundation holds the legal and fiscal base, but a large share of implementation capacity sits with implementer organizations that are paid by individual client programs. If one funder withdraws, the code remains under MPL 2.0 and the implementers you already work with may carry the work forward. With GNU Health, continuity depends more heavily on a smaller core group and on the deployments listed on its website. Ask both sides how maintenance would continue if the lead funder stopped, which organizations hold release and signing keys, and what happens to the documentation if a maintainer leaves.
Release cadence should be checked against your own change plan, not treated as a promise. Compare the dates of recent releases on the OpenMRS download page and the GNU Health changelog with the upgrade windows your hospital or ministry can accept. Then check the implementer market in your region. Ask which firms have deployed each platform in your country, how many staff they can assign, and whether they support the version you intend to run. If you cannot find local implementers for one platform, that gap is a risk to plan for before you commit.
What drives the running cost of each platform
Both OpenMRS and GNU Health are free to download and run under their licenses, so the running cost sits in hosting, administration, customization, training and upgrades. The cards below separate those components so you can ask an implementation partner for a quote that maps to each one.
Software licensing
OpenMRS is released under the MPL 2.0 and GNU Health under the GPL v3 or later, so neither platform charges a license fee for the core software. Cost arrives through services, not licenses. Check whether any module you need carries different terms, and confirm with each project which components you are depending on. Ask a partner to state in writing which parts of the quote are software (none) and which are labor.
Hosting and infrastructure
Hosting cost depends on how many services you run and where. The OpenMRS O3 Docker Compose setup runs four services, including MariaDB, the backend and two Nginx containers, with an optional Certbot service. GNU Health expects a GNU/Linux or BSD server with PostgreSQL, Python and Gunicorn. Ask the partner to price the servers, backups, TLS certificates and the network paths to any Orthanc or lab systems in your own cloud account or data center.
Database and server administration skills
OpenMRS runs on MySQL, MariaDB or PostgreSQL under Tomcat or Jetty, while GNU Health relies on PostgreSQL and a Tryton-based application stack. Each platform needs staff who can tune databases, manage Java or Python services and rotate credentials. Ask the partner which skills are covered in scope, which must be hired, and what on-call support window applies after go-live.
Implementation and customization
Most of the one-time cost goes to configuring forms, workflows, concepts and integrations. OpenMRS adds modules and, for O3, migrates legacy HTML forms to the newer form schema. GNU Health ships packages for billing, laboratory and imaging that need local configuration. Request a written scope that names each module, each interface, each form migration and each acceptance test, with a clear list of what is excluded.
Training and change management
Staff time is often the largest hidden cost. Clinicians, registration clerks, pharmacists and finance users each need training on the workflows that touch their daily work, and the change must be planned around live clinics. Ask for training materials, the number of sessions, the languages delivered and a plan for refresher training after the first months of use.
Upgrades, patching and support windows
Recurring cost comes from applying security patches, moving to new releases and testing modules after each upgrade. OpenMRS publishes separate 3.x and 2.x lines, and GNU Health issues patch releases within each major version. Ask the partner for the upgrade path, the test environment that will be maintained, the support windows for each release line, and whether upgrades are priced per cycle or under a retainer.
What implementing each platform involves and where projects run long
An OpenMRS project starts with a packaging decision. The platform ships as a Standalone package with an embedded database, a WAR file for Apache Tomcat against an existing MySQL database, or the O3 Reference Application container stack, and the choice shapes everything after it. Teams then configure concepts and forms, select modules such as FHIR2 or the OAuth2 Login module if they need external identity, and decide whether to build on the 2.x platform or the O3 frontend. Existing implementations with legacy HTML forms can use the tool Palladium Kenya built to migrate those forms to the O3 form schema, but the migrated forms still need clinical review. Confirm with your implementer which packaging and module set they will support before the scope is written.
A GNU Health project starts with the installation method. The HMIS documentation lists a vanilla installation with gnuhealth-control, Ansible installation, operating system packages, a virtual machine image and a Raspberry Pi edition, and warns against mixing them. Pick one before the first build and record it, because switching later means rebuilding the environment. The work then moves to configuring billing, health center finances, stock and pharmacy, laboratory orders and the Orthanc PACS integration that GNU Health 5.0 refactored. Federation through Thalamus is a planning question for regional or national networks, and the FHIR REST server is documented as still in development, so any interoperability requirement needs a written test before it is promised.
Projects run long in four predictable places: data migration, locale and workflow configuration, interface work and staff training. Migration from legacy records is usually the largest unknown, and it is where both platforms need a data steward who can map codes and reconcile duplicates. Locale and workflow configuration (language, units, referral paths, billing rules) tends to expand once clinicians see the first build. Interfaces to laboratory, imaging and national reporting systems take longer than the platform setup itself. Staff training has to cover the workflows actually configured, not the vendor's demonstration. Ask any implementer to show these four items as separate line items in the written scope. Your side needs clinical and administrative owners who sign off workflows, a database administrator for PostgreSQL or MySQL operations and backups, and a named owner for upgrades who tracks releases and tests them before production.
Moving from one platform to the other
This sequence moves clinical data and workflows from one platform to the other without losing patient identity or history, and ends with a verified cutover and a retired source system. Each step produces a written artifact that clinical and technical owners sign off before the next step begins.
Inventory the data model and patient identifiers
Your data engineers and clinical informaticists list every table, form, concept, encounter type, observation and identifier type in the source system, along with the number of records and the systems that read from it. Patient identifier schemes need particular attention, because each platform assigns and validates identifiers differently and duplicates often surface here. The output is a data inventory with a named owner for each domain. You know this step is done when clinical leads confirm that nothing in daily use is missing from the list.
Decide what history moves and what gets archived
Clinical leadership, compliance staff and the records owner agree which patient history must be available in the target platform on day one, which can be read from a frozen archive, and which can be retired under your retention policy. This decision drives the volume of migration work more than any other choice. The output is a signed retention and history scope document. You know this step is done when the scope names each data category and the access rule that applies to archived data.
Map concepts and fields between the two systems
Informaticists build a crosswalk from each source concept, form field and coded value to its target equivalent, flagging every item with no direct match. Because the two platforms model concepts differently, expect many one-to-many and many-to-one mappings that need clinical review rather than automated translation. Confirm specific mappings for terminology, forms and coded concepts with GNU Health and the OpenMRS community before you scope the work, since neither platform's documentation can settle every case for your data. The output is a versioned mapping specification. You know this step is done when every unmatched item has a documented decision.
Rebuild workflows, forms and reports in the target
Your implementers rebuild the workflows that clinical staff rely on, such as registration, encounter capture, laboratory orders, billing and reporting, using the target platform's native features. Modules such as billing, laboratory and imaging differ in depth between the two platforms, so some workflows will need custom development or a process change. Document each rebuilt workflow against the original and record any function that is dropped. The output is a workflow gap register with an approved decision for every gap. You know this step is done when each clinical team has walked through its workflows in a test environment.
Load test data and run migration rehearsals
Engineers run the extraction, transformation and load scripts against a copy of the source data, repeating the run until the results match the mapping specification. Each rehearsal produces reconciliation counts for patients, encounters, observations and identifiers, which are compared against the source. Record every failed row and its cause so the same defect does not return in later runs. The output is a rehearsal log showing that the final run reconciles. You know this step is done when two consecutive rehearsals produce identical reconciled results.
Validate migrated data with clinical staff
Clinical staff review a representative sample of migrated records against the source system, focusing on patient identity, allergies, active medications, lab results and encounter notes. Testers also check that reports and billing outputs match the figures from the source for the same period. Defects go into a tracked list with severity, owner and resolution. The output is a signed validation report from the clinical lead. You know this step is done when no open defect affects patient safety or identity matching.
Run parallel operation before cutover
Staff enter live data into the target platform while the source system remains available for reference and for any function not yet rebuilt. Reconciliation runs at set intervals to catch divergence between the two records, and a named person decides how conflicts are resolved. Use this period to train users and to test the support model. The output is a parallel-run log with reconciliation results and a list of open differences. You know this step is done when the open differences are all explained and accepted by the clinical lead.
Cut over and retire the source system
The go-live plan freezes writes to the source, runs the final incremental load, validates it, and switches users to the target platform under a documented rollback plan. After the target is stable, the source is set to read-only, its archive is secured under the retention scope, and access credentials are removed. The output is a cutover record and a decommissioning certificate signed by the system owner. You know this step is done when the source is read-only, the archive is verified, and the access review is complete.
OpenMRS vs GNU Health questions buyers ask about cost and effort
How much does it cost to run OpenMRS compared with GNU Health?
Both platforms are free to download under open-source licenses, so the cost sits in the work around them: hosting, database administration, customization, testing, upgrades and support. OpenMRS is licensed under the MPL 2.0 and GNU Health under the GPL v3 or later, so neither license carries a per-user fee. Recurring costs come from the infrastructure you run in your own cloud, data center or air-gapped network, the staff or partner time to keep modules and the Tomcat or Jetty stack current, and any retainer for ongoing support. GNU Health's current stack pins specific versions of PostgreSQL, Python, Gunicorn and Tryton, so upgrades touch more components. Ask any vendor or partner for a written quote that separates one-time setup from recurring operations, and ask which of those items it covers.
How long does an OpenMRS or GNU Health implementation take?
No fixed duration applies to either platform, because timelines depend on scope: the number of clinical workflows, the modules or packages you enable, data migration from existing systems, interfaces to labs and imaging, and the number of sites. A single clinic with a standard configuration can be far simpler than a national rollout. Confirm the timeline with each candidate in writing, and ask which milestones depend on your staff, such as decisions on forms, roles and reporting. DeployOpen typically works under a fixed scope agreed in writing before work starts, so the schedule follows from that document rather than from a generic estimate.
Can our own staff run OpenMRS or GNU Health without outside help?
Yes, if you have the skills for the stack you choose. OpenMRS core is Java built with Maven and runs on Tomcat or Jetty with MySQL, MariaDB or PostgreSQL, so you need Java operations, database administration and familiarity with module configuration. The O3 reference application adds a Docker Compose stack with MariaDB, the backend and Nginx services. GNU Health HIS needs a GNU/Linux or BSD server, PostgreSQL, Python, Gunicorn and Tryton administration, plus the discipline to use one installation method, since its documentation warns against mixing them. Match these skills against your team before deciding, and count who will cover on-call and upgrades.
When do we need an implementation partner for an open-source health platform?
You likely need a partner when the work exceeds your in-house capacity or skills. Common triggers include a multi-site rollout, custom clinical forms, interfaces to laboratory or imaging systems, security hardening and a documented compliance evidence package, or a migration from a legacy system. A partner can also take on backups, upgrades and documentation under a retainer. DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. It does not issue audit reports or certifications, which independent bodies provide. Decide early which parts your staff keep, so the written scope is clear.
Which platform needs more customization, OpenMRS modules or GNU Health packages?
It depends on where your customization sits. OpenMRS is built as a platform with a module ecosystem: the FHIR2 module, the SMART-on-FHIR module, the OAuth2 Login module and the O3 micro-frontend work through modules and implementer-built components, so customization often means choosing, configuring and maintaining modules. GNU Health ships a broad set of packages covering primary care, obstetrics, pediatrics, surgery, laboratory and imaging, which can reduce customization if your workflows match them, but changes to those packages mean working within the Tryton framework. Check the module list for each platform against your required workflows, and ask who will maintain any custom code after handover.
Does the GNU Health FHIR server meet our interoperability needs?
Not as a production dependency today, based on its own documentation. The GNU Health HIS FHIR REST server is documented as still in development and as not fulfilling the FHIR specification. If your integrations require a standards-conformant FHIR API, plan for a separate FHIR layer or confirm the current status with the GNU Health project before committing. For OpenMRS, the FHIR2 module provides a FHIR REST API focused on FHIR R4 with translation support for R3, and the SMART-on-FHIR module supports the SMART App Launch Framework. Test any interface against the specific resources your partners need, using a non-production environment.
Can we switch from one platform to the other later, and what would it cost?
A switch is possible but rarely cheap, because the data model, user roles, forms, interfaces and staff workflows differ between the two systems. Cost drivers include exporting and mapping patient records, rebuilding clinical forms and reports, retraining users, and running both systems in parallel during cutover. Keeping integrations on standards such as FHIR where available reduces the work, though GNU Health's FHIR server is documented as in development. The switching section of this page sets out the trade-offs in more detail. Ask any partner to estimate migration work from a data sample in writing, rather than from a general figure.
What should we ask a partner to include in a quote?
Ask for a written scope that lists workflows, sites, interfaces, data migration, testing and training, with each item tied to a deliverable. The quote should also state the support windows, the upgrade path for the platform version and any modules or packages, how backups and restore tests are handled, and who holds administrator access. Request a clear split between one-time implementation and recurring retainer items, the acceptance criteria for each milestone and the handover documentation. DeployOpen does not publish a price list, and a quote follows from the agreed written scope, so compare proposals on the same scope rather than on headline totals.
How DeployOpen helps teams choose and implement either platform
DeployOpen is a Chainscore Labs company that plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside the client's own infrastructure. For OpenMRS vs GNU Health, we work from the written scope to whichever platform fits the clinical workflows, data standards and hosting constraints your team has agreed on.
How we scope
- Written scope sets which clinical workflows, facilities and user groups the OpenMRS or GNU Health deployment must cover.
- We document FHIR, identity and interoperability requirements before choosing which platform and modules to implement.
- Engagements are fixed-scope, with deliverables and timelines agreed in writing before any work starts.
How we build
- We install and configure the chosen platform in your cloud accounts, data centers or air-gapped network.
- Customization covers the modules, forms, billing or lab integrations your scope names, with each change recorded.
- We run security testing against the deployed application and its APIs before go-live, and report findings in writing.
How we hand over
- Handover documents the installation method, database setup, backup routines and upgrade steps for your own staff.
- Compliance readiness evidence, such as configuration records and access controls, is organized for your assessors.
- We confirm with you which open items remain and who owns each one after the engagement closes.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Retainers can cover platform upgrades, so your team can plan version moves against the current release notes.
- Ask for a quote built from the written scope, which sets the components, hours and deliverables covered.

