MMDM OpenEMR — Offline-First Clinical Platform
In Production · Field Deploy 2027Medical Missionaries of Divine Mercy · Houston → Costa Rica · 2024–Present
Self-hosted EMR built to run a six-station volunteer clinic in a Costa Rican parish hall with no internet, no cloud, and no public DNS. Migrated off a corrupted XAMPP environment to a hardened Ubuntu / Apache / MariaDB / PHP stack with a private certificate authority, daily backups, and bilingual Spanish/English clinical forms.
0
Clinical Stations
0
Intake Delay ↓
0
Users Trained
0
Internet Required
Problem
Corrupted Windows XAMPP stack with Aria storage engine failure. Paper forms across six clinical stations. No backups, no encryption, no recovery path. Mission-critical with zero connectivity guarantee.
Solution
Clean rebuild on Ubuntu 22.04 + Apache + MariaDB 10.6 + PHP 8.1. Private CA for offline TLS. UFW-hardened LAN posture. Daily cron backups with 30-day rotation. VirtualBox snapshot recovery.
Impact
Replaced 20+ years of paper workflow with structured clinical data. HIPAA-aligned posture. Recoverable from hardware failure. Designed for volunteers to redeploy at any mission site without a network engineer present.
System Architecture
Toggle between the EMR application stack and the field network it runs on.
Shipped
- ✓ Linux VM rebuild & XAMPP migration
- ✓ Private CA + hardened Apache TLS
- ✓ RBAC across 6 clinical stations
- ✓ Daily cron backups, 30-day rotation
- ✓ Implementation guide (canonical doc)
Roadmap → 2027 Field Deploy
- → Bilingual LBFs across all 6 stations
- → Custom dental tooth-chart widget (PHP)
- → Autorefractor CSV ingest pipeline
- → HL7 export for CR National Healthcare
- → Off-VM encrypted USB backup
Guiding Principles
Offline-first
No cloud, no public DNS, no assumed internet. The system must work in a Costa Rican parish hall with nothing but a power strip.
HIPAA-aligned posture
Even though Costa Rica patients aren't covered by HIPAA, the same controls protect everyone.
Structured data over free text
Every paper form field becomes a queryable database column so the mission can produce real statistics.
Recoverable
Snapshots, daily backups, and a documented rebuild path mean a single hardware failure doesn't end the mission.