Risk Management Skill
When to Use
- Building or updating a risk management file for a medical device (SaMD or hardware)
- Creating hazard analysis, risk estimation, risk evaluation, or FMEA worksheets
- Generating risk acceptability matrices (5x5 severity x probability)
- Documenting risk controls and residual risk assessment
- Preparing ISO 14971-compliant documentation for regulatory submissions
- Populating risk records for design reviews or audits
When NOT to Use
- General project risk management (schedule, budget) -- this is for patient safety risk
- Cybersecurity-only risk assessment (for cybersecurity risk, use IEC 80001-1 series (network security) or AAMI TIR57; for industrial controls, reference IEC 62443)
- When you need a full Risk Management Plan (this generates the analysis, not the plan)
- Non-medical-device software where ISO 14971 does not apply
Quick Start
# Generate SpO2 AI example with all 8 sheets
python scripts/generate_risk_analysis.py --example spo2
# Generate blank template for a custom device
python scripts/generate_risk_analysis.py --device-name "Cardiac Monitor v2"
Output lands in output/risk-analysis-{device_name}.xlsx.
XLSX Structure -- 8 Sheets
1. Document_Control
| Row |
Content |
| 1 |
"Document Control" (merged header) |
| 3-6 |
Document Title, Version, Device/SW Version, Date Generated |
| 8 |
"Approval Signatures" (merged) |
| 9-12 |
Role / Name / Date / Signature (Prepared By, Reviewed By QA, Approved By Management) |
2. Hazard_Identification
| Column |
Description |
| Hazard ID |
HAZ-001, HAZ-002, ... |
| Hazard |
Source of potential harm |
| Hazardous Situation |
Circumstance of exposure |
| Harm |
Resulting injury or damage to health |
| Sequence of Events |
Chain from hazard to harm |
3. Risk_Estimation
| Column |
Description |
| Hazard ID |
Links to Hazard_Identification |
| Severity (S) |
S1-S5 scale |
| Probability (P) |
P1-P5 scale |
| Risk Level |
Formula: lookup from 5x5 matrix (Acceptable / AFAP / Unacceptable) |
4. Risk_Evaluation
| Column |
Description |
| Hazard ID |
Links to Risk_Estimation |
| Risk Level |
Pulled from Risk_Estimation |
| Acceptability |
Formula-driven from matrix lookup |
| Rationale |
Risk reduction rationale if AFAP zone |
5. Risk_Controls
| Column |
Description |
| Control ID |
RC-001, RC-002, ... |
| Hazard ID |
Links to Hazard_Identification |
| Control Measure |
Description of the risk control |
| Type |
inherent safety / protective measure / information for safety |
| Verification Method |
How effectiveness is verified |
6. Residual_Risk
| Column |
Description |
| Control ID |
Links to Risk_Controls |
| Hazard ID |
Links to Hazard_Identification |
| Post-Control Severity |
S1-S5 |
| Post-Control Probability |
P1-P5 |
| Residual Risk Level |
Formula: lookup from 5x5 matrix |
| Rationale |
Risk reduction rationale per ISO 14971:2019 (red-highlighted if AFAP zone and empty) |
7. Overall_Residual_Risk (ISO 14971 Clause 7)
| Column |
Description |
| Category |
Assessment area (Individual Risks, Interactions, Clusters, Benefit-Risk, Post-Market) |
| Description |
What is being assessed |
| Status |
Acceptable / Reviewed / Documented / Defined (or formula-driven) |
| Notes |
Detailed rationale and analysis |
Includes a summary formula row: "ACCEPTABLE -- Proceed to release" or "REVIEW REQUIRED -- Resolve open items"
Note: This is a process FMEA for identifying failure modes and prioritizing design improvements.
RPN (Risk Priority Number) is not a valid patient risk acceptability metric per ISO 14971:2019 Annex G
— ordinal scale multiplication does not yield meaningful risk levels. Patient risk acceptability is
determined solely by the 5×5 severity × probability matrix on sheets 3-6. Do not use RPN values
for regulatory risk acceptability decisions.
8. FMEA
| Column |
Description |
| Hazard ID |
Links to Hazard_Identification |
| Failure Mode |
How the function fails |
| Effect |
Consequence of failure |
| Cause |
Root cause |
| Severity (S) |
1-10 scale |
| Occurrence (O) |
1-10 scale |
| Detection (D) |
1-10 scale |
| RPN |
Formula: =SOD |
Severity / Probability Quick Reference
| Level |
Severity |
Probability |
| 1 |
S1 Negligible |
P1 Incredible (<1 in 1M) |
| 2 |
S2 Minor |
P2 Improbable (1 in 100K) |
| 3 |
S3 Serious |
P3 Remote (1 in 10K) |
| 4 |
S4 Critical |
P4 Occasional (1 in 1K) |
| 5 |
S5 Catastrophic |
P5 Frequent (>1 in 100) |
Risk Acceptability Matrix (5×5)
Defined in regulatory/risk-management/risk-acceptability-matrix.md (document-controlled).
Read that file for the current matrix. Do not hard-code criteria here — the matrix is owned by the Risk Management Plan.
Reference Files
references/iso14971-structure.md -- ISO 14971 process phases, required documents, key definitions
references/hazard-taxonomy.md -- Hazard categories per ISO 14971 Annex C, software-specific hazards
references/severity-probability.md -- Full scale definitions, matrix, FMEA mapping, AFAP criteria
Verification Checklist
Before submitting a risk management file, verify:
1---2name: risk-management3description: Medical device risk management workflow for ISO 14971-style hazard analysis, risk controls, benefit-risk reasoning, residual risk evaluation, and risk-management file preparation.4---56# Risk Management Skill78## When to Use9- Building or updating a risk management file for a medical device (SaMD or hardware)10- Creating hazard analysis, risk estimation, risk evaluation, or FMEA worksheets11- Generating risk acceptability matrices (5x5 severity x probability)12- Documenting risk controls and residual risk assessment13- Preparing ISO 14971-compliant documentation for regulatory submissions14- Populating risk records for design reviews or audits1516## When NOT to Use17- General project risk management (schedule, budget) -- this is for *patient safety* risk18- Cybersecurity-only risk assessment (for cybersecurity risk, use IEC 80001-1 series (network security) or AAMI TIR57; for industrial controls, reference IEC 62443)19- When you need a full Risk Management Plan (this generates the *analysis*, not the plan)20- Non-medical-device software where ISO 14971 does not apply2122## Quick Start2324```bash25# Generate SpO2 AI example with all 8 sheets26python scripts/generate_risk_analysis.py --example spo22728# Generate blank template for a custom device29python scripts/generate_risk_analysis.py --device-name "Cardiac Monitor v2"30```3132Output lands in `output/risk-analysis-{device_name}.xlsx`.3334## XLSX Structure -- 8 Sheets3536### 1. Document_Control37| Row | Content |38|-----|---------|39| 1 | "Document Control" (merged header) |40| 3-6 | Document Title, Version, Device/SW Version, Date Generated |41| 8 | "Approval Signatures" (merged) |42| 9-12 | Role / Name / Date / Signature (Prepared By, Reviewed By QA, Approved By Management) |4344### 2. Hazard_Identification45| Column | Description |46|--------|-------------|47| Hazard ID | HAZ-001, HAZ-002, ... |48| Hazard | Source of potential harm |49| Hazardous Situation | Circumstance of exposure |50| Harm | Resulting injury or damage to health |51| Sequence of Events | Chain from hazard to harm |5253### 3. Risk_Estimation54| Column | Description |55|--------|-------------|56| Hazard ID | Links to Hazard_Identification |57| Severity (S) | S1-S5 scale |58| Probability (P) | P1-P5 scale |59| Risk Level | Formula: lookup from 5x5 matrix (Acceptable / AFAP / Unacceptable) |6061### 4. Risk_Evaluation62| Column | Description |63|--------|-------------|64| Hazard ID | Links to Risk_Estimation |65| Risk Level | Pulled from Risk_Estimation |66| Acceptability | Formula-driven from matrix lookup |67| Rationale | Risk reduction rationale if AFAP zone |6869### 5. Risk_Controls70| Column | Description |71|--------|-------------|72| Control ID | RC-001, RC-002, ... |73| Hazard ID | Links to Hazard_Identification |74| Control Measure | Description of the risk control |75| Type | inherent safety / protective measure / information for safety |76| Verification Method | How effectiveness is verified |7778### 6. Residual_Risk79| Column | Description |80|--------|-------------|81| Control ID | Links to Risk_Controls |82| Hazard ID | Links to Hazard_Identification |83| Post-Control Severity | S1-S5 |84| Post-Control Probability | P1-P5 |85| Residual Risk Level | Formula: lookup from 5x5 matrix |86| Rationale | Risk reduction rationale per ISO 14971:2019 (red-highlighted if AFAP zone and empty) |8788### 7. Overall_Residual_Risk (ISO 14971 Clause 7)89| Column | Description |90|--------|-------------|91| Category | Assessment area (Individual Risks, Interactions, Clusters, Benefit-Risk, Post-Market) |92| Description | What is being assessed |93| Status | Acceptable / Reviewed / Documented / Defined (or formula-driven) |94| Notes | Detailed rationale and analysis |9596Includes a summary formula row: "ACCEPTABLE -- Proceed to release" or "REVIEW REQUIRED -- Resolve open items"9798> **Note:** This is a process FMEA for identifying failure modes and prioritizing design improvements.99> RPN (Risk Priority Number) is not a valid patient risk acceptability metric per ISO 14971:2019 Annex G100> — ordinal scale multiplication does not yield meaningful risk levels. Patient risk acceptability is101> determined solely by the 5×5 severity × probability matrix on sheets 3-6. Do not use RPN values102> for regulatory risk acceptability decisions.103104### 8. FMEA105| Column | Description |106|--------|-------------|107| Hazard ID | Links to Hazard_Identification |108| Failure Mode | How the function fails |109| Effect | Consequence of failure |110| Cause | Root cause |111| Severity (S) | 1-10 scale |112| Occurrence (O) | 1-10 scale |113| Detection (D) | 1-10 scale |114| RPN | Formula: =S*O*D |115116## Severity / Probability Quick Reference117118| Level | Severity | Probability |119|-------|----------|-------------|120| 1 | S1 Negligible | P1 Incredible (<1 in 1M) |121| 2 | S2 Minor | P2 Improbable (1 in 100K) |122| 3 | S3 Serious | P3 Remote (1 in 10K) |123| 4 | S4 Critical | P4 Occasional (1 in 1K) |124| 5 | S5 Catastrophic | P5 Frequent (>1 in 100) |125126## Risk Acceptability Matrix (5×5)127128Defined in `regulatory/risk-management/risk-acceptability-matrix.md` (document-controlled).129Read that file for the current matrix. Do not hard-code criteria here — the matrix is owned by the Risk Management Plan.130131## Reference Files132- `references/iso14971-structure.md` -- ISO 14971 process phases, required documents, key definitions133- `references/hazard-taxonomy.md` -- Hazard categories per ISO 14971 Annex C, software-specific hazards134- `references/severity-probability.md` -- Full scale definitions, matrix, FMEA mapping, AFAP criteria135136## Verification Checklist137138Before submitting a risk management file, verify:139140- [ ] Every hazard has a unique ID (HAZ-nnn)141- [ ] Every hazard traces through all 6 sheets (identification -> estimation -> evaluation -> control -> residual)142- [ ] Severity and probability values use the defined scales (S1-S5, P1-P5)143- [ ] Risk Level is calculated via formula, not hardcoded144- [ ] Every Unacceptable risk has at least one risk control145- [ ] Every risk control has a verification method146- [ ] Residual risk is re-evaluated after controls147- [ ] No residual risk remains Unacceptable148- [ ] AFAP decisions include documented rationale (risk reduced as far as possible per ISO 14971:2019)149- [ ] Process FMEA: RPN is calculated via formula (=S*O*D), not hardcoded (process prioritization only — not for patient risk acceptability)150- [ ] Process FMEA: RPNs above threshold (typically 100-150) have action items for design improvement151- [ ] Overall residual risk benefit-risk conclusion is documented