How to Build EMR + Lab Systems (OpenEMR + OpenELIS) for Hospitals in Developing Countries

How to Build EMR + Lab Systems (OpenEMR + OpenELIS) for Hospitals in Developing Countries

Free, open-source technologies can be used by hospitals with limited resources to handle patient and lab data. With scheduling, billing, reporting, and multilingual support, OpenEMR is a free online EMR and practice management system. Public health labs all across the world use OpenELIS Global, an open-source web-based LIS. Clinicians may order lab tests and examine findings in the patient record with ease when OpenEMR and OpenELIS are integrated, which enhances productivity, lowers transcription errors, and expedites the delivery of treatment.

Clinicians can electronically obtain test results and place direct test orders in the EMR. This reduces errors by doing away with manual order entering and faxing. Time is saved and treatment is improved when results are automatically entered into the patient’s chart. By guaranteeing accurate patient data, integration also increases efficiency and helps prevent refused claims.

System Requirements and Budget

Server hardware: Both OpenEMR and OpenELIS run on Linux servers. Minimal hardware can be very modest: even a VM with 256–512 MB RAM and ~10 GB disk can operate OpenEMR. For reliability in a mid-sized hospital, plan at least 8–16 GB RAM, multi-core CPU, ~1–2 TB disk, plus redundancy/UPS. Use a RAID or external backup drive for resilience. For networking, a basic managed switch and router/firewall are sufficient. For power outages, consider installing an Uninterruptible Power Supply.

OpenEMR/OpenELIS clients can run on simple PCs with dual-core CPU, ≥4GB RAM, 500GB drive, and modern browsers. Install the operating system and software locally so that systems can continue to function even when the internet is offline. Here’s an example budget table for a mid-sized hospital:

Item Specs Qty Unit Cost (USD) Total (USD)
Servers Intel Xeon, 8–16 GB RAM, 1–2 TB HDD (RAID) 2 ~$500 ~$1,000
UPS 1500 VA with surge protection 2 $150 $300
Network Managed Switch (24-port gigabit) 1 $100 $100
Firewall/router (gigabit WAN/LAN) 1 $75 $75
Cabling, rack, etc. Ethernet cables, rack-mount accessories ~$100
Workstations PC (dual-core, 4 GB RAM, 500 GB HDD) 10 $300 $3,000
Miscellaneous (e.g. barcode printer for labs, etc.) ~$200
Total Estimate ≈$4,775

All hardware can run Linux OS at no software cost. This basic setup illustrates that powerful IT infrastructure can be built cheaply with used or entry-level equipment.

Installation Prerequisites

Before installing the applications, prepare the environment:

  • Operating System: It is advised to use a stable Linux distribution, such as Ubuntu Server 22.04 LTS or a comparable version. SSH enables remote administration, and Linux is safe and free.
  • Web Server/DB: Install MariaDB/MySQL, PHP 7.4–8.x, and Apache for OpenEMR. PHP 7.4+ is supported by OpenEMR 7.x. For multilingual use, the UTF-8 encoding should be used when initializing the database.
  • Runtime: OpenELIS Global is a Java/Spring-based app. The documentation recommends a core-i5 CPU, ≥8 GB RAM, 1+ TB storage for server. Install Java, Docker and Docker Compose, and tools like Python 3. Alternatively, OpenELIS provides a downloadable installer for offline setups.
  • Network: A secure LAN is needed. Assign static IPs to servers and use wired connections for reliability. Optionally, set up DNS names. Ensure firewall rules allow HTTP/HTTPS and database connections within the LAN.
  • SSL/TLS: Generate a certificate and enable HTTPS to encrypt data in transit. This protects patient data.

Installing OpenEMR

  1. Download OpenEMR: Fetch the latest OpenEMR package from the official site. Unpack it into the web server’s document root.
  2. Set Permissions: Ensure the Apache user can read/write the code directory.
  3. Create Database: In MySQL/MariaDB, create an empty database and a database user with full rights to it.
  4. Run Installer: Navigate in a browser to https://<server>/openemr and follow the web-based installer. Enter DB credentials and set admin user. Once complete, log in to the admin area.
  5. Update & Modules: After installation, go to Administration → Globals. Confirm settings (time zone, defaults) and enable any modules needed. You can customize form templates and language. OpenEMR supports dozens of languages, so configure the UI to the local language if needed.
  6. Test: Create a dummy patient and make a test encounter to ensure the system works offline. Back up the final config files and database.

Read this installation guide on how to install OpenEMR on Windows, MacOS, and Linux:

Installing OpenELIS

  1. Prepare Server OS: Install Ubuntu Server. Install prerequisites: sudo apt install docker.io docker-compose git python3. Configure SSH for remote access.
  2. Choose Install Mode: If internet is slow, use the Downloaded Installer option: download the OpenELIS Docker images on another machine and copy them via USB. Otherwise, use the Docker Compose “online” method.
  3. Run Docker Compose: Clone the OpenELIS Docker repo and run docker-compose up -d. This deploys the database, application server, and the web UI. The docs show admin credentials for the first login.
  4. Complete Setup: Access the OpenELIS UI in a browser. Log in as admin and follow the setup wizard: enter lab details, configure test catalogs, and import any existing data if migrating. The Technical Requirements suggest defining an off-site backup and a UPS for the server.
  5. Data Entry and Users: Enter lab units and workflow configurations. Use the Role Management to create roles with appropriate permissionsdocs.openelisci.org. OpenELIS uses a CSV-based role config, but the UI also lets you assign users to roles and lab sections.
  6. Test: Record a sample accession and result in OpenELIS to confirm it works. Ensure clinic users can access the LIS web UI and Lab staff can log in.

Integrating OpenEMR and OpenELIS

Data flow: Orders and results can be exchanged via HL7 v2 or FHIR. OpenELIS Global includes HL7 and FHIR support for lab workflows. For example, a clinician in OpenEMR can enter a lab order; a HL7 message or FHIR ServiceRequest can be generated and sent to OpenELIS. When results are ready, OpenELIS can send a HL7 ORU or FHIR Observation back to OpenEMR.

Integration Options: In resource-limited settings, a lightweight approach is to use a local interface engine or scripts. Mirth Connect was popular but requires license for new versions. Instead, consider open-source alternatives like HAPI FHIR or custom Python scripts to translate messages. Another approach is the OpenHIE architecture: OpenELIS supports the FHIR Workflow Module for lab ordering. If a Middle Tier is available, one could deploy OpenHIM or ILConnector to broker messages.

Configuration: At minimum, set up matching identifiers between systems. Use a consistent code system if possible. In OpenELIS’s settings, configure an “External System” for OpenEMR; in OpenEMR’s interface, enable the HL7 Interface or API Client. Detailed mapping may be needed, so plan to customize config files or use the OpenELIS FHIR Message Examples as templates. Test the loop: place an order in OpenEMR and ensure it appears in OpenELIS, then enter results in OpenELIS and confirm they populate in OpenEMR’s lab section.

User Roles & Permissions

  • OpenEMR Roles: Out of the box, OpenEMR has ACL groups with configurable privileges. After install, go to Admin → ACL to adjust who can view or edit what. For example, clinicians get full chart access, while clerical staff get only scheduling/billing menus. You can also create custom ACL groups to fine-tune permissions.
  • OpenELIS Roles: OpenELIS uses a role-based model. Common roles: Lab Tech, Lab Manager, System Admin. In the Admin UI or config files, define roles and assign users. You can create hierarchical roles. Be careful: assign only necessary rights to protect patient data.

For both systems, ensure each user has a separate login, and use strong passwords. If possible, enable two-factor authentication and restrict access to the local network or VPN.

Backup and Security Best Practices

  • Regular Backups: Back up the database and application files daily. For OpenEMR, use built-in backup scripts or cron jobs to dump MySQL and archive the web directory. For OpenELIS, use its backup guide or snapshot the Docker volumes. Always copy backups off-site or to an external drive. As the OpenEMR wiki warns, “losing data should terrify you”. Keep multiple backup versions in case of corruption.
  • Updates: Keep both systems and the OS up to date. Apply security patches for Linux, Apache/MySQL, Java, PHP, OpenEMR, and OpenELIS as soon as feasible. Follow official upgrade guides. Subscribe to mailing lists or GitHub notifications for vulnerability alerts. Use official downloads and verify checksums.
  • Encryption: Use HTTPS for all web access. Encrypt database connections. If backups are sent over the internet or stored on portable drives, encrypt them. For highly sensitive deployments, encrypt full disks.
  • Access Control: Restrict server logins via SSH keys. Place the systems behind a firewall: allow only necessary ports. If remote access is needed, use a VPN or SSH tunnel rather than exposing the server directly to the Internet.
  • Monitoring: Use an open-source monitoring tool to watch system health. For example, Nagios Core is an industry-standard free monitoring solution that can alert you if a server goes down or disk is full. Zabbix is another powerful option. Monitoring ensures problems are caught early. Also check application logs regularly for errors or unauthorized access attempts.
  • User Training: Teach users to log out when away and report suspicious activity. Maintain an audit trail: enable OpenEMR’s audit log to track who viewed or changed records. This aids both security and accountability.

Hosting, Monitoring, and Maintenance Tools

In a low-resource environment, rely on free tools:

  • Operating Environment: Use Ubuntu Server or Debian on all machines. Consider a lightweight virtualization platform like Proxmox VE or simply Docker for containerized deployment. Containers can isolate systems and simplify backups.
  • Database Backup: Tools like Duplicity or Rsync can mirror backups to another machine or USB drive. For enterprise setups, Bacula or Amanda can schedule and catalog backups across multiple servers.
  • Monitoring & Alerts: Use Nagios Core or Zabbix to monitor CPU, disk, memory, and key services. Set up email or SMS alerts for critical events. These tools have web UIs and thousands of plugins, and run well on modest hardware.
  • Maintenance: For logging of technical tasks, use simple syslog or logrotate to manage log sizes. For updates, configure unattended security updates on Linux, or schedule manual monthly maintenance windows. Tools like Ansible can automate patching if staff are comfortable with it.
  • Documentation: Keep local copies of user manuals and training guides. For OpenEMR, download the PDF manual or take screenshots of key procedures. For OpenELIS, maintain printed or local versions of SOPs and user guides. Leverage online communities and forums for troubleshooting.

Addressing Common Challenges

  • Intermittent Internet: Both systems can run entirely offline on a LAN. No internet is required for day-to-day use. For updates or central coordination, plan occasional scheduled syncs. OpenELIS offers an offline installer mode where you pre-load Docker images. If internet is only sporadic, use it for data exchange; otherwise operate independently.
  • Limited Staff & Training: A lack of IT staff is common. Mitigate by training a few “super users” thoroughly. Organize hands-on sessions on basic computer use and system workflows. Emphasize that, unlike paper records, the digital system requires logging in/out and data backup.
  • Power Outages: Install a UPS for servers. If power is very unreliable, consider a local generator or solar backup for critical IT. Ensure all data is synced/saved before outages.
  • Data Security Concerns: In surveys, fear of data loss or breach can slow EMR adoption. Counter this by explaining security measures and by building trust. Show that electronic records improve care quality, and that the system is protected. Keep clinicians involved: demonstrate the software’s features so they feel confident using it.
  • Sustainability: Use only open-source components. Plan for system maintenance by having at least one staffer familiar with basic Linux commands. Document all custom configurations. If outside support is needed, note that many organizations provide OpenEMR/OpenELIS services at low cost or pro bono.

CapMinds OpenEMR–OpenELIS Integration & Deployment Service

CapMinds delivers end-to-end digital health implementation services for hospitals and public health systems operating in resource-constrained environments. 

We specialize in designing, deploying, and sustaining OpenEMR + OpenELIS ecosystems that are secure, scalable, and clinically usable from day one. 

Our service-led engagement model ensures hospitals move beyond installation to long-term operational success. CapMinds Services Include:

  • OpenEMR & OpenELIS installation, configuration, and hardening
  • HL7 v2 / FHIR-based integration for lab orders and results
  • Offline-first LAN-based hospital architectures
  • Role-based access control, audit logging, and security enforcement
  • Linux server setup, Docker deployment, and backup automation
  • Data migration, localization, and multilingual enablement
  • Ongoing monitoring, upgrades, and managed support
  • User training, SOP documentation, and go-live stabilization
  • Custom modules, reporting, and workflow optimization
  • Hosting, DevOps, compliance advisory and more

With CapMinds, hospitals gain a reliable technology partner, not just software, ensuring resilient digital health systems built for real-world conditions.

Contact Us 

Leave a Reply

Your email address will not be published. Required fields are marked *