Skip to content

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).