Refactor previous name into dedicated service (#7571)
[openemr.git] / library / classes / rulesets / Cqm / reports / common / Immunizations.php
blob8deed443944ae314991a0927cde9de8375193184
1 <?php
3 // Copyright (C) 2011 Ken Chapple <ken@mi-squared.com>
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 class Immunizations
12 public static function checkDtap(CqmPatient $patient, $beginDate, $endDate)
14 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
15 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
16 $fourCount = array( Medication::OPTION_COUNT => 4, Medication::OPTION_UNIQUE_DATES => true );
17 if (
18 Helper::checkMed(Medication::DTAP_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $fourCount) &&
19 !( Helper::checkAllergy(Allergy::DTAP_VAC, $patient, $patient->dob, $endDate) ||
20 Helper::checkDiagActive(Diagnosis::ENCEPHALOPATHY, $patient, $beginDate, $endDate) ||
21 Helper::checkDiagActive(Diagnosis::PROG_NEURO_DISORDER, $patient, $beginDate, $endDate) )
22 ) {
23 return true;
26 return false;
29 public static function checkIpv(CqmPatient $patient, $beginDate, $endDate)
31 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
32 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
33 $threeCount = array( Medication::OPTION_COUNT => 3 );
34 if (
35 Helper::checkMed(Medication::IPV, $patient, $dobPlus42Days, $dobPlus2Years, $threeCount) &&
36 !( Helper::checkAllergy(Allergy::IPV, $patient, $patient->dob, $endDate) ||
37 Helper::checkAllergy(Allergy::NEOMYCIN, $patient, $patient->dob, $endDate) ||
38 Helper::checkAllergy(Allergy::STREPTOMYCIN, $patient, $patient->dob, $endDate) )
39 ) {
40 return true;
43 return false;
46 public static function checkMmr(CqmPatient $patient, $beginDate, $endDate)
48 $dobPlus1Year = date('Y-m-d 00:00:00', strtotime('+1 year', strtotime($patient->dob)));
49 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
50 $dateMinus2Years = date('Y-m-d 00:00:00', strtotime('-2 year', strtotime($endDate)));
51 if (
52 Helper::checkMed(Medication::MMR, $patient, $dobPlus1Year, $dobPlus2Years) ||
53 ( Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
54 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
55 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
56 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) &&
57 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
58 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
59 ( Helper::checkDiagResolved(Diagnosis::MEASLES, $patient, $patient->dob, $endDate) &&
60 Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
61 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
62 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
63 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
64 ( Helper::checkDiagResolved(Diagnosis::MUMPS, $patient, $patient->dob, $endDate) &&
65 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
66 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) &&
67 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
68 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
69 ( Helper::checkDiagResolved(Diagnosis::RUBELLA, $patient, $patient->dob, $endDate) &&
70 Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
71 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
72 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
73 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) ) &&
74 !( Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
75 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
76 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $beginDate, $endDate) ||
77 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $beginDate, $endDate) ||
78 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $beginDate, $endDate) ||
79 Helper::checkAllergy(Allergy::MMR, $patient, $patient->dob, $dateMinus2Years) ||
80 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $beginDate, $endDate) )
81 ) {
82 return true;
85 return false;
88 public static function checkHib(CqmPatient $patient, $beginDate, $endDate)
90 $options = array( Medication::OPTION_COUNT => 2 );
91 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
92 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
93 if (
94 Helper::checkMed(Medication::HIB, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
95 !Helper::checkAllergy(Allergy::HIB, $patient, $patient->dob, $endDate)
96 ) {
97 return true;
100 return false;
103 public static function checkHepB(CqmPatient $patient, $beginDate, $endDate)
105 $options = array( Medication::OPTION_COUNT => 3 );
106 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
107 if (
108 Helper::checkMed(Medication::HEP_B_VAC, $patient, $patient->dob, $dobPlus2Years, $options) ||
109 Helper::checkDiagResolved(Diagnosis::HEP_B, $patient, $patient->dob, $endDate) &&
110 !( Helper::checkAllergy(Allergy::HEP_B_VAC, $patient, $patient->dob, $endDate) ||
111 Helper::checkAllergy(Allergy::BAKERS_YEAST, $patient, $patient->dob, $endDate) )
113 return true;
116 return false;
119 public static function checkVzv(CqmPatient $patient, $beginDate, $endDate)
121 $options = array( Medication::OPTION_COUNT => 1 );
122 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
123 if (
124 Helper::checkMed(Medication::VZV, $patient, $patient->dob, $dobPlus2Years, $options) ||
125 ( Helper::checkDiagResolved(Diagnosis::VZV, $patient, $patient->dob, $endDate) &&
126 !( Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
127 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
128 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $beginDate, $endDate) ||
129 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $beginDate, $endDate) ||
130 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $beginDate, $endDate) ||
131 Helper::checkAllergy(Allergy::VZV, $patient, $patient->dob, $endDate) ||
132 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $beginDate, $endDate) ) )
134 return true;
137 return false;
140 public static function checkPheumococcal(CqmPatient $patient, $beginDate, $endDate)
142 $options = array( Medication::OPTION_COUNT => 4 );
143 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
144 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
145 if (
146 Helper::checkMed(Medication::PNEUMOCOCCAL_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
147 !Helper::checkAllergy(Allergy::PNEUM_VAC, $patient)
149 return true;
152 return false;
155 public static function checkHepA(CqmPatient $patient, $beginDate, $endDate)
157 $options = array( Medication::OPTION_COUNT => 2 );
158 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
159 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
160 if (
161 Helper::checkMed(Medication::HEP_A_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) ||
162 ( Helper::checkDiagResolved(Diagnosis::HEP_A, $patient, $patient->dob, $endDate) &&
163 !Helper::checkAllergy(Allergy::HEP_A_VAC, $patient, $patient->dob, $endDate) )
165 return true;
168 return false;
171 public static function checkRotavirus(CqmPatient $patient, $beginDate, $endDate)
173 $options = array( Medication::OPTION_COUNT => 4 );
174 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
175 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
176 if (
177 Helper::checkMed(Medication::ROTAVIRUS_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
178 !Helper::checkAllergy(Allergy::ROTAVIRUS_VAC, $patient, $patient->dob, $endDate)
180 return true;
183 return false;
186 public static function checkInfluenza(CqmPatient $patient, $beginDate, $endDate)
188 $options = array( Medication::OPTION_COUNT => 2 );
189 $dobPlus180Days = date('Y-m-d 00:00:00', strtotime('+180 day', strtotime($patient->dob)));
190 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
191 if (
192 Helper::checkMed(Medication::INFLUENZA_VAC, $patient, $dobPlus180Days, $dobPlus2Years, $options) &&
193 !( Helper::checkAllergy(Allergy::INFLUENZA_VAC, $patient, $patient->dob, $endDate) ||
194 Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $patient->dob, $endDate) ||
195 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $patient->dob, $endDate) ||
196 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $patient->dob, $endDate) ||
197 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $patient->dob, $endDate) ||
198 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $patient->dob, $endDate) ||
199 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $patient->dob, $endDate) )
201 return true;
204 return false;
207 public static function checkRotavirus_2014(CqmPatient $patient, $beginDate, $endDate)
209 $options = array( Medication::OPTION_COUNT => 2 );
210 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
211 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
212 if (
213 Helper::checkMed(Medication::ROTAVIRUS_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
214 !Helper::checkAllergy(Allergy::ROTAVIRUS_VAC, $patient, $patient->dob, $endDate)
216 return true;
219 return false;