| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3755 |
| Technical Name |
eh_hr_health_screen |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3755 |
| Technical Name |
eh_hr_health_screen |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Health Screen
A configurable health declaration step at the kiosk, run after device pairing and before the face capture loop. Yes on a flagged question denies entry, raises an exception, and records the full answer snapshot for audit. Operators write the prose; the framework handles the rest.
Day in the life
Approach the kiosk. Tap yes or no. Match face. Get on with the day.
A worker walks up. The kiosk loads the active questions for the company. Two questions today: feeling unwell, recent diagnosis. Two taps later, the kiosk records the answer snapshot, the decision is allowed, the face capture loop begins. Three days later a different worker taps yes on the unwell question; the kiosk shows a deny screen, raises an attendance exception, no face match runs, no attendance row is created. The supervisor sees the exception in their morning kanban and rings the worker.
Overview
What this module does, in one read.
eh_hr_health_screen slots a configurable health declaration into the kiosk welcome to capture transition.
Questions are yes or no, each carrying an optional deny on yes flag. Operators activate, reword, and reorder them in the standard list view. Cadence picks between every clock in or once per local day. Yes on a flagged question denies entry, raises an attendance exception, and records the answer snapshot frozen against the question text shown at the time. A daily retention cron prunes declaration rows past the configured horizon.
Capabilities
Eight things this module gives you, with no padding.
Configurable yes or no questions
eh.hr.health.question stores the prose, sequence, and a deny on yes flag. Operators reword and reorder freely; the kiosk picks up changes on the next page reload.
Deny entry on flagged answers
Yes on any deny on yes question records the declaration as denied, shows a deny screen, raises an attendance exception, and stops the face match. No row, no clock event, no ambiguity for the supervisor.
Two cadences
Every clock in or once per local day per company. Sites with morning starts run once per day; depots with multi shift comings and goings run every clock in. Pick by company; the kiosk reads the cadence on every kiosk hit.
Frozen answer snapshot
The declaration row stores the question text shown at submission time, not just a foreign key to the question. Reword the question next month for the next health concern; the historical declaration still shows what the worker actually answered.
Four seeded questions, inactive
Four sample questions are seeded inactive on install (unwell, diagnosis, close contact, and similar). Activate, edit, or delete; copy them as a starter and write your own. The seed is a starting template, not a default policy.
Raises attendance exceptions on deny
A denied declaration raises an attendance exception via the suite base's raise_exception() public API. The supervisor's morning kanban shows the deny without HR keying anything in.
Daily retention sweep
A daily cron deletes declaration rows past the company's configured retention horizon. Sensitive health data leaves the database without operator action; the audit window is set, kept, and closed automatically.
Timezone aware once per day
"Once per day" resolves the local day in the company's timezone, not the server's. A worker who clocks in just past midnight in their timezone gets their declaration on the new local day.
Frequently asked questions
Honest answers to the questions a buyer asks.
Are the seeded questions a default policy I should use?
No. They are a starting template, seeded inactive. The policy text is the operator's responsibility; legal, WHS, or industry guidance should drive the wording. Activate after editing.
What happens if a worker rewords the answer later?
They cannot. The declaration row is read only after submission. If a mistake was made, it raises a fresh declaration on the next clock in; the supervisor reconciles with the worker, the audit trail keeps both rows.
What about workers who do not pass through a kiosk?
The current implementation hooks into the kiosk shell. Mobile and remote workers using the geofence module do not see the declaration today; that integration is a follow up.
How long are declarations kept?
Per the company's configured retention horizon, then deleted by a daily cron. Health information has a short useful life; the retention defaults reflect that.
Can a deny be overridden by a supervisor?
Not from the kiosk. A denied declaration cannot be auto reversed from the worker's side. A supervisor can manually create an attendance row in the backend if the policy allows; the deny declaration and the manual row both stay in the audit trail.
Please log in to comment on this module