> ## Documentation Index
> Fetch the complete documentation index at: https://code.dcycle.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Absenteeisms & Accidents

> Upload and manage workplace absence and accident records for health and safety reporting under ESRS S1

## What is absenteeism and accident data?

This section covers two related types of workplace health and safety data:

* **Absenteeisms**: Periods when an employee is absent from work (e.g., sick leave, work-related injury leave)
* **Accidents**: Workplace incidents that may or may not result in an absence

Together, these records are used to calculate health and safety KPIs required by **ESRS S1** and occupational health regulations.

## Why is it needed?

Organizations must report on workplace health and safety to demonstrate:

* **Accident frequency**: How often workplace incidents occur
* **Accident severity**: How much work time is lost due to accidents
* **Sick leave**: Overall absenteeism rates
* **Safety trends**: Whether conditions are improving or deteriorating

These metrics are required in sustainability reports and are closely monitored by labor inspectorates, insurers, and ESG rating agencies.

## Types of records

### Absenteeisms

An absenteeism records a **period of absence** from work. It captures:

* **Start date**: When the absence began
* **End date**: When the absence ended (or empty if ongoing)
* **Hours**: Total hours of absence (optional -- can be calculated from dates)

### Accidents

An accident records a **workplace incident**. It captures:

* **Date**: When the accident occurred
* **Context**: Where the accident happened

| Context      | Meaning                                                      |
| ------------ | ------------------------------------------------------------ |
| `in_labore`  | The accident occurred **at the workplace** during work hours |
| `in_itinere` | The accident occurred **while commuting** to or from work    |

### Combined records

Each uploaded record is either an absenteeism, an accident, or both (an accident that caused an absence). The `type` field determines which:

| Type                        | Contains                       | Description                                                    |
| --------------------------- | ------------------------------ | -------------------------------------------------------------- |
| `absenteeism`               | Absence dates and hours        | Sick leave or other absence not caused by a workplace accident |
| `accident`                  | Accident date and context      | Workplace incident that did not result in an absence           |
| `accident_with_absenteeism` | Both accident and absence data | Workplace incident that resulted in time off work              |

## Data structure

Absenteeism and accident records are linked to employees via the **External Employee ID**.

```
EMPLOYEE (EMP001)
  |
  +-- ABSENTEEISM: Sick leave (Jan 10-12, 2024, 24 hours)
  +-- ACCIDENT WITH ABSENTEEISM:
  |     Accident: In labore, Mar 5, 2024
  |     Absence: Mar 5-19, 2024, 80 hours
  +-- ACCIDENT: Near-miss in labore, Jul 22, 2024 (no absence)
```

<Note>
  Employees must already exist in the system before you can upload their absenteeism and accident records. Upload contract data first.
</Note>

## CSV format

| Column                 | Type    | Required    | Description                                                                                                     | Example       |
| ---------------------- | ------- | ----------- | --------------------------------------------------------------------------------------------------------------- | ------------- |
| `external_employee_id` | String  | Yes         | The employee's ID (must match an existing employee)                                                             | `EMP001`      |
| `type`                 | String  | Yes         | Record type: `absenteeism`, `accident`, or `accident_with_absenteeism`                                          | `absenteeism` |
| `start_date`           | Date    | Conditional | Absence start date (required for `absenteeism` and `accident_with_absenteeism`)                                 | `2024-01-10`  |
| `end_date`             | Date    | No          | Absence end date (empty if ongoing)                                                                             | `2024-01-12`  |
| `hours`                | Decimal | No          | Total hours of absence (>= 0)                                                                                   | `24.0`        |
| `accident_date`        | Date    | Conditional | When the accident occurred (required for `accident` and `accident_with_absenteeism`). Must be today or earlier. | `2024-03-05`  |
| `accident_context`     | String  | Conditional | `in_labore` or `in_itinere` (required for `accident` and `accident_with_absenteeism`)                           | `in_labore`   |

### Required fields by type

| Field                  | `absenteeism` | `accident` | `accident_with_absenteeism` |
| ---------------------- | :-----------: | :--------: | :-------------------------: |
| `external_employee_id` |    Required   |  Required  |           Required          |
| `type`                 |    Required   |  Required  |           Required          |
| `start_date`           |    Required   |     --     |           Required          |
| `end_date`             |    Optional   |     --     |           Optional          |
| `hours`                |    Optional   |     --     |           Optional          |
| `accident_date`        |       --      |  Required  |           Required          |
| `accident_context`     |       --      |  Required  |           Required          |

### Example CSV

```csv theme={"theme":{"light":"github-light","dark":"github-dark"}}
external_employee_id,type,start_date,end_date,hours,accident_date,accident_context
EMP001,absenteeism,2024-01-10,2024-01-12,24.0,,
EMP002,accident,,,,2024-03-05,in_labore
EMP003,accident_with_absenteeism,2024-04-15,2024-04-30,96.0,2024-04-15,in_labore
EMP001,absenteeism,2024-06-01,2024-06-03,16.0,,
EMP004,accident,,,,2024-07-22,in_itinere
EMP002,accident_with_absenteeism,2024-09-10,2024-09-12,16.0,2024-09-10,in_labore
```

## How to upload

<Steps>
  <Step title="Go to Data > Workforce > Absenteeisms & Accidents">
    Navigate to the **Workforce** section and select the **Absenteeisms & Accidents** tab.
  </Step>

  <Step title="Click Upload">
    Click the **Upload** button to open the data import interface.
  </Step>

  <Step title="Import your data">
    Paste from a spreadsheet, upload a CSV/Excel file, or enter data manually.
  </Step>

  <Step title="Review and confirm">
    The importer validates that:

    * Each `external_employee_id` matches an existing employee
    * The `type` field has a valid value
    * Required fields for the selected type are present
    * Accident dates are not in the future
    * End dates are on or after start dates
    * Hours are a valid positive number (if provided)

    Fix any errors, then confirm the upload.
  </Step>
</Steps>

## Viewing absenteeism and accident data

### List view

The list shows all uploaded records with:

* **Employee ID**: Which employee the record belongs to
* **Type**: Absenteeism, Accident, or Accident with Absenteeism
* **Dates**: Absence period or accident date
* **Hours**: Duration of absence (if applicable)
* **Context**: In labore or In itinere (for accidents)
* **Upload source**: Which file the record came from

You can **search** by Employee ID and **filter** by:

* Upload file
* Upload date range

### Employee detail view

From the employee detail page, the **Absenteeisms & Accidents** section shows all records for that specific employee.

## How it appears in reports

Absenteeism and accident data feeds into these report metrics:

### Accident metrics

| Metric                       | Calculation                                  | Description                         |
| ---------------------------- | -------------------------------------------- | ----------------------------------- |
| Total accidents              | Count of accident records                    | Number of workplace incidents       |
| Accidents in labore          | Count where context = `in_labore`            | Incidents at the workplace          |
| Accidents in itinere         | Count where context = `in_itinere`           | Incidents during commute            |
| Accidents with sick leave    | Count of `accident_with_absenteeism` records | Incidents that caused time off      |
| Accidents without sick leave | Count of `accident` records (no absence)     | Incidents with no time lost         |
| Accident frequency rate      | (Accidents x 1,000,000) / Hours worked       | Standardized rate per million hours |
| Accident severity rate       | (Lost days x 1,000) / Hours worked           | Lost days per thousand hours worked |

### Absenteeism metrics

| Metric                | Calculation                | Description                      |
| --------------------- | -------------------------- | -------------------------------- |
| Total absent days     | Sum of absence durations   | Total work time lost to absences |
| Absent days by gender | Grouped by employee gender | Gender breakdown of absences     |

<Note>
  Absent days from accidents directly affect the **FTE calculation**. Days absent are subtracted from the working days when computing full-time equivalents, giving a more accurate picture of actual workforce capacity.
</Note>

## Understanding accident context

### In labore

**In labore** accidents occur at the workplace during working hours. Examples:

* Slips, trips, and falls in the office or factory
* Injuries from machinery or equipment
* Ergonomic injuries (e.g., repetitive strain)
* Chemical exposure incidents

### In itinere

**In itinere** accidents occur during the employee's commute between home and work. Examples:

* Traffic accidents on the way to/from work
* Injuries on public transport
* Falls while walking to the workplace

<Info>
  The distinction between in labore and in itinere is legally significant in many jurisdictions and affects insurance coverage, liability, and reporting obligations.
</Info>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do employees need to exist before I upload absenteeisms?">
    Yes. The `external_employee_id` in each record must match an employee already uploaded through the contracts upload.
  </Accordion>

  <Accordion title="How do I record an accident that resulted in sick leave?">
    Use type `accident_with_absenteeism` and fill in both the accident fields (date, context) and the absence fields (start\_date, end\_date, hours).
  </Accordion>

  <Accordion title="What if an absence is ongoing?">
    Leave the `end_date` empty. You can update the record later when the absence ends.
  </Accordion>

  <Accordion title="Should I include non-work-related sick leave?">
    Yes. Use type `absenteeism` for general sick leave. This contributes to overall absenteeism metrics and affects FTE calculations. Only accident-related absences need the accident fields.
  </Accordion>

  <Accordion title="Can I have multiple absences and accidents for the same employee?">
    Yes. An employee can have any number of absenteeism and accident records.
  </Accordion>

  <Accordion title="What's the difference between hours and date range?">
    The date range (`start_date` to `end_date`) indicates when the absence occurred. The `hours` field specifies the actual hours missed, which may differ from the calendar duration (e.g., a 3-day absence for a part-time employee might be 12 hours, not 24).
  </Accordion>
</AccordionGroup>
