Jefferson County Public Health

       Sample Retail Food Establishment Inspection Report

 

 Note: Click on any violation to get a description of the public health significance of that violation.

 CRITICAL VIOLATIONS
 Related directly to food-borne illness.


 1. Food Source


a. Approved source
b. Wholesome; free of spoilage
c. Cross-contamination
d. HACCP plan


 2.Personnel


a. Personnel with infections restricted
b. Wounds properly covered
c. Hands washed as needed
d. Hygenic practices
e. Smoking; eating; drinking
f. Demonstration of Knowledge
g. Preventing food contamination from bare hands


 3. Food Temperature Control


a. Rapidly cool food to 41F or less
b. Rapidly reheat to 165F or greater
c. Hot hold at 135F or greater
d. Required cooking temperature
e. Cold hold at 41F or less
f. Use of food thermometer
g. Adequate equipment to maintain food temperatures


 4. Sanitization Rinse


a. Manual
b. Mechanical
c. In Place


 5. Water / Sewage / Plumbing Systems


a. Safe water source
b. Hot and cold water under pressure
c. Backflow, back siphonage
d. Sewage disposal


 6. Hand Washing and Toilet Facilities


a. Adequate number, location and design
b. Accessible
c. Soap and drying devices available


 7. Pest Control


a. Evidence of insects or rodents
b. Pesticide application
c. Animals prohibited


 8. Toxic Items


a. Properly stored
b. Properly labeled
c. Properly used

 NON-CRITICAL VIOLATIONS


 9. Food Labeling, Food Protection


a. Original container, properly labeled
b. Food protected from contamination


 10. Improper Equipment Design and Construction


a. Food contact surfaces
b. Non-food contact surfaces
c. Dishwashing facilities


11. Testing Devices


a. Refrigeration units provided with accurate, conspicuous thermometer
b. Dish machine provided with accurate thermometer and gauge cock
c. Chemical test kits provided; accessible


12. Improper Cleaning of Equipment and Utensils


a. Food contact surfaces
b. Non-food contact surfaces
c. Dishwashing operations
d. Wiping clothes


13. Utensils - Single Service Articles


a. Utensils provided; used/stored
b. Single service articles stored, dispensed, used
c. No reuse of single service articles


14. Physical Facilities


a. Plumbing installed/maintained

b.Garbage and refuse

c. Floors; walls; celings

d. Lighting

e.Ventilation

f. Locker rooms

g. Premises maintained

h. Separation of living; laundry

i. Restroom facilities


15. Other Operations


a. Personnel; authorized; clean clothes; hair restrained
b. Linen properly stored

 

 

 

 

 

 

 

 
 
 

 

 

 

 

return to top

 
 
tablishmentHistoryVO(); EstablishmentVO establishmentVO = new EstablishmentVO(); establishmentVO.setRevenueNumber(revenueNumber); establishmentVO = getEstablishment(connection, establishmentVO); establishmentHistoryVO.setEstablishmentVO(establishmentVO); establishmentHistoryVO.setfoodInspectionVOCollection(getFoodInspections(connection, revenueNumber)); closeConnection(connection); return establishmentHistoryVO; } /** * Retrieves all the inspections from the database for an establishment. * * @param connection Connection object which represents a connection to the * database * @param revenueNumber String object representing the revenue number (key) of the * establishment * * @return Collection object which contains the FoodInspectionVO value objects * which encapsulate all the information of a food inspection. * * @throws ServiceLocatorException is thrown if there is a problem connecting * to the database. * @throws DAOException is thrown if an error is detected in the database. */ private Collection getFoodInspections(Connection connection, String revenueNumber) throws ServiceLocatorException, DAOException { PreparedStatement stmt = null, violationStmt = null; ResultSet inspectionsResultSet = null; ArrayList inspectionsList = null; String inspectionsQuery = "SELECT * FROM folder " + "JOIN folderprocess on folder.folderrsn = folderprocess.folderrsn " + "JOIN folderprocessattempt on folderprocessattempt.processrsn = folderprocess.processrsn " + "JOIN validprocess on validprocess.processcode = folderprocess.processcode " + "WHERE (folderprocess.processcode = 52010 or folderprocess.processcode = 52015) " + "and folder.folderrsn = ? " + "ORDER BY attemptdate desc"; ResultSet violationResultSet = null; String violationQuery = "SELECT substr(validdeficiency.deficiencydesc, 1,3) as violationcode, " + "validdeficiencysubcategory.subcategorydesc, " + "folderprocessdeficiency.deficiencytext as violationNotes, " + "validdeficiency.deficiencycode, folderprocessdeficiency.datecomplied " + "from folderprocessdeficiency " + "join validdeficiency on validdeficiency.deficiencycode = folderprocessdeficiency.deficiencycode " + "join validdeficiencysubcategory on validdeficiencysubcategory.subcategorycode = validdeficiency.subcategorycode " + "WHERE folderprocessdeficiency.deficiencycode BETWEEN 52000 and 53500 " + "AND folderprocessdeficiency.processrsn = ? " + "ORDER BY violationcode"; try{ stmt = connection.prepareStatement(inspectionsQuery); stmt.setString(1, revenueNumber); inspectionsResultSet = stmt.executeQuery(); int processRsn = 0; violationStmt = connection.prepareStatement(violationQuery); inspectionsList = new ArrayList(); while(inspectionsResultSet.next()){ ArrayList nonCriticalViolations = new ArrayList(); ArrayList criticalViolations = new ArrayList(); ArrayList violationNotes = new ArrayList(); ArrayList comments = new ArrayList(); FoodInspectionVO foodInspectionVO = new FoodInspectionVO(); foodInspectionVO.setRevenueNumber(inspectionsResultSet.getString( "folderrsn")); DateTime dateTime = new DateTime(inspectionsResultSet.getTimestamp( "attemptdate")); foodInspectionVO.setInspectionDate(dateTime.getDate()); foodInspectionVO.setInspectionType(inspectionsResultSet.getString("processdesc")); processRsn = inspectionsResultSet.getInt("processrsn"); violationStmt.setInt(1, processRsn); violationResultSet = violationStmt.executeQuery(); String correct_date = ""; while(violationResultSet.next()){ ViolationVO violationVO = new ViolationVO(); violationVO.setViolationNumber(violationResultSet.getString("violationcode")); violationVO.setViolationDescription(violationResultSet.getString("subcategorydesc")); int deficiencycode = violationResultSet.getInt("deficiencycode"); violationVO.setViolationLink((String) FoodInspectionVariables.VIOLATION_LINKS.get(violationVO.getViolationNumber().trim())); DateTime dateTimecompile = new DateTime(violationResultSet.getTimestamp("datecomplied")); if (dateTimecompile.getDate() != null) { correct_date = "" + dateTimecompile.getDate(); } else { correct_date = ""; } violationVO.setViolationNotes(violationResultSet.getString("violationNotes")); violationVO.setViolationCorrected(correct_date); /* * Violations have a deficiency code between 52000 and 53335 * Comments have a deficiency code of 53340 * lzt 2.1.10 - new comment code is 53500 and new deficiency range is 53395 */ if(violationVO.getViolationNotes() != null){ if(deficiencycode <= 53395 ){ violationNotes.add(violationVO.getViolationNotes()); } else{ if(deficiencycode == 53500){ comments.add(violationVO.getViolationNotes()); } } } /* * Critial violations are between 52000 and 52710 * Non critical violations are between 52711 and 53335. * lzt 2.1.10 - dont want new items in the top table, just in the field notes section * so leave the range here as it was before */ if(deficiencycode > 52710 && deficiencycode <= 53335){ nonCriticalViolations.add(violationVO); } else{ if(deficiencycode <= 52710){ criticalViolations.add(violationVO); } } } foodInspectionVO.setCriticalViolationCollection(criticalViolations); foodInspectionVO.setCriticalcount(criticalViolations.size()); foodInspectionVO.setNonCriticalViolationCollection(nonCriticalViolations); foodInspectionVO.setNonCriticalcount(nonCriticalViolations.size()); foodInspectionVO.setViolationNotes(violationNotes); foodInspectionVO.setComments(comments); inspectionsList.add(foodInspectionVO); } } catch(SQLException sqlException){ throw new DAOException(sqlException.getMessage()); } return inspectionsList; } /** * Retrieves a specific establisment from the database. * * @param connection Connection object which represents a connection to the * database * @param establishmentVO EstablishmentVO value object which contains the * revenue number to retrieve from the database * * @return EstablishmentVO value object with the fields that have been updated * from the database * * @throws EstablishmentNotFoundDAOException is thrown if the establishment is * not found in the database for the revenue number in the EstablishmentVO * @throws ServiceLocatorException is thrown if there is a problem getting * the database connection * @throws DAOException is thrown if an error is detected in the database. */ private EstablishmentVO getEstablishment(Connection connection, EstablishmentVO establishmentVO) throws EstablishmentNotFoundDAOException, ServiceLocatorException, DAOException { PreparedStatement stmt = null; ResultSet establishmentResultSet = null; String establishmentQuery = "SELECT *, pi1.propinfovalue as propinfovalue1, pi2.propinfovalue as propinfovalue2 FROM (folder INNER JOIN folderproperty on folder.folderrsn = folderproperty.folderrsn)" + "INNER JOIN property ON folderproperty.propertyrsn = property.propertyrsn " + " LEFT OUTER JOIN propertyinfo pi1 " + " ON (pi1.propertyrsn = property.propertyrsn " + " AND pi1.propertyinfocode =230) " + " LEFT OUTER JOIN propertyinfo pi2 " + " ON (pi2.propertyrsn = property.propertyrsn " + " AND pi2.propertyinfocode =235) " + " where folder.folderrsn = ?"