Skip to main content
← Back to Selected Projects
Live System: fmc.wawmox.com→VERIFIED PRODUCTION SYSTEMETHIOPIAN MOH COMPLIANT

Ferenje Clinic Hospital & Clinical Management System (HCMS)

Full-Stack Hospital & Clinical Management System (EHR / HealthTech) • Enterprise Electronic Health Records & Clinical Workflow Platform

Built collaboratively at Wawmox Technologies (team of 3) where I co-engineered core full-stack features, schema architecture, and automated test suites. The platform transitioned a high-volume outpatient healthcare facility with over 36,000 historical patient records from fragile paper charting, manual lab slips, and unverified billing to a high-throughput, digitized clinical system with zero record loss, automated triage queues, sub-second diagnostic lookups, and compliant HMIS reporting.

Codebase Volume146,000+ LOC282 TSX & 197 PHP files
Automated Tests905+ Tests640 Pest • 181 Vitest • 296 Selenium
API & Route Surface303 Routes17 Custom Artisan Commands
Database Migrations85 Migrations40 Eloquent Domain Models
Legacy Cards Migrated36,187+ CardsContinuous sequence tracking
Diagnostic LookupSub-50msLocal WHO ICD-11 Microservice
Dual Calendar EngineJulian Day APIGregorian ↔ Ge'ez 13-Month
Multilingual Reach3 LanguagesEnglish, Amharic, Afaan Oromoo
Ferenje Clinic Hospital & Clinical Management System Dashboard
Interface: Doctor EMR Consultation & ICD-11 Diagnostic Workstation
Continuous Sequence Tracking • Start Card #36,187Visit Live Site →
01 // Executive Overview• Problem Solved & Clinical Impact

Transforming Paper Intake into High-Throughput Clinical Workflows

Outpatient polyclinics and ambulatory centers operating under Ethiopian Ministry of Health (MOH) standards handle heavy patient volumes daily. Relying on physical paper binders led to misplaced patient cards, slow nurse-to-doctor handoffs, diagnostic record desynchronization, and unverified medication billing.

The Ferenje Clinic HCMS replaces paper charting with an end-to-end, multi-role digital platform connecting 5 departments in real-time. With continuous card sequencing starting seamlessly from card #36,187, staff operate with zero record loss and strict role-based data boundaries.

Legacy Migration
36,187+ Cards Migrated

Unified relational schema with contiguous sequence tracking & atomic creation locks.

Diagnostic Speed
< 50ms Lookup

Local WHO ICD-11 microservice daemon with 300+ medical prefix expansions.

Operational Languages
Trilingual UI

Full support for English, Amharic (አማርኛ), and Afaan Oromoo across forms and /help SOPs.

02 // Architecture & Tech Stack• Production-Grade Enterprise Stack
⚙️ BACKEND CORE

PHP 8.3 • Laravel 13 LTS

PHP 8.3.35 with strict types and JIT optimization. Built on Laravel 13.17 with robust domain services, policies, and background queue workers.

  • •Laravel Fortify 1.37 Headless Auth
  • •WebAuthn / Passkeys (FIDO2 Biometrics)
  • •2FA TOTP with encrypted recovery keys
  • •Granular RBAC (TeamRole / TeamPermission)
  • •Laravel Wayfinder 0.1 Typed RPC SDKs
  • •dompdf 3.1 • phpword 1.4 • excel 3.1
⚡ FRONTEND SPA

React 19 • Inertia.js v3

React 19.3.0 compiled with Babel React Compiler for auto-memoization, coupled with Inertia.js v3 to eliminate client-side REST boilerplate.

  • •TypeScript 5.9.3 Type Enforcement
  • •Vite 8.3.3 + LightningCSS + Rollup
  • •Tailwind CSS v4.3.3 (@tailwindcss/oxide)
  • •Radix UI Accessible Primitives
  • •Recharts 3.10 Clinical KPI Visualizations
  • •Lucide React Iconography
🛰️ MICROSERVICES & CLOUD

WHO Daemon & Cloud Queue

Dedicated local microservices and external gateways engineered for offline resilience and automated emergency backup.

  • •WHO ICD-11 Local Linux Microservice (:8382)
  • •AfroMessage & SMSEthiopia Dual SMS Engine
  • •Google Drive API Nightly DB Backups
  • •Telegram Bot Administrative Critical Alerts
  • •Julian Day Number (JDN) Dual-Calendar API
  • •GoogleDrivePendingUpload Offline Queue

03 // Codebase Metrics

By the Numbers (Measured Codebase Telemetry)

Branch: release_2.0 • 400+ Commits
METRIC CATEGORYMEASURED VALUEARCHITECTURAL SIGNIFICANCE / CONTEXT
Total Lines of Code~146,300+ LOCEnterprise-grade medical management system
Frontend Codebase282 TSX/TS files (~63k LOC)Interactive clinical charting, real-time queues, modals
Backend Codebase197 PHP files (~29.5k LOC)Domain services, policies, controllers, jobs, commands
Database Migrations85 Migration FilesComplex evolving schema, legacy realignment, indexes
Database Seeders49 Seeders (896 KB data)Full HMIS indicators, lab test catalogs, realistic records
Eloquent Domain Models40 Domain ModelsRich clinical relationships, audit trails, soft deletes
Registered API Routes303 RoutesMulti-role dashboards, APIs, exports, settings
Custom Artisan Commands17 Artisan CommandsAutomated backup, holiday SMS, card expiry, DB repair
Automated Test Coverage905+ Total Tests (100% Pass)Comprehensive testing pyramid: 640 Pest PHP, 181 Vitest, 296 Selenium E2E

04 // Clinical Progression State Machine

End-to-End Patient Flow & Departmental Routing

01 // RECEPTION
Patient Arrival
Atomic Registration • Card #36,187+ • Dual Calendar
02 // TRIAGE
Nurse Station
Hemodynamic Vitals • SpO2 • Auto BMI • Urgent Flag
03 // CLINICAL
Physician EMR
Sub-50ms ICD-11 • HMIS Tags • Canvas Signature
04 // DIAGNOSTICS
Lab & Ultrasound
Specimen Panels • Fetal Biometry • Protected Stream
05 // PHARMACY & DISCHARGE
Dispensing & Billing
Digital Prescription • Telebirr/CBHI • SMS Alerts

05 // User Personas & Workstations

Five Specialized Clinical Departmental Portals

Strict Role-Based Access Control (TeamRole / EnsureRole) delivers purpose-built workstations for each healthcare professional.

📋
PORTAL 01 • RECEPTIONIST & CASHIER

Patient Intake, Card Sequencing & Cashier Settlement

Atomic multi-generational registration with legacy card counter alignment

Operational Capabilities & System Responsibilities:

•Captures multi-generational Ethiopian names (First, Father's, Grandfather's Name), validated Ethiopian mobile numbers (+251 09... / 07...), and Ge'ez birthdates.
•Continuous card counter sequencing starting from legacy patient card #36,187 with zero gap drift.
•Card validity and expiration window enforcement (30/90/180-day renewal workflows).
•Multi-channel cashier reconciliation: Cash, Telebirr, CBE Birr, and Community-Based Health Insurance (CBHI).
•Urgent attention flagging (urgent_attention) automatically prioritizing emergency arrivals across all clinical queues.
Core Subsystems:Inertia.js v3EthiopianDateServiceBarcode Scanningdompdf Receipts

06 // Functional Modules & Clinical Capabilities

11 Comprehensive Clinical Subsystems

01 // Patient Registration & Medical Card Lifecycle

Captures multi-generational Ethiopian patronymics, validates Ethiopian telecom prefixes (+251 09... / 07...), aligns sequence numbers with 36,187 historical records, and enforces configurable 30/90/180-day card validity with background expiration daemons (php artisan app:update-expired-cards).

Card #36,187+Atomic LocksExpiry Daemon

02 // Live Queue Management & Nurse Triage

Synchronized worklists routing waiting patients across 5 departments. Captures systolic/diastolic blood pressure, pulse, SpO2, respiratory rate, temperature, weight, height, and automatically calculates BMI with urgent emergency triaging.

Queue State MachineAuto-BMIEmergency Triage

03 // Physician EMR & WHO ICD-11 Autocomplete

Full clinical documentation interface with sub-50ms diagnostic search powered by a local Linux systemd daemon on port 8382. Features 300+ medical prefix expansions, MOH HMIS indicator tagging, digital canvas doctor signatures, and .docx/.pdf exports.

Port 8382 DaemonPrefix ExpansionDigital Signatures

04 // Laboratory & Ultrasound Diagnostic Suite

Comprehensive diagnostic worklist supporting complete hematology panels, urinalysis, stool microscopy, clinical chemistry, and obstetric/gynecological ultrasound biometry (GA, BPD, FL, AC, AFI) with protected media streaming.

Obstetric BiometrySpecimen CatalogProtected Media

05 // Pharmacy Inventory & Digital Prescription Paper

Skeuomorphic digital paper interface (EditablePrescriptionPaper.jsx) replicating traditional physical slips. Real-time batch-level inventory tracking by manufacturing and expiry dates preventing expired dispensing with automatic stock deduction.

Skeuomorphic PaperBatch Expiry GuardsAuto-Depletion

06 // Outpatient Injections & Nursing Treatments

Dedicated clinical queue for prescribed antibiotic, analgesic, and intravenous therapies. Nurses log administration timestamps, injection anatomical sites, batch numbers, and adverse reaction observations.

Nursing QueueAnatomical Site LogDose Verification

07 // Family Planning & Maternal Health Registry

Specialized client registration for reproductive healthcare tracking contraceptive modalities (Depo-Provera, Implanon, IUCD, Oral Contraceptives, Barrier methods) with longitudinal appointment follow-ups and side-effect logging.

Contraceptive RegistryLongitudinal TrackingMOH Formats

08 // Dynamic Patient Loyalty & VIP Tiering

Automated engine classifying frequent patients into Silver, Gold, and Platinum VIP tiers based on visit history and cumulative healthcare spend. Configurable percentage discounts applied automatically across billing with CLI recalculation (php artisan app:recalculate-loyalty).

Silver/Gold/PlatinumAuto-DiscountsCLI Recalculation

09 // Multi-Channel SMS & Ethiopian Holiday Broadcast

Automated event-driven clinical alerts (triage notifications, lab ready) and high-volume Ethiopian holiday broadcast engine (Enkutatash, Meskel, Genna, Timkat, Eid) with Amharic personalization, chunk jobs, and AfroMessage + SMSEthiopia fallback.

Holiday CampaignsAfroMessageDead-Letter Queues

10 // Financial Auditing, Pricing & MOH HMIS Reporting

Centralized pricing rules across consultations, procedures, lab panels, and pharmaceuticals. Cashier reconciliation across Cash, Telebirr, CBE Birr, and CBHI insurance. Generates automated monthly disease tally sheets in Excel and Word for MOH submission.

Multi-Channel AuditsCBHI InsuranceMOH Tally Sheets

11 // In-App Trilingual SOPs & Operational Manuals (/help)

Built-in operational knowledge base embedded directly into the platform, providing comprehensive standard operating procedure (SOP) manuals for all 5 roles localized in English, Amharic (አማርኛ), and Afaan Oromoo.

Trilingual SOPsEnglish/Amharic/OromooIn-App Knowledge

07 // Quality Engineering

Three-Tier Testing Pyramid (905+ Automated Tests)

PSR-12 • ZERO REGRESSIONS • 100% SUITE PASS

Backend Pest PHP & PHPUnit Suite (95.03% Code Coverage)

640 Test Cases • 4,394 Assertions • 100% Pass Rate

Validates backend domain services, database transactions, atomic patient registration, queue transitions, loyalty calculations, and strict RBAC authorization gates across all 5 clinical roles.

✓RoleBasedAccessControlTest — Verifies cross-role route interception and gate policies.
✓PatientRegistrationSequenceTest — Tests atomic card creation concurrency and legacy #36,187 sequence continuity.
✓TriageQueueStateMachineTest — Validates state transitions (Waiting → In Consultation → In Lab → Completed).
✓EthiopianDateConversionTest — Validates JDN astronomical transformations and leap year boundary math.
✓WhoIcdLookupServiceTest — Benchmarks sub-50ms caching and prefix expansion accuracy.
✓SmsGatewayFailoverTest — Tests AfroMessage primary to SMSEthiopia fallback with exponential backoff.

08 // DevOps & CI/CD Pipeline

Automated Multi-Stage Jenkins Pipeline

STAGE 01
Static Analysis Gate

PHP Pint (PSR-12), Larastan Level 5+, ESLint 9 & Prettier, TypeScript strict check.

STAGE 02
Isolated DB Prep

Automated migrations & seeders run against dedicated ferenje_hcms_testing database.

STAGE 03
Parallel Execution

Pest PHP suite with Clover XML coverage and Vitest suite with V8 engine coverage.

STAGE 04
Headless E2E Smoke

Spawns background artisan serve, runs 20 Selenium Chrome suites, records failures to screenshots.

09 // Technical Highlights & Deep Dives

Key Engineering Challenges & Solutions

CHALLENGE 01 DEEP DIVE

Astronomical Julian Day Number (JDN) Dual-Calendar Conversion

The Problem:

Ethiopian clinical operations, cashier billing, patient birthdays, and MOH health reporting utilize the Ethiopian Ge'ez calendar (12 months of 30 days + Pagume of 5 or 6 days), whereas underlying Linux servers, database timestamps, and React libraries strictly rely on Gregorian timestamps.

The Engineering Solution:

Engineered EthiopianDateService.php based on astronomical Julian Day Number (JDN) mathematics. By establishing the astronomical epoch (1 Meskerem 1 E.C. = JDN 1724221), the algorithm achieves deterministic bidirectional conversion with complete support for Ethiopian leap years ($year \pmod 4 = 3$). On the frontend, seamlessly synchronized with ethiopian-calendar-new in React 19.

Measured Clinical Impact:

Zero scheduling desync across 36,000+ patient records and automated generation of MOH-compliant disease tally sheets in both calendars.