# INRS Method: Qualitative Inhalation Risk Assessment

## Overview

The INRS method is a qualitative control-banding approach for assessing the risk of inhalation of chemical agents, developed by the French National Research and Safety Institute (INRS). Unlike COSHH Essentials, which produces a categorical risk level, the INRS method calculates a continuous inhalation risk score as the product of five partial scores, each reflecting a different dimension of the exposure situation.

The final score is compared against three risk bands to determine the appropriate level of action.

## The five-factor cascade

Factor | Source | Score range
--- | --- | ---
Hazard potential | Hazard class (1–5) from H/R phrases, process or VLA | 1–10 000
Quantity × Frequency | Exposure potential class (0–5) | 1–10 000
Volatility / Dustiness | Physical state and conditions | 1, 10 or 100
Process type | Degree of containment | 0.001–1
Collective protection | Ventilation or enclosure | 0.001–10

The inhalation risk score is the product of all five:

    Score = Hazard_potential × Volatility × Process × Protection × FC_VLA

## Risk bands

Score | Risk band | Recommended action
--- | --- | ---
≤ 100 | Low | No modifications needed a priori
101–1 000 | Moderate | Corrective measures or detailed assessment likely needed
> 1 000 | Very high | Immediate corrective action required

## Step-by-step example

### 1. Hazard class

The hazard class (1–5) is determined from H phrases, R phrases, material and process type, or VLA. The method explores from class 5 downwards and returns the first match. If nothing matches classes 2–5, class 1 is assigned by default.

    # From H phrases
    inrs_hazard_class(h_phrases = "H336")
    #> [1] "2"

    # From VLA
    inrs_hazard_class(vla = 0.05)   # <= 0.1 mg/m³ → class 5
    #> [1] "5"
    inrs_hazard_class(vla = 50)     # > 10 mg/m³   → class 1 (default)
    #> [1] "2"

### 2. Quantity and frequency classes

    inrs_quantity_class(5, "l")          # 5 litres → class 2
    #> [1] "2"
    inrs_frequency_class(3, "hours")    # 3 hours/day → class 3
    #> [1] "3"

### 3. Exposure potential

    inrs_potential_exposure_class("2", "3")   # → class 2
    #> [1] "2"
    inrs_potential_risk_score("2")        # → 10
    #> [1] 10

### 4. Volatility (liquid)

Two approaches are available:

    # From boiling point graph (official INRS Figure 2)
    inrs_liquid_volatility_graph(use_temperature = 20, boiling_point = 111)
    #> [1] "2"

    # From vapour pressure (Table 8 thresholds: 0.5 kPa / 25 kPa)
    inrs_liquid_volatility_pressure(vapour_pressure = 5)
    #> [1] "2"

For solids, dustiness is classified by description:

    inrs_solid_dustiness("Fine dust with little visible dispersion")
    #> [1] "2"

### 5. Process and collective protection

    inrs_process_type("Open")
    #>   class score
    #> 2     3   0.5
    inrs_collective_protection("Moderate dispersion conditions")
    #>   class score
    #> 3     3   0.7

### 6. VLA correction factor

    inrs_oel_correction_factor(vla = 50)    # VLA > 0.1 → FC = 1
    #> [1] 1
    inrs_oel_correction_factor(vla = 0.05)  # VLA <= 0.1 → FC = 10
    #> [1] 10

### 7. Final inhalation risk score

    inrs_inhalation_risk(
      potential_risk_score  = 10,
      volatility_score      = 10,
      procedure_score       = 0.5,
      protection_score      = 0.7,
      vla_correction_factor = 1
    )
    #> [1] 35

### 8. Risk characterisation

    inrs_risk_characterisation(35)
    #> [1] "1 - Risk appears low a priori (no modifications needed)"
    inrs_risk_characterisation(500)
    #> [1] "2 - Moderate risk (corrective measures and/or more detailed assessment likely needed)"
    inrs_risk_characterisation(5000)
    #> [1] "3 - Very high risk (immediate corrective action required)"

## Full assessment in one call

    inrs_evaluate(
      name             = "Toluene",
      h_phrases        = "H336",
      vla              = 50,
      quantity_value   = 5,
      quantity_unit    = "l",
      frequency_value  = 3,
      frequency_unit   = "hours",
      substance_type   = "liquid",
      liquid_method    = "graph",
      use_temperature  = 20,
      boiling_point    = 111,
      procedure        = "Open",
      protection       = "Moderate dispersion conditions"
    )
    #>   product hazard_class quantity_class frequency_class potential_exposure_class
    #> 1 Toluene            2              2               3                        2
    #>   potential_risk_class potential_risk_score volatility_dustiness_class
    #> 1                    1                    1                          2
    #>   volatility_dustiness_score procedure_class procedure_score protection_class
    #> 1                         10               3             0.5                3
    #>   protection_score vla_correction_factor inhalation_risk
    #> 1              0.7                     1             3.5
    #>                                     risk_characterisation
    #> 1 1 - Risk appears low a priori (no modifications needed)

## From Excel (no coding required)

    ruta <- system.file("plantillas", "plantilla_inrs.xlsx", package = "expoquimR")
    inrs_from_excel(ruta)

## Language

    expoquimr_lang("es")
    inrs_risk_characterisation(35)
    #> [1] "1 - Riesgo a priori bajo (sin necesidad de modificaciones)"
    inrs_risk_characterisation(5000)
    #> [1] "3 - Riesgo muy elevado (medidas correctoras inmediatas requeridas)"
    expoquimr_lang("en")

## Interactive application

    run_inrs()

The INRS Shiny application allows the user to evaluate up to 10 products in a single session. Results are displayed in two panels: a summary table with the key classes and the final risk score, and a collapsible detail panel showing all intermediate scores for audit purposes.

## References

- INRS. Evaluation du risque chimique par inhalation — Methode d’evaluation simplifiee du risque chimique. ND 2233. Available at: https://www.inrs.fr/