Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Health Screen v 19.0
  4. Sales Conditions FAQ

Health Screen

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 29
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Platform Core
• Face Kiosk Attendance
• EH HR Compatibility
Lines of code 4841
Technical Name eh_hr_health_screen
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
Kiosk health declaration for face attendance

Health Screen for Face Kiosk

A configurable yes or no health declaration that runs at the attendance kiosk before face capture, denies entry on flagged answers, and keeps a snapshotted audit row of every declaration.

Free · LGPL-3Odoo 19 CommunityLGPL-3v1.0.0
DENY ON YES
ANSWER SNAPSHOT
PER-COMPANY CADENCE
TOKEN AUTH KIOSK
RETENTION CRON

Why this module

Health Screen for Face Kiosk

BEFORE FACE CAPTURE

The screen runs at the right moment

A kiosk shell hook intercepts the welcome screen the first time it appears, queries the health endpoint, and shows the questions before the face capture loop starts. A denied answer leaves the welcome screen hidden, so face capture never begins for that session.

AUDIT THAT HOLDS UP

Reword questions without breaking history

Each declaration stores a JSON snapshot of every question text, the yes or no answer, and the deny on yes flag at submission time. Future rewordings of a question do not corrupt past audit rows. Declaration rows are create plus delete only for managers and auditors, never editable.

SCOPED AND SELF-HOSTED

Per company, no phone home

Questions and declarations are isolated by global company record rules, cadence and retention are per company settings, and questions with no company apply database wide. Endpoints authenticate with the kiosk device token and are rate limited. Runs entirely on your own Odoo.

Day in the life

A reception tablet on a shift change

An employee taps to clock in. Before the camera engages, the kiosk shows the active questions for that device's company. They answer no to feeling unwell, yes to fit for work, and submit. The server snapshots the answers, records an allowed declaration, logs a kiosk event, and the welcome screen returns so face capture proceeds. Had any deny on yes question been answered yes, the kiosk would have shown an entry not permitted screen, recorded a denied declaration, and held face capture. With once per day cadence, the next tap that day skips straight to the camera. A nightly cron deletes declarations past the company's retention horizon.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

TIMEZONE DAY BOUNDARY

Once per day cadence computes the local day start from the company partner timezone, converts it to UTC, and searches allowed declarations from that boundary, so a single declaration covers the full local day rather than a rolling 24 hours.

UNKNOWN TIMEZONE

If the company timezone string is missing or invalid, the day boundary calculation falls back to UTC instead of raising, so the cadence check never breaks the kiosk.

CRON BATCH ISOLATION

The retention sweep walks companies one at a time, applies each company's own horizon (default 365 days), and stops at a batch limit of 2000 deletions per run so a large backlog does not run unbounded, reporting progress to ir.cron when invoked as a job.

MULTI-COMPANY SCOPING

Global ir.rule records scope questions and declarations to company_ids, while a question with no company set is visible to every company, so shared and company-specific questions coexist.

SNAPSHOT IMMUTABILITY

The answer snapshot stores the question text as it read at submission, so editing or deactivating a question later does not alter historical declaration rows. Declaration fields are readonly with no write access in the security matrix.

MALFORMED SUBMISSIONS

The submit endpoint tolerates non-list bodies with a 400, skips entries that are not dicts or carry non-integer question ids, and ignores ids that do not resolve to an existing question, recording only valid answers.

RATE LIMITED ENDPOINTS

Both kiosk endpoints throttle by device token or client IP (120 reads, 60 submits) and reject calls without a valid active device token with a 401, so a public route is not an open door.

What is inside

Built to do the job, end to end.

  • Two models, one snapshot. eh.hr.health.question holds the prose, sequence, deny on yes flag, active flag, and optional company. eh.hr.health.declaration holds one row per submission with the JSON answer snapshot, allowed or denied decision, kiosk site and device links, company, and a computed reference name.
  • Two token-auth endpoints. GET /eh_hr/kiosk/health/questions returns the active questions, enabled flag, and cadence for the device's company. POST /eh_hr/kiosk/health/submit takes an array of answers, snapshots them, sets allowed or denied, creates the declaration, and logs a kiosk event.
  • Kiosk shell hook. A template inherit injects the health stylesheet and script into the face kiosk shell. The script builds the question and deny screens, intercepts the welcome screen via a mutation observer, and resolves to proceed or block based on the server decision and cadence.
  • Company settings and cron. Three company fields (enable, cadence, retention days) surface in Settings via related config fields. A daily code cron runs the retention sweep. Four health questions ship seeded inactive for the operator to activate and reword.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is a kiosk add-on, not standalone. It requires eh_hr_attendance_base, eh_hr_face_kiosk, and eh_hr_core, and it hooks the existing face kiosk shell rather than providing its own attendance device.
  • Declarations are created at submission time, which runs before face identification, so declaration rows are not automatically linked to an employee. The employee field exists but is populated only if a flow sets it.
  • A deny outcome records a denied declaration, logs a kiosk event, and holds face capture client side. It does not create a separate attendance exception record or send a notification.
  • Questions are yes or no only. There are no free-text question answers, scoring, conditional branching, or weighting.
  • The once per day skip relies on a client side localStorage marker for the every clock in versus once per day decision in the browser, alongside the server side already declared check. A cleared kiosk browser cache resets that local marker.
  • Retention is a hard delete by company horizon. There is no archive, export, or soft delete of swept declarations.
  • The module supplies the declaration mechanism and audit trail. It is not medical advice and does not assess fitness for work beyond recording the answers the operator's questions ask.
Search

odoo kiosk health declaration, attendance health screening odoo, fitness for work declaration, deny entry attendance kiosk, covid screening odoo hr, health questionnaire face kiosk, notifiable illness check, odoo 19 community attendance health, workplace safety screen, hr attendance health declaration, health declaration audit trail, per company health screen cadence, kiosk health questions, self hosted hr health screen

Work with ERP Heritage

Need this fitted to the way you work?

ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.

ERP Heritage

Production-grade Odoo HR, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by ERP Heritage - Odoo Implementation

v1.0.0 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with