What is HEMMS?¶
HEMMS (Hospital Equipment Maintenance Management System) is a complete work-management platform for the Biomedical Engineering (BME) department of a Thai hospital. It is built on Odoo 18 Community Edition, layered on top of OCA (Odoo Community Association) maintenance modules, and wrapped with a hospital-specific "Roots" layer that encodes Thai government requirements — HA Thailand accreditation, MoPH risk-tier guidelines, ปจป. annual asset inspection, and e-signature law compliance.
Maintained by Trinity Roots Co., Ltd. (roots.tech) — source on GitHub.
What problems does it solve?¶
The status quo at most Thai public hospitals is some mix of:
- Paper-based annual asset inspection (ปจป.) — three-signature committee reports re-typed in Word every September.
- Excel-tracked preventive maintenance — one spreadsheet per department, no SLA, no audit trail, and "who's doing what" lives in LINE chat.
- Vendor contracts in a binder — when a vital signs monitor dies on a Sunday, no one on call knows whether GE Healthcare is contractually obligated to fix it or the hospital pays out of pocket.
- HA accreditation panic every 3 years — surveyors ask for evidence of risk-based PM; the BME head spends two weeks reconciling spreadsheets into a binder.
HEMMS replaces all of that with one system where every piece of equipment, every PM event, every contract, and every signature lives on a single chronological audit trail.
The three-layer stack¶
HEMMS is not a monolithic addon. It is a deliberate stack of three layers that compose around Odoo's built-in maintenance module:
┌─────────────────────────────────────────────────────────────────┐
│ Layer 3 — roots_hemms_* (Hospital lens) │
│ ───────────────────────────────────── │
│ Thai compliance, HA accreditation evidence, Thai BME workflow, │
│ ปจป. annual inspection, MoPH risk tiers, e-signature law │
└─────────────────────────────────────────────────────────────────┘
▲ extends
┌─────────────────────────────────────────────────────────────────┐
│ Layer 2 — OCA maintenance modules │
│ ───────────────────────────── │
│ Generic building blocks: PM scheduling, partner links, stock, │
│ sign_oca e-signature engine, equipment tags, reference numbers │
└─────────────────────────────────────────────────────────────────┘
▲ extends
┌─────────────────────────────────────────────────────────────────┐
│ Layer 1 — Odoo 18 Community │
│ ────────────────────────── │
│ maintenance.equipment, maintenance.request, res.partner, │
│ hr.employee, kanban / list / search / form / chatter / mail │
└─────────────────────────────────────────────────────────────────┘
See Architecture for the full layer model, field-naming convention, and the "default to OCA" decision matrix.
The ten modules¶
The Roots layer (addons/roots/) ships as ten focused modules. Each one is independently installable, separately tested, and maps to a single compliance or operational concern.
| Module | What it does | When to use |
|---|---|---|
roots_hemms_workflow | 5-stage Thai BME repair workflow with per-stage SLA hours and a stage-transition audit log | Always — foundation for every other module |
roots_hemms_criticality | 2D Value × Risk criticality classification on every equipment, with green/yellow/red traffic-light badges | Always — drives prioritization across the stack |
roots_hemms_asset_master | Brand / Model master data plus government Ref. No. (รหัสครุภัณฑ์) and current_condition | Always — equipment register baseline |
roots_hemms_asset_inspection | Annual ปจป. stock-check workflow with 3-signer committee and locked-on-submit PDF | Year-end (September) compliance |
roots_hemms_pm | Hospital PM kinds (Calibration / Safety / General) and a dedicated "PM Scheduled" stage, on top of OCA maintenance_plan | Whenever a hospital does scheduled PM |
roots_hemms_spare_parts | Spare-part lines on equipment with auto-flagged critical spares and stock picking links | Inventory-conscious BME teams |
roots_hemms_service_contracts | Warranty / MA / vendor contracts auto-linked to corrective requests, with per-kind coverage and SLA tier | Hospitals with external service vendors |
roots_hemms_signature | Reusable e-signature primitives on top of OCA sign_oca; used by inspection and contracts | Required for paperless ปจป. and contract sign-off |
roots_hemms_ha_report | Thai-government-format Annual PM Report PDF for HA Thailand accreditation | HA accreditation cycles |
roots_hemms_mass_import | Excel batch import for equipment, vendors, and master data | Onboarding a new hospital |
Who it's for¶
| Role | What HEMMS gives them | Where to start |
|---|---|---|
| BME Engineer / Technician | Daily work queue, repair workflow, PM events, spare parts, vendor contract lookup | User Guides — BME |
| BME Head | SLA dashboards, equipment register, vendor scorecards, HA evidence | User Guides — BME |
| Ward Nurse | Submit and track repair requests, see contract coverage banner before calling vendors | User Guides — Ward Nurse |
| DPO / Asset Officer | Annual ปจป. inspection workflow with 3-signer committee | User Guides — DPO |
| CFO / Finance | Vendor contract value, billable vs covered repair split | User Guides — CFO |
| CEO / Hospital Director | HA accreditation status, criticality heat-map, director-signature inbox | User Guides — CEO |
What HEMMS is NOT¶
HEMMS is deliberately scoped to equipment maintenance. It is not:
- A clinical system — no patient data, no diagnoses, no HL7/FHIR integration.
- A billing or revenue-cycle system — does not issue patient invoices.
- A hospital EHR / EMR — does not store medical records.
- A pharmacy or drug-inventory system — spare parts only, not medications.
- A general-purpose ERP — uses Odoo as the platform, but does not enable the Sales / Purchase / Accounting apps by default. You can layer those on if you want them, but HEMMS does not depend on them.
For everything else Odoo can do, see the Odoo 18 documentation.
Top-bar navigation¶
Once HEMMS is installed, the Maintenance app's top bar is polished into a predictable seven-item order, English-only:
Dashboard • Maintenance • Equipment • Asset Inspection •
Service Contracts • Reporting • Configuration
Thai callouts appear in field labels and report bodies where they're hospital-specific (รหัสครุภัณฑ์, ปจป., ปีงบประมาณ), but menu structure stays English so multinational vendors and Odoo trainers stay oriented.
Where to go next¶
- Installation — Docker-based local sandbox in under 10 minutes.
- First-time Setup — what to do after install to get a working hospital.
- Architecture — for developers: the three-layer model, field-naming convention, and module dependency graph.
- Roadmap — Quick Win sequencing (Q1–Q7 shipped; Q8+ in planning).