TGM Manager provides a comprehensive Root Cause Analysis system with support for multiple methodologies including 5 Whys and Fishbone diagrams, along with integrated CAPA (Corrective and Preventive Actions) management.
Overview¶
The RCA system supports:
- Multiple Methodologies - 5 Whys, Fishbone (Ishikawa), and hybrid approaches
- Evidence Tracking - Document evidence for each finding
- Risk Scoring - Likelihood and impact assessment for fishbone causes
- CAPA Integration - Create and track corrective/preventive actions
- Task Management - Assign and track CAPA tasks
- Dashboards - Analytics for RCA and CAPA performance
RCA Methodologies¶
| Methodology | Description |
|---|---|
FIVE_WHYS |
Iterative questioning to identify root causes |
FISHBONE |
Ishikawa diagram categorizing potential causes |
HYBRID |
Combination of multiple methodologies |
PARETO |
80/20 analysis for prioritization |
FAULT_TREE |
Logical analysis of failure paths |
RCA Statuses¶
| Status | Description |
|---|---|
DRAFT |
Initial creation, gathering information |
IN_PROGRESS |
Active analysis underway |
REVIEW |
Submitted for review |
APPROVED |
Analysis approved, ready for action |
CLOSED |
Analysis complete, actions verified |
REST API¶
RCA Management¶
Create RCA¶
POST /rca
Content-Type: application/json
{
"title": "Pump P-101 Bearing Failure Analysis",
"description": "Investigating recurring bearing failures",
"methodology": "FIVE_WHYS",
"problemStatement": "Pump P-101 has experienced 3 bearing failures in the last 6 months"
}
Required Role: ADMIN, MANAGER, or OPERATOR
Create RCA from Event¶
POST /rca/from-event/{eventId}?methodology=FIVE_WHYS
Creates an RCA linked to an existing event record.
Create RCA from Failure¶
POST /rca/from-failure/{failureId}?methodology=FISHBONE
Creates an RCA linked to an existing failure record.
Update RCA Status¶
PATCH /rca/{rcaId}/status?status=IN_PROGRESS
Required Role: ADMIN or MANAGER
Submit for Review¶
POST /rca/{rcaId}/submit-review
Get RCAs by Status¶
GET /rca/by-status?status=IN_PROGRESS&page=0&size=20
5 Whys Analysis¶
The 5 Whys methodology involves asking "why" iteratively to drill down to the root cause.
Add Why Question¶
POST /rca/{rcaId}/five-whys
Content-Type: application/json
{
"question": "Why did the bearing fail?",
"answer": "The bearing was running dry without lubrication",
"evidence": "Oil analysis showed no lubricant present in sample"
}
Response:
{
"data": {
"id": 1,
"rcaId": 10,
"whyNumber": 1,
"question": "Why did the bearing fail?",
"answer": "The bearing was running dry without lubrication",
"evidence": "Oil analysis showed no lubricant present in sample",
"isRootCause": false,
"isVerified": false
}
}
Get 5 Whys Chain¶
GET /rca/{rcaId}/five-whys
Returns the complete chain of why questions for an RCA.
Response:
{
"data": [
{
"id": 1,
"whyNumber": 1,
"question": "Why did the bearing fail?",
"answer": "The bearing was running dry",
"isRootCause": false
},
{
"id": 2,
"whyNumber": 2,
"question": "Why was the bearing running dry?",
"answer": "The automatic lubrication system was not working",
"isRootCause": false
},
{
"id": 3,
"whyNumber": 3,
"question": "Why was the lubrication system not working?",
"answer": "The lubricant reservoir was empty",
"isRootCause": false
},
{
"id": 4,
"whyNumber": 4,
"question": "Why was the reservoir empty?",
"answer": "There was no scheduled refill task",
"isRootCause": true
}
]
}
Mark as Root Cause¶
PATCH /rca/five-whys/{fiveWhyId}/root-cause?isRootCause=true
Required Role: ADMIN or MANAGER
Verify Why Answer¶
POST /rca/five-whys/{fiveWhyId}/verify
Required Role: ADMIN or MANAGER
Fishbone (Ishikawa) Analysis¶
The Fishbone diagram categorizes potential causes into standard categories.
Fishbone Categories¶
| Category | Description |
|---|---|
MAN |
People/personnel factors |
MACHINE |
Equipment/machinery factors |
METHOD |
Process/procedure factors |
MATERIAL |
Materials/supplies factors |
MEASUREMENT |
Measurement/inspection factors |
ENVIRONMENT |
Environmental factors |
Add Fishbone Cause¶
POST /rca/{rcaId}/fishbone
Content-Type: application/json
{
"category": "MACHINE",
"causeDescription": "Lubrication system failure",
"parentCauseId": null,
"likelihoodScore": 4,
"impactScore": 5
}
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
category |
string | Yes | Fishbone category |
causeDescription |
string | Yes | Description of the cause |
parentCauseId |
number | No | Parent cause for sub-causes |
likelihoodScore |
integer | No | Likelihood (1-5) |
impactScore |
integer | No | Impact (1-5) |
Get Fishbone Diagram¶
GET /rca/{rcaId}/fishbone
Returns causes grouped by category.
Response:
{
"data": {
"MACHINE": [
{
"id": 1,
"category": "MACHINE",
"causeDescription": "Lubrication system failure",
"likelihoodScore": 4,
"impactScore": 5,
"riskScore": 20,
"isRootCause": true
}
],
"METHOD": [
{
"id": 2,
"category": "METHOD",
"causeDescription": "No scheduled inspection",
"likelihoodScore": 3,
"impactScore": 4,
"riskScore": 12,
"isRootCause": false
}
]
}
}
Investigate Cause¶
Record investigation results for a fishbone cause.
POST /rca/fishbone/{causeId}/investigate
Content-Type: application/json
{
"investigationResult": "Confirmed - lubrication pump failed due to seized impeller",
"isRootCause": true
}
Get High-Risk Causes¶
GET /rca/{rcaId}/fishbone/high-risk?minScore=9
Returns causes with risk score (likelihood x impact) above the threshold.
CAPA Management¶
CAPA (Corrective and Preventive Actions) are linked to RCAs to address root causes.
CAPA Types¶
| Type | Description |
|---|---|
CORRECTIVE |
Fixes the current problem |
PREVENTIVE |
Prevents future occurrences |
IMPROVEMENT |
General improvement action |
CAPA Statuses¶
| Status | Description |
|---|---|
DRAFT |
Being defined |
OPEN |
Approved and in progress |
IN_PROGRESS |
Work actively underway |
PENDING_VERIFICATION |
Completed, awaiting verification |
VERIFIED |
Effectiveness verified |
CLOSED |
Complete |
CANCELLED |
Cancelled |
Create CAPA¶
POST /rca/capa
Content-Type: application/json
{
"title": "Implement Lubrication Schedule",
"type": "PREVENTIVE",
"actionPlan": "Create monthly lubrication inspection task",
"dueDate": "2024-02-15",
"assigneeId": 5,
"priority": "HIGH"
}
Create CAPA from RCA¶
POST /rca/{rcaId}/capa
Content-Type: application/json
{
"type": "CORRECTIVE",
"title": "Replace Failed Lubrication Pump",
"actionPlan": "Order and install new lubrication pump"
}
Update CAPA Status¶
PATCH /rca/capa/{capaId}/status?status=IN_PROGRESS
Verify CAPA Effectiveness¶
POST /rca/capa/{capaId}/verify
Content-Type: application/json
{
"effectivenessRating": 4,
"evidence": "No bearing failures in 3 months since implementation"
}
Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
effectivenessRating |
integer | Yes | Rating 1-5 |
evidence |
string | Yes | Evidence of effectiveness |
Get CAPAs by Status¶
GET /rca/capa/by-status?status=OPEN&page=0&size=20
Get Overdue CAPAs¶
GET /rca/capa/overdue
Get CAPAs Due Soon¶
GET /rca/capa/due-soon?days=7
CAPA Tasks¶
Add Task to CAPA¶
POST /rca/capa/{capaId}/tasks?assigneeId=8
Content-Type: application/json
{
"title": "Order replacement pump",
"description": "Contact supplier and place order",
"dueDate": "2024-02-01"
}
Complete CAPA Task¶
POST /rca/capa/tasks/{taskId}/complete
Content-Type: application/json
{
"completionNotes": "Pump ordered, delivery expected Feb 5"
}
Dashboards¶
RCA Dashboard¶
GET /rca/dashboard
Response:
{
"data": {
"totalRCAs": 45,
"byStatus": {
"DRAFT": 5,
"IN_PROGRESS": 12,
"REVIEW": 3,
"APPROVED": 8,
"CLOSED": 17
},
"byMethodology": {
"FIVE_WHYS": 25,
"FISHBONE": 15,
"HYBRID": 5
},
"avgCompletionDays": 14.5,
"rootCausesIdentified": 38
}
}
CAPA Dashboard¶
GET /rca/capa/dashboard
Response:
{
"data": {
"totalCAPAs": 62,
"byStatus": {
"OPEN": 15,
"IN_PROGRESS": 20,
"PENDING_VERIFICATION": 8,
"VERIFIED": 12,
"CLOSED": 7
},
"byType": {
"CORRECTIVE": 30,
"PREVENTIVE": 25,
"IMPROVEMENT": 7
},
"overdueCount": 5,
"dueSoonCount": 12,
"avgEffectivenessRating": 3.8
}
}
Enums Reference¶
GET /rca/enums/methodologies
GET /rca/enums/fishbone-categories
GET /rca/enums/capa-types
Usage Examples¶
Complete 5 Whys Analysis¶
# Create RCA from failure
curl -X POST "http://localhost:1337/rca/from-failure/123?methodology=FIVE_WHYS" \
-H "Authorization: Bearer $JWT"
# Add first why
curl -X POST http://localhost:1337/rca/1/five-whys \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"question": "Why did the conveyor stop?",
"answer": "Motor overheated and tripped",
"evidence": "Thermal relay was triggered"
}'
# Continue adding whys until root cause found
# ...
# Mark root cause
curl -X PATCH "http://localhost:1337/rca/five-whys/5/root-cause?isRootCause=true" \
-H "Authorization: Bearer $JWT"
Fishbone Analysis¶
# Add causes to different categories
curl -X POST http://localhost:1337/rca/1/fishbone \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"category": "MAN",
"causeDescription": "Operator did not notice warning light",
"likelihoodScore": 3,
"impactScore": 4
}'
# Get the complete diagram
curl -X GET http://localhost:1337/rca/1/fishbone \
-H "Authorization: Bearer $JWT"
Creating CAPA Actions¶
# Create CAPA from RCA
curl -X POST http://localhost:1337/rca/1/capa \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"type": "PREVENTIVE",
"title": "Install high-temperature alarm",
"actionPlan": "Install audible alarm connected to motor temperature sensor"
}'
# Add tasks
curl -X POST "http://localhost:1337/rca/capa/1/tasks?assigneeId=5" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"title": "Procure temperature sensor",
"dueDate": "2024-02-10"
}'
Best Practices¶
- Start with clear problem statements - Define the issue precisely
- Gather evidence - Document findings at each step
- Use appropriate methodology - 5 Whys for simple issues, Fishbone for complex
- Score risks objectively - Use consistent criteria for likelihood/impact
- Create actionable CAPAs - Specific, measurable, assigned, time-bound
- Verify effectiveness - Follow up to confirm actions worked
- Learn and share - Use dashboards to identify patterns