Criticality: Get Started¶
This walkthrough sets Value × Risk on a single equipment record so you can see the traffic-light criticality badge update live. It takes about 5 minutes.
Already installed?
roots_hemms_criticality is in the default make install-private set, so if you can see the Maintenance app, the module is already there. Confirm by opening any equipment record — if you see a Criticality group above the notebook tabs with two tier fields, you are good to go.
Prerequisites¶
- HEMMS is installed and you can log in (see Installation).
- At least one record exists under Maintenance → Equipment. The
hemms_privatedemo data ships a dozen items — pick any one of them. - Your user has at least the Maintenance / User access right.
Step 1 — Open an equipment record¶
- Open the Maintenance app from the launcher.
- Top bar → Equipment.
- Click any row. (If you have demo data, "Vital Signs Monitor #1" is a good first pick because it touches multiple downstream modules.)
You should land on the equipment form view.
Step 2 — Find the Criticality group¶
The criticality module injects a Criticality group above the notebook tabs, in the right-hand half of the form. It has three visible fields:
- Value Tier — selection
- Risk Tier — selection
- Criticality — read-only colour badge
If you don't see it, the module is not installed for this equipment's company. Go to Apps, search for roots_hemms_criticality, and Activate.
Step 3 — Set Value Tier¶
Value Tier is the financial / replacement-cost lens. Use these as a starting guide; the exact thresholds are a hospital-by-hospital decision.
| Tier | Rule of thumb | Hospital examples |
|---|---|---|
| Low Value | < ฿100,000 to replace | Stethoscope, sphygmomanometer, basic exam light, thermometer, weighing scale |
| Medium Value | ฿100,000 – ฿1,000,000 | Infusion pump, syringe pump, vital signs monitor, ECG machine, suction unit, portable oximeter |
| High Value | > ฿1,000,000 | Anesthesia machine, ventilator, ultrasound, X-ray, CT, MRI, dialysis machine, OR table |
Pick a value and the field saves immediately. The chatter at the bottom of the form posts the tier change.
Step 4 — Set Risk Tier¶
Risk Tier is the clinical-risk lens — what happens to the patient (or the hospital) if this equipment fails right now?
| Tier | Rule of thumb | Hospital examples |
|---|---|---|
| Low Risk | Non-clinical, or clinical use is non-time-critical | Office printer, BME workshop tool, exam-room desk lamp, weighing scale, non-clinical fridge |
| Medium Risk | Clinical use but failure is recoverable within an hour | Infusion pump, ECG, suction unit, exam light, sterilizer, autoclave, dental unit |
| High Risk | Life-supporting OR sole-source OR failure has irreversible clinical consequence | Defibrillator, anesthesia machine, ventilator, dialysis, neonatal incubator, OR monitor during surgery |
When in doubt, go higher
Under-classifying a high-risk device costs lives and HA accreditation points. Over-classifying costs a slightly tighter PM schedule. The asymmetry is obvious.
Step 5 — Read the resulting criticality¶
The Criticality badge updates immediately based on the 3 × 3 matrix:
| Value ↓ Risk → | Low Risk | Medium Risk | High Risk |
|---|---|---|---|
| High Value | 🟡 เฝ้าระวัง (Watch) | 🔴 วิกฤต (Critical) | 🔴 วิกฤต (Critical) |
| Medium Value | 🟢 ปกติ (Normal) | 🟡 เฝ้าระวัง (Watch) | 🔴 วิกฤต (Critical) |
| Low Value | 🟢 ปกติ (Normal) | 🟢 ปกติ (Normal) | 🟡 เฝ้าระวัง (Watch) |
Three worked examples:
- Defibrillator — Value: Medium (~฿200,000), Risk: High (life-support) → 🔴 Red.
- MRI scanner — Value: High (>฿50M), Risk: Medium (planned imaging) → 🔴 Red.
- Workshop drill — Value: Low, Risk: Low → 🟢 Green.
Step 6 — See criticality outside the form¶
Back out to Maintenance → Equipment.
List view — the row decoration colour follows criticality. Red rows pop visually, green rows blend in.
Kanban view — every card carries a coloured badge under the title.
Search bar — use the predefined filters:
- Filters → Critical only — show only red equipment.
- Filters → Watch — show only yellow.
- Filters → Normal — show only green.
- Filters → High Value / High Risk — slice by either single dimension.
Group By — filter dropdown → Group By → Criticality to get a count-per-colour collapsible kanban. This is the closest thing to a "criticality dashboard" the module ships out of the box.
Step 7 — Bulk-set criticality (optional)¶
If you just imported a hundred equipment items, going one-by-one is painful. The fast path:
- Switch the equipment screen to List view.
- Filter by category (e.g., "Infusion Pumps").
- Tick the checkbox in the header to select all visible rows.
- Actions → Update fields (or the new selection-action menu in Odoo 18) → set
Value TierandRisk Tierin one bulk operation.
For a sustained mass-classification effort, see Configuration for category-to-tier guidance.
Tips¶
Re-classify when a device's role changes
A vital-signs monitor parked in storage is Medium Risk. The same monitor wheeled into the OR becomes High Risk. Criticality is not a one-time decision — review it whenever equipment moves department, moves location, or changes clinical purpose.
Default is 'medium / medium' for a reason
Both fields are required=True, default="medium" so they are never null. That means newly-imported equipment lands in 🟡 Watch — visible and obvious, not silently misclassified as 🟢 Normal.
Criticality is a manual judgement
The module does not auto-infer criticality from category, brand, model, MoPH device class, or any other field. It is a deliberate decision recorded against an equipment record. The HA Annual PM Report has a separate, MoPH-driven risk tier — see HA Report — Configuration for that parallel concept.
What just happened¶
When you saved the form:
- Layer 3 (
roots_hemms_criticality) — wroteroots_value_tierandroots_risk_tier. - Layer 3 — the
@api.depends("roots_value_tier", "roots_risk_tier")compute recalculatedroots_criticality_colorfrom the fixed matrix. - Layer 3 — the
@api.depends_context("lang")compute onroots_criticality_labelre-rendered the bilingual badge in your current language. - Layer 3 (
roots_hemms_workflow) — the storedrelatedfieldroots_equipment_criticality_coloron every openmaintenance.requeston this equipment is updated. - Layer 1 (
mail.thread) — Odoo posted a tracking message to the equipment's chatter.
Next steps¶
- Configuration — admin-level guidance + category-to-tier examples for a full hospital.
- Workflows — see how request priority, spare-part flagging, and inspection snapshots react to criticality.
- Reporting — slice the equipment register by criticality.