User Guide
HR
Role-based kiosk for HR management — independent of hospital department.
The HR Manager logs in at hr.manager@hospital.com / admin123 and lands on a stripped kiosk shell pinned to the /hr page. There is no sidebar — the HR module is the entire surface — and a single “Human Resources” tab in the top bar reminds the manager what they’re operating. Notifications and the user pill are kept; everything clinical is hidden.
The HR kiosk is not a department-bound shell like ICU / Maternity / Lab. Anyone with users.role = 'hr' lands here regardless of users.department, so HR can use whatever departmental string the org prefers (“HR”, “Human Resources”, “People Ops”).
What you own end-to-end
You are responsible for everything about a hospital employee’s lifecycle except the day-to-day clinical work itself:
| Domain | What you do |
|---|---|
| Configure | One-time and rarely-changed setup that drives every other tab — company identity (legal name, working week, EOS formula), branches, job grades / pay bands, shift templates, public-holiday calendar, leave policies per grade, overtime multipliers, allowance / deduction catalogs. |
| Hire | Job postings, applicant tracking, interview scheduling, hiring decision, onboarding checklist (12 default tasks per new hire). |
| Employ | Employee directory, contracts, documents, manager assignment / org-chart, branch + grade assignment, shifts, leave, attendance, payroll, doctor revenue shares. |
| Comply | Clinical credentialing (medical / nursing licenses, DEA, board certs, malpractice — with renewal alerts), mandatory training (BLS, ACLS, fire safety, infection control, HIPAA), occupational health (HBV, MMR, Tdap, flu, COVID-19, TB screening). |
| Develop | Annual / quarterly performance reviews with KPIs and goals; manage promotions, transfers, raises (job-history tab). |
| Discipline | Verbal warning → written warning → PIP → suspension → termination, with full document trail for legal. |
| Money | Monthly payroll (with allowance / deduction catalog), doctor revenue shares, employee loans / salary advances, annual leave-balance ledger. |
| Exit | Resignations, terminations, exit interviews, eligibility-for-rehire flag, asset returns, final settlement. |
Screen layout
┌────────────────────────────────────────────────────────────────────┐
│ ▢ Mando · HR Human Resources 🔔 Hala (HR) ⏻ │ ← top bar (kiosk)
├────────────────────────────────────────────────────────────────────┤
│ HR banner: 215 employees · 198 active · 7 pending leaves · 5 │
│ credentials expiring · 3 trainings due │
│ [+ <Tab Action>] │
├────────────────────────────────────────────────────────────────────┤
│ ⚠ 5 license/credential(s) expiring in the next 60 days... │
│ ⚠ 3 training certification(s) expiring soon... │
├────────────────────────────────────────────────────────────────────┤
│ OVERVIEW [Dashboard] │
│ PEOPLE [Employees] [Org Chart] [Recruitment] [Onboarding 4] │
│ [Exit] │
│ TIME [Leave 7] [Attendance] [Shifts] [Leave Balances] │
│ [Time-off Calendar] [Birthdays] │
│ COMPLIANCE [Credentialing 5] [Training 3] [Occ. Health] │
│ [Reviews] [Disciplinary 1] [Contracts] [Documents] │
│ FINANCE [Payroll] [Doctor Shares] [Loans] [Reports] │
│ LIFECYCLE [Job History] [Assets] │
│ CONFIG [Company Setup] │
├────────────────────────────────────────────────────────────────────┤
│ │
│ ─── current tab content ─── │
│ │
└────────────────────────────────────────────────────────────────────┘
The badges next to tab names ([Onboarding 4], [Leave 7], etc.) are live counts that pull from the dashboard endpoint — they tick down as items get cleared.
Day flow (typical)
- Open with the Dashboard. The headcount/expiry strip across the top tells you what needs attention before you do anything else: pending leaves, expiring credentials, expiring training, open disciplinary actions, onboarding tasks still pending. Three banners on top (red / amber) repeat the most urgent of these so you can’t miss them.
- Clear the inbox: pending leaves. Open the Leave tab → approve / reject any pending requests. The dashboard count drops live.
- Renewal sweep: Credentialing & Training. Anything with a yellow/red “Days Left” column needs HR to start the renewal conversation now. Click Edit, push the expiry date out once the renewal is in hand, and flip the status if needed.
- Onboarding follow-up. Anyone with un-ticked tasks shows up in the Onboarding tab; check the boxes as IT / Facilities / Training confirm completion. Each card shows a per-employee progress bar.
- Time-off Calendar. When clinical managers ask “who’s off in week 18?”, the calendar tab is the one-screen answer.
- Payroll / Loans. Around the 25th–28th: open the Payroll tab for the current month, generate or edit rows, then Export to Accounting once approved. Active loans deduct automatically through the regular payroll deductions field.
- Reviews & job-history. When a promotion or raise is approved, record it in Job History — that one action also updates the employee’s current position / department / salary, so the directory stays in sync.
Each tab, in one paragraph
- Dashboard — KPIs, top-10 by department + position bar charts, upcoming birthdays + work anniversaries (next 30 days). One-screen overview.
- Employees — directory; search by name / employee no / email; filter by department, role, branch, or grade. The employee form now carries optional Branch and Job Grade dropdowns (populated from Configuration); pick them so the directory groups people correctly and so payroll can default the salary band. Clicking + Employee still offers the 12-task onboarding checklist seeder.
- Org Chart — auto-built from
manager_id. Set each employee’s manager and the tree appears automatically with three depth-color tiers. - Recruitment — applicant funnel: open → screening → interview → offered → hired/rejected/closed.
- Onboarding — per-employee checklist with progress bar; tick off tasks as they’re done.
- Exit — resignation / termination ledger. Setting a last working day automatically marks the employee as
terminated. - Leave / Attendance / Shifts — request → approve workflow, daily attendance records, shift schedule library. The shift form now has a Shift Template dropdown at the top — pick one (Morning / Afternoon / Night, defined under Configuration) and the name + start + end auto-fill so you only type once per template.
- Leave Balances — annual entitlement vs used per (employee, year, type), with a usage bar that turns amber at 80% and red at 100%.
- Time-off Calendar — month view with each leave coloured by type (annual blue, sick red, personal amber, maternity pink, unpaid grey), with pending leaves rendered semi-transparent.
- Birthdays — split view of upcoming birthdays + work anniversaries (next 30 days only).
- Credentialing — clinical licenses with their issuing authority and expiry. Critical for regulatory inspection.
- Training — BLS, ACLS, fire safety, infection control, HIPAA, etc. Each row is colour-tagged by type for quick scan.
- Occupational Health (Vaccinations) — HBV series, MMR, Tdap, flu, COVID-19, TB screening with
resultand lot numbers. - Reviews — annual / quarterly review record with 1-5 star rating, KPI score, strengths, areas to improve, goals, status.
- Disciplinary — formal action trail (verbal → written → PIP → suspension → termination) with reason, action date, and outcome.
- Contracts / Documents — employee contracts + uploaded documents (ID, certificates, etc) with expiry alerts.
- Payroll / Doctor Shares — monthly compute, export to Accounting. The payroll form now has Allowance Type and Deduction Type pickers (catalogs from Configuration); selecting an allowance prefills Bonus with its default amount, selecting a deduction prefills Deductions. You can still override either number after the prefill.
- Loans — salary advances + employee loans, with automatic monthly deduction tracking.
- Reports — date-range attendance summary (present / absent / late / half-day rollup).
- Job History — promotion / transfer / raise log. Every entry also pushes through to the employee record so the directory stays accurate.
- Assets — physical items issued (badge, locker, scrubs, laptop, parking permit, vehicle); ensure all return on exit.
- Company Setup (under the Configuration section) — the one-time setup tab. Sub-sections in the left rail: Company Identity, Workforce Defaults, Branches, Job Grades, Shift Templates, Public Holidays, Leave Policies, Overtime Rules, Allowance Types, Deduction Types. See the next subsection for what each is for and when to touch it.
Configuration — the one-time setup tab
Configuration is where you tell the system how this company runs people: the legal name on every payslip, which days are weekends, which grades pay what, when the public holidays are, what allowances and deductions exist. You set these once at go-live, revise occasionally, and the rest of the kiosk reads from them. Everything in this tab is shared with Finance where it makes sense (legal name, working week, base currency).
| Sub-section | What it controls | When you touch it |
|---|---|---|
| Company Identity | Legal name, trade name, commercial registration #, employer #, logo, address, phone/email/website. Shared with Finance. | At go-live. Edit if the company rebrands or changes registration. |
| Workforce Defaults | Working week start (Sunday / Monday / Saturday), working days/week, working hours/day, default probation days, default notice days, end-of-service formula. | At go-live. Edit if labour law changes or a new entity gets a different work week. |
| Branches | Hospital sites / locations with their own address and manager. Each employee can be assigned a branch. | When you open a new site or shut one down. |
| Job Grades | Pay bands: code, level, min / mid / max salary, currency. Each employee can be assigned a grade so payroll knows the band. | When the comp committee rebases the salary structure (annual review). |
| Shift Templates | Named shifts (Morning 07:00–15:00, Afternoon 15:00–23:00, Night 23:00–07:00) with break minutes. | At go-live. Add a template per recurring shift pattern. The Shifts tab picks from this list. |
| Public Holidays | Calendar per year. Paid / Unpaid, Recurring (yearly) / One-off. | Once per year, ahead of the new calendar year. |
| Leave Policies | Per-grade entitlement: Annual, Sick, Maternity, Paternity, Hajj, Bereavement, Unpaid. Days/year, carryover max, min service months, paid flag. | At go-live. Edit when policy changes. |
| Overtime Rules | Multipliers per day type (Weekday ×1.5, Weekend ×2.0, Holiday ×2.5) and minimum-hours threshold. Seeded with industry defaults. | At go-live. Adjust to match the local labour ministry. |
| Allowance Types | Catalog: Housing, Transport, Phone, Meal, etc. Default amount, percent-of-basic, taxable flag. | At go-live. Add a new allowance whenever the comp policy adds one. The Payroll tab lets you pick from this list. |
| Deduction Types | Catalog: Loan, Advance, Fine, Tardiness, etc. Default amount, recoverable flag. | At go-live. Same idea — payroll picks from this list. |
The order on the left rail is the suggested go-live order: identity → workforce defaults → branches → grades → shifts → holidays → policies → rules → catalogs. Each step is independent — you can add branches before shift templates if you prefer — but later items often reference earlier ones (a leave policy can target a grade, so define grades first).
Notification triggers (HR-relevant)
- Pending leave → counter on the Leave tab; clears when you approve / reject.
- Expiring credential → red banner above the tab list when any active credential is within its alert window (default 60 days).
- Expiring training → amber banner ditto.
- Expiring contract → amber banner ditto.
- Disciplinary follow-up → counter on the Disciplinary tab badge for any action with
status='open'. - Onboarding pending → counter on the Onboarding tab badge for any unchecked task across any employee.
Common pitfalls
- Ignoring the alert window on credentials. A clinical license is meaningless to a regulator the day after it expires. The default 60-day alert is generous; some jurisdictions require longer. Override
alert_daysper credential when you know the issuing authority’s renewal lead time is longer than 60. - Forgetting to set the manager. Without
manager_id, the Org Chart tab is empty. Backfill by editing each employee and picking their manager. - Setting last-working-day on a future date and assuming the employee is still active. Recording an exit with
last_working_dayset immediately marks the employeeterminatedeven if the date is in the future. If you want to keep the employee active until that date arrives, leavelast_working_dayblank until the day-of and then update. - Editing the employee’s salary directly to record a raise. This loses history. Use Job History → + Promotion / Change instead — it captures from-salary, to-salary, effective date AND updates the employee record.
- Recording leave used outside the Leave tab. Leave Balances tab tracks entitled vs used; you have to bump the
usednumber manually since leave_requests and leave_balances are not auto-linked yet.