{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","title":"Cleaning and disinfection plan (food hygiene)","description":"The plan in which a food operator lists, zone by zone and item by item, how often, how, with which product and by whom its premises and equipment are cleaned and disinfected, with an execution record (good hygiene practices, theme 1; annex II of Regulation (EC) 852/2004).","additionalProperties":false,"required":["profile","document","operator","responsible","zones","signatory"],"properties":{"profile":{"type":"string","enum":["plan","execution_record"],"description":"Which paper this is: the cleaning plan, or the execution record of a period."},"document":{"type":"object","additionalProperties":false,"required":["date","version","effective_date"],"properties":{"place":{"type":"string","description":"Place where the document is drawn up (optional)."},"date":{"type":"string","format":"date","description":"Date of the document."},"reference":{"type":"string","description":"Internal reference of the document (optional)."},"version":{"type":"string","minLength":1,"description":"Version of the plan."},"effective_date":{"type":"string","format":"date","description":"Date from which this version applies."},"purpose":{"type":"string","description":"Purpose of the plan, in the operator's words (optional)."},"scope":{"type":"string","description":"Scope of the plan, in the operator's words (optional)."}}},"operator":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the operator."},"enterprise_number":{"type":"string","description":"Belgian enterprise number (BCE / KBO) of the operator (optional)."},"establishment_unit_number":{"type":"string","description":"Establishment-unit number of the operator (optional)."},"address":{"type":"string","minLength":1,"description":"Address of the establishment."},"seat_region":{"type":"string","enum":["nl_region","fr_region","brussels","de_region"],"description":"Linguistic region of the operating seat (optional): Dutch-language region, French-language region, Brussels-Capital or German-language region. Nothing is compared with it."}}},"regime":{"type":"string","enum":["full_haccp","relaxed_haccp","good_hygiene_practices_only"],"description":"The self-checking regime the operator states it applies (optional)."},"responsible":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the person responsible for the plan."},"title":{"type":"string","description":"Function of the person responsible (optional)."}}},"zones":{"type":"array","minItems":1,"description":"The zones to clean.","items":{"type":"object","additionalProperties":false,"required":["zone","items"],"properties":{"zone":{"type":"string","minLength":1,"description":"Name of the zone, for example kitchen."},"items":{"type":"array","minItems":1,"description":"The items of the zone.","items":{"type":"object","additionalProperties":false,"required":["equipment_or_surface","frequency_stated","method","product","who"],"properties":{"equipment_or_surface":{"type":"string","minLength":1,"description":"Equipment or surface to clean."},"frequency_stated":{"type":"string","minLength":1,"description":"Frequency as the operator or the guide fixes it."},"method":{"type":"string","minLength":1,"description":"Method (steps) as the operator describes it."},"product":{"type":"string","minLength":1,"description":"Cleaning or disinfection product used."},"dosage_contact_time_stated":{"type":"string","description":"Dosage and contact time as the product label says, as the operator writes it (optional)."},"ppe":{"type":"string","description":"Protective equipment (optional)."},"who":{"type":"string","minLength":1,"description":"Person or function who cleans."},"verification":{"type":"string","description":"How and by whom the cleaning is verified (optional)."},"allergen_cleaning_and_check":{"type":"boolean","description":"Whether the equipment is cleaned and checked for visible residues before use without the allergen (optional)."}}}}}}},"products":{"type":"array","minItems":1,"description":"The cleaning and disinfection products (optional).","items":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the product."},"supplier":{"type":"string","description":"Supplier (optional)."},"sds_reference":{"type":"string","description":"Reference of the safety data sheet (optional)."},"food_contact_suitability_stated":{"type":"boolean","description":"Whether the supplier states the product suitable for food-contact surfaces (optional)."}}}},"records_to_keep":{"type":"array","minItems":1,"description":"The records the operator keeps (optional).","items":{"type":"string","minLength":1,"description":"A record kept."}},"revisions":{"type":"array","minItems":1,"description":"Revision history (optional).","items":{"type":"object","additionalProperties":false,"required":["version","date"],"properties":{"version":{"type":"string","minLength":1,"description":"Version."},"date":{"type":"string","format":"date","description":"Date of the revision."},"description":{"type":"string","description":"What changed (optional)."}}}},"record":{"type":"object","additionalProperties":false,"description":"The execution record (profile execution_record).","required":["period_from","period_to","rows"],"properties":{"period_from":{"type":"string","format":"date","description":"First day of the period of the record."},"period_to":{"type":"string","format":"date","description":"Last day of the period of the record."},"retention_stated":{"type":"string","description":"How long the operator keeps this record, in its own words (optional)."},"rows":{"type":"array","minItems":1,"description":"The cleaning rows of the period.","items":{"type":"object","additionalProperties":false,"required":["date","zone","done","initials"],"properties":{"date":{"type":"string","format":"date","description":"Date of the cleaning."},"zone":{"type":"string","minLength":1,"description":"Zone cleaned."},"done":{"type":"boolean","description":"Whether the cleaning was done."},"initials":{"type":"string","minLength":1,"description":"Initials of the person who cleaned."},"remark":{"type":"string","description":"Remark (optional)."}}}}}},"signatory":{"type":"object","additionalProperties":false,"required":["name","title"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the person who signs."},"title":{"type":"string","minLength":1,"description":"Function of the person who signs."}}}},"allOf":[{"if":{"properties":{"profile":{"const":"execution_record"}},"required":["profile"]},"then":{"required":["record"]}}]}