Bahmni EHR Implementation Brief Foundational Phase (Phase 0) & Phase 1
1. Introduction & Context
This document defines the detailed scope, expectations, and deliverables for the Foundational Phase (Phase 0) and Phase 1 of the Bahmni EHR implementation for Mylife Medical Center. The goal is to enable a stable, secure, and usable Viable EHR environment focused on mylysis operations, while keeping the work within a manageable cost and phased roadmap.
Important: This system will initially function as a test/staging system for configuration, validation, and user training. Production clinical use will follow after Phase 1 has been tested and stabilized.
2. Objectives for Phase 0 and Phase 1
The primary objectives are:
· Provide a stable Bahmni environment using the existing Docker-based installation on the self-hosted server.
· Configure foundational elements (domain, HTTPS, users, identifiers, backups, logging) so the system is secure and ready for clinical configuration.
· Deliver a Viable Mylysis EHR that supports patient registration, clinical evaluation, nephrology assessment, mylysis session documentation, session reporting, patient photo capture, minimal appointment listing, and basic printing/branding.
· Implement a OneDrive-based backup strategy plus local pre-configuration backups so that all changes are reversible.
3. Environment Overview
Server / Infrastructure:
· Self-hosted Dell OptiPlex server running Ubuntu Server 24.04 LTS.
· Bahmni Standard deployed via Docker (existing installation to be kept as-is).
· Access via AnyDesk for the developer, with sudo-level privileges available.
· Clinic staff will access Bahmni locally and remotely via a domain.
Domain / DNS:
· Primary domain: mylifemedical.com (registered via Namecheap).
· Bahmni subdomain for staff access: app.mylifemedical.com.
Certificates / Security:
· HTTPS to be configured using Let’s Encrypt (free SSL).
· Role-based access control will be used, with least-privilege principles.
Backup / Off-site Storage:
· Primary off-site backup target for Phase 1: Microsoft OneDrive (Advice if personal account can be used. If not, a dedicated account to be set up by Mylife).
· Local pre-configuration backups must be created before any configuration work.
4. Phase 0 – Foundational Setup (Environment & Access)
Phase 0 focuses on preparing the environment so that Phase 1 clinical configuration can be done safely and efficiently. It uses the existing Bahmni Docker installation and does not involve major application changes.
4.1 Phase 0 Scope of Work
1. Validate existing Bahmni Docker installation
Review the current Docker-based Bahmni environment to confirm that all containers, services, and basic login functions are working. No re-installation is expected; the installation should be kept as-is unless a major issue is discovered and discussed with Fredrick.
2. Pre-Configuration Backup (Snapshot)
Before any configuration or metadata changes, create a pre-configuration backup of the full Bahmni environment. This snapshot must allow a complete rollback to the current state if needed.
The pre-configuration backup must include at minimum:
· All Bahmni Docker volumes (OpenMRS data, configs, patient documents, and any active DBs).
· A database dump of the OpenMRS database (and any other active Bahmni DBs).
· A copy of the bahmni-docker directory and Docker compose files.
· Copies of any Nginx/SSL/domain configuration files (if already present).
Storage locations for the pre-configuration backup:
· Local server folder (for example: /var/backups/bahmni/preconfig/).
· External drive (provided by Mylife) for an offline copy.
· Cloud backup to OneDrive once the OneDrive account is configured.
3. Domain & DNS Setup
Configure the subdomain app.mylifemedical.com to point to the Bahmni server’s public IP. Update Namecheap DNS records accordingly and ensure the domain resolves correctly from both local and external networks.
4. HTTPS (SSL) Configuration
Set up HTTPS for app.mylifemedical.com using Let’s Encrypt. Configure the reverse proxy (for example Nginx) so that all access to Bahmni is via HTTPS only. Validate that the certificate auto-renewal is configured.
5. Basic Access, verify reverse proxy and Firewall Review
Review firewall and network access to ensure only necessary ports are exposed. Confirm that staff will access Bahmni via the domain (internally and externally), and that remote administrative access via AnyDesk and/or SSH remains functional.
6. User & Role Baseline
Review existing user accounts and roles. Ensure that an administrator account is clearly designated for Fredrick Karanja & Sarah Tumuti, and that Khurram has a suitable technical/admin account for configuration work. No detailed role-mapping is required yet; detailed clinical roles will be finalized in Phase 1.
Access control by role
· Mylysis technician: Record Mylysis data.
· Nurses: record mylysis sessions.
· Doctor: Complete Clinical Evaluations.
· Clinical Officers: complete Clinical Evaluations.
· Medical Officers: complete Clinical Evaluations.
· Consultant Nephrologists: complete Nephrology Assessments.
· Clinical Officer Nephrologist: complete Nephrology Assessments.
· Nutritionists/Dieticians: complete Nutrition Assessments.
· Admin/QA officer: has full access to all records and reports.
· Biomed technician
Each user (provider) has a full name, title (e.g., Nurse, Doctor, Medical Officer, Clinical Officer, Clinical Officer Nephrologist, Consultant Nephrologist, Nutritionist, etc.). Title auto-appears on all forms and printed reports.
Signature block: Completed by: [Clinician Name], [Title] Date / Time (auto-stamped)
4.2 Phase 0 Deliverables
· Validate Docker containers, volumes, and persistence.
· Create full pre-configuration backup (Docker volumes, DB dumps, config folders).
· Perform backup restore test to validate integrity.
· Configure DNS for app.mylifemedical.com.
· Install and configure Nginx reverse proxy.
· Enable Let’s Encrypt HTTPS + Certbot auto-renewal.
· Implement firewall rules and secure exposed ports.
· Configure Fail2Ban, security updates, and SSH hardening.
4.3 Phase 0 Acceptance Criteria
· Bahmni accessible via HTTPS with no certificate errors.
· Backup and restore test completed successfully.
· All firewall and security controls active.
· Docker environment verified as stable.
5. Phase 1 – Viable Mylysis EHR
Phase 1 delivers the minimum viable EHR functionality required to support registration, core clinical documentation, mylysis session recording, and basic reporting in a test/staging context.
5.1 Phase 1 Functional Scope
The following functional components must be delivered in Phase 1:
· Patient Registration (with photo capture).
· Clinical Evaluation (Clinical Officer / Medical Officer/Doctor).
· Nephrology Assessment (Consultant Nephrologist / Clinical Officer Nephrologist).
· Mylysis form and workflow (Pre-, Intra-, Post-Mylysis)
· Nutrition Assessment
· Outpatient Form- Can move to phase 2- or just use current available form
· Mylysis Prescription Form
· Session count reports (daily/weekly/monthly).
· Minimal appointment list (no machine scheduling).
· Basic printing and branding.
· System backups to local storage and OneDrive.
· Basic audit logging and security configuration.
5.2 Patient Registration & Photo Capture
Configure the Bahmni registration module to support Mylife’s patient identification and demographics requirements, including a unique patient identifier and patient photo capture.
Key requirements:
· Implement Clinic Unique Patient ID (CUPID) with a format similar to: GAT-000001 (location + sequential number).
· Capture core demographic details.
· Patient Information- Name, DOB, Sex, National ID, MRN # auto-generated above.
· Contact Information- Address, City/Town, County, Postal Code, Phone #, Email
· Next of Kin/Emergency Contact- Phone, Email, relation to patient
· Insurance & Billing- SHA/SHIF #, Other insurance, 1, Other Insurance 2, Cash option
· Mylysis Profile- Start date, Access type, comorbidities, Allergies, Nephrologist, Schedule.
· Consent
· Enable patient photo capture at registration using a compatible webcam 1080p + webcam on the registration workstation.
· Ensure that the patient photo is displayed on the patient summary and is stored in the standard Bahmni location.
· Ability to print a registration summary/face sheet.
5.3 Clinical Evaluation Form (CO/MO)
Encounter Type: Clinical Evaluation User Role: Clinical Officer / Medical Officer/Doctor Purpose: Admission, annual, or problem-based evaluation to capture comorbidities, baseline status, and medical fitness for mylysis. (Drop-down)- Admission, annual, and problem-based evaluations.
Sections:
1. Patient Header – Auto-filled demographics and clinician info.
2. Presenting Concerns & Medical History – Chief complaints, review of systems, past medical history, allergies, current medications.
3. Vital Signs – BP, Pulse, Temp, Resp Rate, Weight, Height, BMI, SpO₂ (auto-pulled).
4. Physical Examination – General, CVS, Respiratory, Abdomen, CNS, Edema, Access site.
5. Laboratory Summary – Auto-pulled labs (Hb, Urea, Cr, K⁺, Ca, P, Albumin, Serology).
6. Assessment – Primary/Secondary mygnoses, functional/nutritional status, psychosocial notes, infection risk.
7. Management Plan – Med changes, investigations, referrals, patient education, next review, notes to nurse.
8. Summary – Findings and plan summary.
9. Sign-Off – Auto clinician name/title, timestamp, digital signature.
Reports: Admission & annual evaluation registers; comorbidity frequency.
Print Template: Mylife-branded header/footer.
Fields mapped to concepts for future dashboards and reports.
Integration: Feeds Nephrology & Nutrition Assessments; included in KPI dashboard.
5.4 Nephrology Assessment Form
Encounter Type: Nephrology Assessment User Role: Nephrologist / Clinical Officer Nephrologist Purpose: Monthly or as-needed specialist review of mylysis adequacy, complications, and prescription updates. (Drop-down): Admission, monthly, and as needed reviews.
Sections:
- Patient Header – Auto details and clinician info.
- Chief Concern & Interval History – Reason for visit, interim events, symptoms.
- Mylysis Prescription Summary – Frequency, duration, mylyzer, UF goal, heparin, dry weight, access type & status, EPO/iron plan.
- Clinical Findings – BP (pre/post), weight, edema, lung & carmyc exam, access site.
- Laboratory Review – Auto-pulled labs (Hb, Urea, Cr, K⁺, Ca, P, Albumin); request labs button.
- Assessment & Plan – Adequacy, anemia, bone-mineral control, nutrition status, access condition, management plan.
- Orders & Follow-Up – Med changes, investigations, referrals, next review, notes to nurse.
- Complications (optional) – Type, severity, actions, outcome.
- Sign-Off – Clinician name/title, timestamp, signature.
Reports: Monthly review compliance, adequacy metrics, Hb/albumin trends, complication log. Print Template: Mylife-branded summary with footer.
Fields mapped to concepts for future dashboards and reports. Integration: Links to Clinical Evaluation, Mylysis Sessions, Labs, and KPI dashboard.
5.5 Mylysis Session Documentation – use shared form
Implement a basic mylysis session form to capture pre-, intra-, and post-mylysis information from the shared form.
· Encounter type: Mylysis Session.
· Pre-mylysis: vitals, weight, access type, brief checklist.
· Intra-mylysis: start time, UF goal, basic complication flags (no detailed run-sheet yet).
· Post-mylysis: end weight, UF achieved, session outcome, notes.
· Nurse/technician sign-off recorded via user account and timestamp.
· All data stored in a way that supports session count reports.
· Fields mapped to concepts for future dashboards and reports.
5.6 Nutrition Assessment Form (Detailed Specification)
Encounter Type: Nutrition Assessment User Role: Nutritionist / Dietitian Purpose: Quarterly or as-needed nutritional evaluation.
(Drop-down): Admission, Quarterly, and as-needed reviews.
Sections:
Patient Details, Anthropometry, Biochemistry, Clinical, Dietary Intake, Nutrition Mygnosis & Plan, Follow-Up & Signature. Reports: Nutrition Counseling Compliance, Malnutrition Risk Summary. Print Template: Mylife-branded with header/footer.
Fields mapped to concepts for future dashboards and reports.
5.7 Mylysis Prescription Form
Implement prescription form capturing ordered BFR, DFR, UF goal, duration, anticoagulation, mylyzer type, and physician signature.
5.8. Outpatient Consultation Form (Detailed Specification)
Encounter Type: Outpatient Consultation
User Role: Clinical Officer / Medical Officer / Doctor
Purpose: To document visits for non-mylysis patients attending the clinic for primary care, acute illness, chronic disease management, or referral-based review.
Sections:
1. Patient Header – Auto-filled demographics and clinician info.
2. Chief Complaint & Clinical History – Presenting complaint (required), history of present illness, duration, review of systems, past medical/surgical/family/social history.
3. Vital Signs – BP, Pulse, Temp, Resp Rate, SpO₂, Weight, Height, BMI (auto-calculated).
4.Physical Examination – General, CVS, Respiratory, Abdomen, HEENT, MSK, CNS, Skin.
5. Laboratory & Investigation Orders – Labs, point-of-care tests, imaging; lab review shown only if labs ordered.
6. Assessment & Mygnosis – ICD-11 primary mygnosis (required), secondary mygnoses, severity grading.
7. Management Plan & Orders – Medications, investigations, referrals, patient education, follow-up date.
8. Counseling & Education – Advice checklist and notes.
9. Clinician Sign-Off – Auto clinician name, designation, signature box, date; encounter locks after signing.
Reports: Daily Outpatient Register, SHA Claims Report, Mygnosis Trends Report, Clinical Quality Indicators, Red-flag Alerts Summary
Print Template: Mylife-branded header/footer with one-page summary including mygnosis, medications, and instructions.
Integration: All fields mapped to OpenMRS concepts, ICD-11 mygnosis mapping, Lab orders routed to OpenELIS, Imaging routed to Radiology/Odoo, Medications routed to Pharmacy, Follow-up linked to WhatsApp Notification Service, appears in patient timeline
Fields mapped to concepts for future dashboards and reports.
5.9 Session Count Reports (Daily / Weekly / Monthly)
Create basic reporting views to show lists of mylysis sessions completed per day, per week, and per month for operational review and future claims support.
· Daily session list: all mylysis sessions and outpatient visits on a given date, with patient name, CUPID, time, and nurse/role.
· Weekly and monthly aggregations: total number of sessions, filterable by patient and date range.
· Reports available as PDF, CSV, and on-screen table formats.
· These reports are for internal use and validation; SHA/claims integration will be handled in later phases.
5.10 Minimal Appointment List
Enable a simple appointment list without machine-level scheduling. This is intended only to track upcoming visits and basic booking information in Phase 1.
· Record basic appointments for patients (date, time, purpose).
· No machine assignment or complex slot management required at this stage.
· Provide a basic list view for upcoming appointments for front-desk and clinical staff.
5.11 Printing & Branding
Apply Mylife branding to key print outputs used in Phase 1. The final logo version already shared with Khurram should be used consistently.
· Include Mylife logo on registration summary, Clinical Evaluation, Nephrology Assessment, outpatient consult form, and Mylysis Session summaries.
· Footer text: “Mylife Medical Center – Gatundu | Confidential Clinical Record”.
· Ensure print layouts are clear, legible, and on standard A4 paper.
5.12 Backup & Recovery (Phase 1)
Implement a practical backup strategy for Phase 1, using both local backup storage on the server and off-site backup to OneDrive.
· Configure regular local backups to a designated folder on the server (for example: /var/backups/bahmni/).
· Configure automated or semi-automated off-site backups to OneDrive using a dedicated backup account (to be created by Mylife).
· Implement a simple backup verification mechanism (for example: weekly integrity check, test restore in staging).
· Provide brief documentation describing how to trigger a restore in case of failure (high-level explanation).
5.13 Security & Audit Considerations
Phase 1 should include basic security and audit features appropriate for a test/staging environment that will later become a production environment.
· Ensure login access is restricted to authorized users only.
· Use role-based access control; apply least-privilege principles for clinical and non-clinical roles.
· Enable audit logs with 180-day retention. Secure system using UFW, Fail2Ban, and automatic security updates.
· Discuss any additional restrictions or read-only areas with Fredrick as needed and implement agreed changes.
5.14 Phase 1 Acceptance Criteria
· Fredrick can register a test patient, capture their photo, and view it in the patient summary.
· Clinical Evaluation, Nephrology Assessment, Nutrition Assessment, and Outpatient Consultation forms are accessible and save data without errors.
· Mylysis Session documentation works end-to-end for a test patient.
· Daily/weekly/monthly session reports display expected counts for test data.
· Minimal appointment list is functional for test patients.
· Backups (local + OneDrive) are configured and verified at least once.
· All key prints show the Mylife logo and standard footer.
6. Project Timeline Summary (High-Level)
The following is a high-level estimate of effort (not a strict calendar schedule):
7. Phase 0 – Foundational Setup: 0–7 days
8. Phase 1 – Minimum Viable Mylysis EHR: 8–30 days
Total initial implementation effort is therefore estimated at approximately 30 days. Actual calendar duration will depend on availability, feedback cycles, and any unforeseen technical issues.
Appendix A – Developer Checklist (Phase 0 & Phase 1)
The following checklist is intended as a concise reference for implementation.
· Verify Docker installations and volumes.
· Perform pre-configuration backup.
· Perform restore test.
· Configure domain and HTTPS.
· Harden server security.
· Implement registration + photo.
· Build clinical forms.
· Build mylysis prescription + session forms.
· Implement reporting and appointments.
· Configure OneDrive backups.
· Verify audit and logs.
Interested can reach at kkhan@tkbench.com