Hospital — User Guide
A practical, task-by-task guide to running patient operations in ERPat — for front desk, nurses, physicians, pharmacy, laboratory, billing, and administrators.
The Hospital module turns your ERPat workspace into a healthcare front office and clinical operations hub. It keeps a proper patient master index, moves outpatients through check-in → triage → consultation, tracks wards, rooms and beds through admission, transfer and discharge, dispenses medications and runs lab/imaging, and collects every billable item on an itemized charge ledger that turns into a standard ERPat invoice. It reuses the ERP you already run instead of bolting on a second, disconnected system.
What each area does
Register once, find duplicates before creating, keep a permanent MRN and a full chart.
Check-in, triage vitals, and the consultation workspace with ICD-10 diagnoses.
Departments, ward→room→bed tree, and admit/transfer/discharge/housekeeping.
Ward board, bedside vitals, nurse shifts, and the Medication Administration Record.
Schedule procedure cases without double-booking, run the surgical lifecycle.
Generic-name catalog, prescriptions, and stock-aware dispensing.
Order tests, enter results, and acknowledge critical values.
Itemized charge ledger, void-with-reason, and one-click invoice.
PhilHealth, DOH and BIR draft exports — readiness, for manual filing.
Who this module is for
Hospital is built around real hospital roles. You will usually be granted access to just the areas your job needs — that is by design, and it keeps patient data protected.
| Role | What you do in Hospital | Main areas |
|---|---|---|
| Front desk / Admitting | Register patients, avoid duplicate charts, check patients in, admit inpatients. | Patients, OPD Queue, Bed Board |
| Triage nurse | Record arrival vitals and set the queue priority. | OPD Queue |
| Physician / Clinician | Run the consultation, record diagnoses (ICD-10), prescribe, order labs/imaging. | OPD Queue, Pharmacy, Lab & Imaging |
| Ward & housekeeping | Work the bed board, transfer/discharge, mark beds clean. | Bed Board, Ward & Nursing |
| Ward nurse | Ward board, bedside vitals, give scheduled medicines (MAR). | Ward & Nursing |
| OR team | Schedule cases, manage the surgical team, run the case lifecycle. | Operating Rooms |
| Pharmacist | Maintain the medication catalog and dispense prescriptions. | Pharmacy |
| Lab / Imaging staff | Work the worklist, enter and verify results, flag criticals. | Lab & Imaging |
| Billing staff | Post charges, void with a reason, generate invoices, prepare claims. | Billing, Compliance & Claims |
| Administrator | Configure departments, beds, services, practitioners, and settings. | All areas + Settings |
Setup & Quick Start
A one-time setup that an administrator performs. Do these in order — later steps depend on earlier ones.
1. Turn the module on
- Ensure the database is up to date. In multi-tenant deployments, the module tables must exist
on every tenant database before you enable Hospital for that tenant. (Technically this is
php erpat migrate:modules, run per tenant — your ERPat administrator handles this.) - Go to Settings → Manage Modules and enable Hospital. The Hospital group now appears in the left menu.
2. Grant access
In Settings → Roles, grant the Hospital permission families to the roles that need them. Give each role only what its job requires (Data Privacy Act — least privilege). Full detail is in Permissions & access.
3. Configure Hospital → Settings
Open Hospital → Settings (needs Manage Hospital Settings) and fill in your facility identity and operating thresholds:
| Setting | What it controls |
|---|---|
| Facility name / address / contact | Your hospital's identity, printed on outputs and shown on the public info page. |
| DOH license no. / PhilHealth HCI no. | Your accreditation numbers, used on compliance drafts. |
| MRN prefix | The letters in front of every Medical Record Number (e.g. MRN → MRN-000123-4). See the MRN explained. |
| Default OPD department | Where walk-ins land on the queue if no department is chosen. |
| Authorized beds | Your DOH-licensed bed capacity — the denominator for occupancy statistics. Set it to your licensed number, not just the beds you have entered. |
| Automatic charge capture | When on, finished consultations, priced results and dispenses drop charges automatically (recommended — stops revenue leakage). |
| Auto-charge room & board per bed-night | Optional nightly room charge for admitted patients. Off by default — turn on only if you charge per bed-night. |
| Dirty-bed alert minutes | How long a bed may sit "dirty" before the system raises a housekeeping ticket. |
| MAR look-ahead hours / missed grace minutes | How far ahead medicine doses are generated, and how late a dose may be before it is flagged "missed". |
| Patient portal enabled | Lets patients log in to view their own encounters, results and invoices. |
4. Build your master data
- Departments — your clinical departments (from the Bed Board / Facility area).
- Unit types — sensible defaults are seeded; adjust if needed.
- Ward → Room → Bed tree — create the wards, rooms, and beds you actually have.
- Service & price catalog — consultations, procedures, lab and imaging services, room rates, with VAT-exemption tags and PhilHealth case-rate readiness.
- Practitioners — link each doctor to their employee record and capture PRC license, PTR, S-2, and PhilHealth accreditation numbers.
- Medication and test catalogs — set up in Pharmacy and Lab & Imaging before you prescribe or order.
5. Connect the modules you use (optional)
Hospital reuses other ERPat modules and degrades gracefully if they are off. Enable the ones you want to integrate — Appointments (online booking), Helpdesk (facility tickets), Warehouse (pharmacy stock), and Sales/Finance (invoices). See Related modules.
Core Concepts
A handful of ideas that everything else builds on. Ten minutes here saves hours later.
The patient record spine
A patient is a permanent person. A visit is one time they came in. Within a visit there are one or more encounters — a consultation, an admission, a ward round. Vitals, diagnoses, prescriptions, orders and charges all attach to an encounter or visit, so the chart tells the whole story in order.
The MRN, and why a mistyped number fails safely
Every patient gets a permanent Medical Record Number (MRN) — your prefix, a running number,
and a final check digit, e.g. MRN-000123-4. The check digit is computed from the
rest of the number. If someone mistypes the MRN, the check digit no longer matches and the system
refuses rather than silently opening the wrong chart. MRNs are never reused or renumbered,
even for deceased or merged patients.
Statuses & colours
Records move through defined statuses shown as coloured labels. You change status through the proper action button, not by editing a field directly — that keeps boards honest.
Privacy & audit (Data Privacy Act, RA 10173)
- Least privilege — you are given only the areas your role needs; do not ask for more "just in case".
- No shared logins — the audit trail records who did what; a shared login destroys accountability.
- Nothing is truly deleted — clinical rows are soft-deleted for medico-legal retention; charges are voided with a reason, not removed; a patient with history can only be made inactive.
- Don't discuss charts off-system — screenshots and copy-paste move PHI outside the audit trail.
Reuse, and graceful degradation
Hospital deliberately reuses other ERPat modules (Appointments, Helpdesk, Warehouse, Sales/Finance, Assets, Announcements, Messages). If one of those is switched off, the related button simply disables or disappears — nothing breaks. See Related modules.
Patient Registration & the Chart
The patient master index is the heart of the module. Getting registration right — one person, one chart — prevents most downstream problems.
Register a new patient (with duplicate check)
- Open Hospital → Patients and click Add Patient.
- Search first. As you enter the name and birth date, the system looks for likely existing charts. If it shows "Possible duplicate patients found", stop and open the matching chart instead of creating a new one.
- If it is genuinely a different person, use Register Anyway.
- Fill demographics, identifiers (including PhilHealth number, senior/PWD eligibility), contacts and guardians, allergies, safety flags, and consent records.
- Save. The patient receives a permanent MRN automatically — you never type it.
The chart timeline
Open any patient to see their chart: demographics, allergies and flags at the top, and a timeline of everything that has happened — registrations, encounters, vitals, diagnoses, admissions and transfers, dispenses, results, and charges — newest first.
Merging duplicate patients
If two charts for the same person slip through, an administrator can merge them. Merge repoints all visits, encounters, orders, prescriptions and charges to the surviving chart; the losing record is kept as a read-only pointer/tombstone (not purged) so history is preserved and the merge is traceable. Use the "potential duplicates" report (same birth date + similar name) to find candidates.
Editing & deleting
- You can edit demographics with the Update permission.
- A patient who already has visits cannot be deleted — mark them inactive instead. This protects clinical history.
OPD — Queue, Triage & Consultation
The outpatient flow moves a patient from the door to a documented, billed encounter.
1. Check in a patient
- Open Hospital → OPD Queue and click Check In.
- For a walk-in, search the patient (or register them first), pick the department, and set a priority (routine by default).
- For a booked patient, pick their appointment — check-in links the booking to the clinical encounter automatically (and won't create a duplicate on a second click).
- The patient now appears on the live queue with their arrival time and priority.
2. Triage — record vitals
The triage nurse opens the queued patient and records vitals (BP, HR, temperature, SpO₂, weight, etc.). Priority can be raised for urgent cases so they sort to the top.
3. Consultation workspace
The physician opens the patient from the queue to reach the consultation workspace and documents the encounter:
- Diagnoses with ICD-10 codes (with a "present on admission" flag where relevant).
- Clinical observations — structured code / value / unit findings with reference ranges.
- Prescriptions — sent to Pharmacy.
- Lab & imaging orders — sent to Lab & Imaging.
- The care plan and encounter notes.
4. Finish the encounter
When you complete the consultation, the consultation fee is charged automatically (if automatic charge capture is on). There is deliberately no clinical delete — finished encounters are part of the permanent record.
Bed Board — Admission, Transfer, Discharge & Housekeeping
The bed board is the single source of truth for who is where. Its golden rule: bed status changes only through the board's actions, so it can never drift from reality.
The facility tree
Facilities are organised as Department → Ward → Room → Bed, each bed carrying an occupancy state and a housekeeping state, plus isolation flags. Administrators build this tree from the Bed Board / Facility area (needs Facility & Beds permission).
Admit a patient
- On the bed board, pick an available bed and choose Admit.
- Select the patient and attending physician; record the admitting diagnosis.
- The bed becomes occupied and an admission with its ADT event trail begins.
Transfer
Choose Transfer on an occupied bed and pick the destination bed. Both the old and new beds update, and the move is written to the ADT trail.
Discharge
- Choose Discharge and select a disposition (Improved, Recovered, Home Against Advice, Transferred, Expired, …) — these match the DOH statistical categories.
- The bed automatically flips to dirty and leaves the available pool.
Housekeeping
A dirty bed must be cleaned and marked clean before it returns to the available pool. If a bed sits dirty past the configured threshold, the system automatically raises a Helpdesk housekeeping ticket so it isn't forgotten. You can also Report Issue on a bed (e.g. a broken ICU bed) to raise a maintenance ticket for the facilities team.
Ward & Nursing
The inpatient nursing hub: a live ward board, bedside vitals, nurse shift assignments, and the Medication Administration Record.
The ward board
Open Hospital → Ward & Nursing for a live board of every occupied bed showing the patient, the attending physician, any isolation flag, and how long ago the last vitals were taken — so overdue rounds stand out.
Record bedside vitals
From the ward board, open a patient and record vitals. These attach to the patient's inpatient encounter and appear on the chart timeline. Recording rounds keeps the "last vitals age" fresh on the board.
Nurse shift assignments
With Manage Nursing Assignments, assign nurses to wards per shift so responsibility for each ward is clear.
The Medication Administration Record (MAR)
Inpatient medicines follow three separate steps: prescribe → dispense → administer. The MAR covers the last step.
- A physician writes an inpatient medication order with a dosing frequency.
- The system automatically generates a due-dose worklist ahead of time (the look-ahead window is a setting).
- At the bedside the nurse records each dose as Given, Refused, or Held, with the time and their name.
- A dose not given past the grace period is automatically flagged Missed so it is visible for follow-up.
Operating Rooms
Schedule and run procedure cases with protection against double-booking either the room or the surgeon.
Schedule a case
- Open Hospital → Operating Rooms and click Schedule Case (needs the OR create permission).
- Pick the patient, the procedure service, the OR room, the surgeon, and the date/time.
- The system blocks the save if the room or the surgeon is already booked in that window — no double-booking.
- Build the surgical team roster (roles per staff member).
Run the case lifecycle
- Start the case when it begins; Complete it when done, capturing the operative technique.
- On completion the procedure charge posts automatically.
- A case can be Cancelled with a reason before it starts.
- Consumables used in theatre are issued through pharmacy dispensing, which already captures their charges.
Pharmacy — Prescribe → Dispense
The clinical pharmacy links prescribing in the consultation to stock-aware dispensing.
The medication catalog
With Manage Medication Catalog, maintain your medicines. Every medicine must carry a generic name (Generics Act). Flag controlled substances and high-alert medicines so they stand out at prescribing and dispensing.
Prescribe (from the consultation)
Physicians write prescriptions in the consultation workspace (prescribing rides on the Clinical permissions). The prescription lands in the pharmacy queue.
Dispense
- Open Hospital → Pharmacy and pick a prescription from the queue (needs Dispense Medications).
- Confirm the item, quantity, batch and expiry.
- Dispensing deducts Warehouse stock (a stock issue movement) and posts the medication charge.
Lab & Imaging — Orders → Results
Order tests from the consultation, work the department worklist, and enter results that are automatically checked against reference ranges.
The test catalog
With Manage Test Catalog, set up your tests, their analytes, and reference ranges. Good reference ranges are what let results be auto-flagged.
Order a test
Physicians place lab/imaging orders from the consultation (ordering rides on the Clinical permissions). Orders appear on the department worklist.
Enter & verify results
- Open Hospital → Lab & Imaging and pick an order from the worklist (needs Enter / Verify Results).
- Enter the structured result values. Each is auto-flagged against its reference range (normal / high / low).
- Finalize the result — priced results also post their charge automatically.
Critical results — mandatory acknowledgement
Billing — Charge Ledger & Invoices
Every billable item lands on a per-visit, itemized charge ledger that becomes a standard ERPat invoice. The ledger is void-only — you never delete a charge, you void it with a reason.
Where charges come from
- Automatically, as a side-effect of clinical events — a finished consultation, a completed & priced lab result, a posted dispense, and (optionally) a nightly bed-night room charge.
- Manually, by billing staff posting a charge to the visit's account (needs the create permission).
Post a charge
- Open Hospital → Billing and open the patient's billing account for the visit.
- Add the service/item, quantity, and price (VAT-exemption and senior/PWD discounts apply where eligible).
Void a charge (never delete)
- On the charge line choose Void (needs Void Charges).
- Enter a reason — voiding keeps the line visible with its reason for a clean audit trail.
Generate the invoice
With Generate Invoices, click Generate Invoice to turn the ledger into a standard ERPat invoice for the patient's billing client. Payments then flow through your normal Sales/Finance process.
Compliance & Claims (Readiness)
Open Hospital → Compliance & Claims (needs the Compliance permission; generating exports needs Generate). It pulls from data you already captured — the charge ledger, ICD-10 diagnoses, case-rate codes, and practitioner accreditation.
PhilHealth claims & the 60-day clock
- A claim is built from a discharged admission's itemized charge ledger (room/board, drugs, labs, supplies, professional fees), snapshotted by category.
- Each claim carries a 60-day filing deadline counted from the discharge date, and a status you track manually: draft → filed → returned (RTH) / denied / paid.
- Generate eSOA XML and CF1 / CF2 / CF4 draft payloads, plus a CF5 DRG shadow-billing extract (coded diagnoses with present-on-admission, procedures, length of stay, disposition).
DOH statistics (OHSRS)
Generate a monthly hospital statistics dataset — bed occupancy, average daily census (ADC), average length of stay (ALOS), admissions/discharges/deaths, OPD/ER volumes, and leading causes of morbidity/mortality — with a CSV export. Occupancy uses your configured Authorized beds as the denominator, so set that correctly in Settings.
BIR professional-fee withholding (2307 / EIS)
- Per-doctor gross professional fees are attributed from consultation (attending) and procedure (surgeon) charges.
- Expanded withholding tax is computed at the RR 14-2013 rates (10% while year-to-date gross is within the ₱720,000 threshold, otherwise 15%), tracked per doctor per quarter.
- Generate a per-doctor Form 2307 draft and a BIR EIS invoice JSON draft, and capture sworn no-PF declarations where applicable.
Patient Portal
An optional, read-only self-service view where a patient sees only their own chart.
What a patient sees
- Their own finished encounters.
- Their own finalized diagnostic results.
- Their own invoices.
Everything is read-only. A patient is matched to their chart by their linked user account, and any attempt to reach another patient's data returns a "not found" — patients can never see each other's records.
Turning it on
Enable Patient portal in Hospital → Settings, and link the patient's chart to a portal user account. If the setting is off, the portal is simply unavailable.
Public Hospital-Info Page
A public, PHI-free page anyone can visit at /hospital-info — your departments,
service highlights, and facility contact. It contains no patient data.
What it shows
- Facility name, address, and contact (from Settings).
- Clinical departments and service highlights.
- A path to book online (public booking rides on the Appointments module's portal).
Giving it your site's look
Run Sync Public Pages (Content/CMS) to wrap the hospital-info page in your site's CMS theme header and footer. The page keeps rendering its own content; it just gains the shared public chrome. This is fail-safe — if the CMS isn't active, the page still renders on its own.
/hospital-info page
(and public Appointments booking) is public — and it never exposes patient information.
Controls & Data-Quality Checks
Habits and built-in safeguards that keep the data trustworthy. Build the daily/weekly checks into your routine.
Built-in safeguards
| Safeguard | What it protects |
|---|---|
| Duplicate search before create | Stops split patient histories. |
| MRN check digit | A mistyped number fails instead of opening the wrong chart. |
| Bed status only via actions | The bed board can't drift from reality. |
| Void-with-reason (no delete) | Clean, auditable revenue trail. |
| Automatic charge capture + reconciliation | Stops silent revenue leakage. |
| Critical-result acknowledgement | Dangerous results can't be ignored. |
| Soft delete + audit trail | Medico-legal retention; who-did-what accountability. |
A recommended daily checklist
- Critical results pending acknowledgement — clear the dashboard tile before end of shift.
- Beds needing cleaning — keep the dirty-bed backlog down; housekeeping tickets should not pile up.
- Missed MAR doses — review and follow up any flagged missed medications.
- Charge reconciliation — check for clinical activity with no linked charge.
- OPD queue — no patient stuck waiting far beyond their priority.
A weekly / monthly checklist
- Potential-duplicate patients report — merge any true duplicates promptly.
- PhilHealth claim deadlines — nothing approaching the 60-day limit unfiled.
- Practitioner accreditations — PRC/PTR/S-2/PhilHealth numbers current.
- Catalog hygiene — services, medicines and tests priced and reference-ranged.
- Authorized-beds setting — still matches your DOH license (drives occupancy stats).
Related Modules
Hospital is reuse-first: it leans on other ERPat modules and degrades gracefully when they are off — the related button just disables or disappears, nothing breaks.
| Module | How Hospital uses it | If it's off… |
|---|---|---|
| Appointments | Public online booking, doctor availability; check-in links a booking to the encounter. | Only walk-in check-in; no online booking. |
| Helpdesk | Maintenance, biomedical, housekeeping and incident tickets raised from hospital screens. | "Report Issue" / auto dirty-bed tickets are unavailable. |
| Announcements | Hospital advisories shown on the dashboard. | No advisories tile. |
| Messages | Staff-to-staff communication. | Use another channel. |
| Assets | Biomedical equipment registry, maintenance and calibration. | No linked equipment records. |
| Sales / Finance | Invoices and payments generated from the charge ledger. | Generate-Invoice is disabled; charges still accrue. |
| Warehouse | Pharmacy stock: dispensing posts batch/expiry-aware stock issues. | Dispensing runs record-only (still charges). |
| HR / Team Members | Practitioners are ERPat employees; their schedules drive bookable slots. | Practitioners still exist; no schedule-driven slots. |
Permissions & Access
Access needs the module enabled and the right permission family granted in Settings → Roles. Grant on a need-to-know basis (RA 10173). Administrators bypass all checks.
| Permission family | Grants access to |
|---|---|
| Hospital | Base access and the command-center dashboard. |
| Patients (+ create / update / delete) | Patient registry and chart. Delete is blocked once a patient has visits. |
| Clinical / OPD (+ create / update) | Queue, check-in, triage, encounters, diagnoses, prescribing and ordering. No clinical delete. |
| Facility & Beds (+ create / update / delete) | Departments, unit types, and the ward/room/bed tree. |
| Admit / Transfer / Discharge / Housekeeping | The bed-board actions. |
| Ward & Nursing (+ manage assignments) | Ward board and nurse shift assignments. Vitals & MAR actions ride on Clinical. |
| Operating Rooms (+ create / update) | Case scheduling, team, and status transitions. |
| Service Catalog (+ create / update / delete) | The service & price catalog. |
| Practitioners (+ create / update / delete) | The practitioner registry. |
| Pharmacy (+ manage catalog / dispense) | Medication catalog and dispensing. Prescribing rides on Clinical. |
| Lab & Imaging (+ manage catalog / enter-verify results) | Test catalog and result entry. Ordering rides on Clinical. |
| Billing & Charges (+ create / void / invoice) | Charge ledger, voiding, and invoice generation — each a separate grant. |
| Compliance & Claims (+ generate) | Compliance area; generating exports (which read PHI) is a separate grant. |
| Manage Hospital Settings | MRN prefix, facility identity, thresholds, and toggles. |
FAQ & Troubleshooting
Still stuck?
For anything else, contact the ERPat Team. When reporting an issue, note the exact screen, what you expected, and what happened — but never paste patient details (PHI) into a ticket or chat.