Principles of HACCP
HACCP is based on seven internationally recognized principles:
- Conduct a Hazard Analysis.
- Determine Critical Control Points (CCPs).
- Establish Critical Limits.
- Establish Monitoring Procedures.
- Establish Corrective Actions.
- Establish Verification Procedures.
- Establish Documentation and Record-Keeping.
These principles provide a structured framework for controlling hazards throughout food production.
/* Smooth transition for active tab content switching */
.form-section { display: none; }
.form-section.active { display: block; }
CFIA FSEP Fills
Form 1: Product Description
Establish fundamental biological and mechanical realities for product handling.
Form 2: List of Ingredients & Incoming Materials
Isolate tracking of raw meats, dry inputs, non-food processing aids, or dynamic packaging specs.
| Category / Raw Materials | Approved Supplier Source | Actions |
|---|---|---|
Form 3: Process Flow Diagram
Map visual production sequence pipelines cleanly inside file management layers.
Supports PDF, PNG, JPG up to 15MB
Form 4: Plant Schematic
Cross-check hygiene installations against strict internal operational blueprints.
Supports CAD PDF, PNG, JPG files
Form 5: Biological Hazard Identification
List biological pathogens (e.g., Salmonella, Listeria monocytogenes) linked to incoming materials or processes.
| Identified Biological Hazard | Step Where Controlled | Actions |
|---|---|---|
Form 6: Chemical Hazard Identification
Isolate and control systemic risk from allergens, sanitizer residues, or packaging toxins.
| Column 1: Chemical Hazards Identified | Column 2: Controlled Processing Step | Actions |
|---|---|---|
Form 7: Physical Hazard Identification
Identify risks from foreign bodies like metal fragments, glass shards, or plastic pieces.
| Identified Physical Hazard | Step Where Controlled | Actions |
|---|---|---|
Form 8: CCP Determination & Control Measures
Document the logical decision tree path applied to confirm Critical Control Points (CCPs).
| Process Step / Hazard | Q1 to Q4 Answers / Justification | Is it a CCP? | Actions |
|---|---|---|---|
| Yes (CCP)No (PRP / PC) |
Form 9: Hazards Not Controlled by the Establishment
Detail risk components out of direct operational facility scope (e.g., down-chain logistical failures).
| Column 1: External Hazards Beyond Direct Control | Column 2: Alternative Controls / Consumer Signposting | Actions |
|---|---|---|
Form 10: Critical Control Points (CCP) Summary
Compile your definitive list of designated CCP steps and identified thresholds.
| CCP ID Number | Description of Step & Critical Limits | Actions |
|---|---|---|
Form 11: Process Controls Master Matrix
Complete critical tracking definitions across the 7 mandatory regulatory evaluation checkpoints.
| Col 1: PC / CCP ID | Col 2: Hazard Description | Col 3: Standard / Limits | Col 4: Monitoring Setup | Col 5: Corrective Actions | Col 6: Verification Path | Col 7: HACCP Logs | × |
|---|---|---|---|---|---|---|---|
// Multi-step tab swapper mechanism
function switchSection(sectionId) {
// Hide all structural tabs
document.querySelectorAll(‘.form-section’).forEach(el => el.classList.remove(‘active’));
// Show target form block
document.getElementById(sectionId).classList.add(‘active’);
// Adjust active styling indicators inside the navigation menu sidebar
document.querySelectorAll(‘.nav-btn’).forEach(btn => {
btn.classList.remove(‘bg-blue-50’, ‘text-blue-700’, ‘border-l-4’, ‘border-blue-600’);
btn.classList.add(‘text-gray-600’, ‘hover:bg-gray-50’, ‘border-transparent’);
});
// Highlight current trigger element
const clickedBtn = Array.from(document.querySelectorAll(‘.nav-btn’)).find(btn => btn.getAttribute(‘onclick’).includes(sectionId));
if(clickedBtn) {
clickedBtn.classList.remove(‘text-gray-600’, ‘hover:bg-gray-50’, ‘border-transparent’);
clickedBtn.classList.add(‘bg-blue-50’, ‘text-blue-700’, ‘border-l-4’, ‘border-blue-600’);
}
}
// Dynamic Table Row Generation Helper Method
function addRow(tableId, columnsCount, useTextarea = false, isForm11 = false) {
const tableBody = document.getElementById(tableId).getElementsByTagName(‘tbody’)[0];
const newRow = tableBody.insertRow();
if (isForm11) {
// Customized dynamic template block generation specific to complex Form 11 structural matrix
newRow.className = “divide-y divide-gray-200 bg-white align-top”;
newRow.innerHTML = `
`;
return;
}
// Standard row builder logic for clean input groupings
for (let i = 0; i < columnsCount; i++) {
const cell = newRow.insertCell(i);
cell.className = "p-2";
// Route name arrays appropriately by tracking parent component specifications
const arrayKey = tableId.replace('table', '').toLowerCase();
if (tableId === 'tableForm8' && i === 2) {
cell.innerHTML = `Yes (CCP)No (PRP / PC)`;
} else if (useTextarea) {
cell.innerHTML = ``;
} else {
cell.innerHTML = “;
}
}
// Append explicit functional closure button elements to end of generated tracks
const actionCell = newRow.insertCell(columnsCount);
actionCell.className = “p-2 text-center”;
actionCell.innerHTML = ``;
}
// Functional entry remover trace method
function deleteRow(buttonElement) {
const row = buttonElement.closest(‘tr’);
const tbody = row.parentNode;
if (tbody.rows.length > 1) {
row.remove();
} else {
alert(“At least one target framework tracking row configuration context line must remain.”);
}
}
// JSON Data Parsing Controller Engine
function handleFormSubmit(event) {
event.preventDefault();
const formData = new FormData(event.target);
const planObject = {};
formData.forEach((value, key) => {
if (key.endsWith(‘[]’)) {
if (!planObject[key]) planObject[key] = [];
planObject[key].push(value);
} else {
planObject[key] = value;
}
});
console.log(“Structured Export Dataset Built for GIFSQ.com:”, planObject);
alert(“HACCP Plan Form Matrix Processed! Check your browser console logs to view parsed output.”);
}