Highway to PSR2
[openemr.git] / library / classes / rulesets / Cqm / reports / common / Immunizations.php
blobb89a31fd7cc40cdf289ee9bcc6c8784f665dd31f
1 <?php
2 // Copyright (C) 2011 Ken Chapple <ken@mi-squared.com>
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
8 //
9 class Immunizations
11 public static function checkDtap(CqmPatient $patient, $beginDate, $endDate)
13 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
14 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
15 $fourCount = array( Medication::OPTION_COUNT => 4, Medication::OPTION_UNIQUE_DATES => true );
16 if (Helper::checkMed(Medication::DTAP_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $fourCount) &&
17 !( Helper::checkAllergy(Allergy::DTAP_VAC, $patient, $patient->dob, $endDate) ||
18 Helper::checkDiagActive(Diagnosis::ENCEPHALOPATHY, $patient, $beginDate, $endDate) ||
19 Helper::checkDiagActive(Diagnosis::PROG_NEURO_DISORDER, $patient, $beginDate, $endDate) ) ) {
20 return true;
23 return false;
26 public static function checkIpv(CqmPatient $patient, $beginDate, $endDate)
28 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
29 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
30 $threeCount = array( Medication::OPTION_COUNT => 3 );
31 if (Helper::checkMed(Medication::IPV, $patient, $dobPlus42Days, $dobPlus2Years, $threeCount) &&
32 !( Helper::checkAllergy(Allergy::IPV, $patient, $patient->dob, $endDate) ||
33 Helper::checkAllergy(Allergy::NEOMYCIN, $patient, $patient->dob, $endDate) ||
34 Helper::checkAllergy(Allergy::STREPTOMYCIN, $patient, $patient->dob, $endDate) ) ) {
35 return true;
38 return false;
41 public static function checkMmr(CqmPatient $patient, $beginDate, $endDate)
43 $dobPlus1Year = date('Y-m-d 00:00:00', strtotime('+1 year', strtotime($patient->dob)));
44 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
45 $dateMinus2Years = date('Y-m-d 00:00:00', strtotime('-2 year', strtotime($endDate)));
46 if (Helper::checkMed(Medication::MMR, $patient, $dobPlus1Year, $dobPlus2Years) ||
47 ( Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
48 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
49 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
50 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) &&
51 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
52 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
53 ( Helper::checkDiagResolved(Diagnosis::MEASLES, $patient, $patient->dob, $endDate) &&
54 Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
55 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
56 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
57 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
58 ( Helper::checkDiagResolved(Diagnosis::MUMPS, $patient, $patient->dob, $endDate) &&
59 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
60 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) &&
61 Helper::checkMed(Medication::RUBELLA_VAC, $patient, $patient->dob, $dobPlus2Years) &&
62 !Helper::checkAllergy(Allergy::RUBELLA_VAC, $patient, $patient->dob, $endDate) ) ||
63 ( Helper::checkDiagResolved(Diagnosis::RUBELLA, $patient, $patient->dob, $endDate) &&
64 Helper::checkMed(Medication::MUMPS_VAC, $patient, $patient->dob, $dobPlus2Years) &&
65 !Helper::checkAllergy(Allergy::MUMPS_VAC, $patient, $patient->dob, $endDate) &&
66 Helper::checkMed(Medication::MEASLES_VAC, $patient, $patient->dob, $dobPlus2Years) &&
67 !Helper::checkAllergy(Allergy::MEASLES_VAC, $patient, $patient->dob, $endDate) ) &&
68 !( Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
69 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
70 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $beginDate, $endDate) ||
71 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $beginDate, $endDate) ||
72 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $beginDate, $endDate) ||
73 Helper::checkAllergy(Allergy::MMR, $patient, $patient->dob, $dateMinus2Years) ||
74 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $beginDate, $endDate) ) ) {
75 return true;
78 return false;
81 public static function checkHib(CqmPatient $patient, $beginDate, $endDate)
83 $options = array( Medication::OPTION_COUNT => 2 );
84 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
85 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
86 if (Helper::checkMed(Medication::HIB, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
87 !Helper::checkAllergy(Allergy::HIB, $patient, $patient->dob, $endDate) ) {
88 return true;
91 return false;
94 public static function checkHepB(CqmPatient $patient, $beginDate, $endDate)
96 $options = array( Medication::OPTION_COUNT => 3 );
97 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
98 if (Helper::checkMed(Medication::HEP_B_VAC, $patient, $patient->dob, $dobPlus2Years, $options) ||
99 Helper::checkDiagResolved(Diagnosis::HEP_B, $patient, $patient->dob, $endDate) &&
100 !( Helper::checkAllergy(Allergy::HEP_B_VAC, $patient, $patient->dob, $endDate) ||
101 Helper::checkAllergy(Allergy::BAKERS_YEAST, $patient, $patient->dob, $endDate) ) ) {
102 return true;
105 return false;
108 public static function checkVzv(CqmPatient $patient, $beginDate, $endDate)
110 $options = array( Medication::OPTION_COUNT => 1 );
111 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
112 if (Helper::checkMed(Medication::VZV, $patient, $patient->dob, $dobPlus2Years, $options) ||
113 ( Helper::checkDiagResolved(Diagnosis::VZV, $patient, $patient->dob, $endDate) &&
114 !( Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
115 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $beginDate, $endDate) ||
116 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $beginDate, $endDate) ||
117 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $beginDate, $endDate) ||
118 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $beginDate, $endDate) ||
119 Helper::checkAllergy(Allergy::VZV, $patient, $patient->dob, $endDate) ||
120 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $beginDate, $endDate) ) ) ) {
121 return true;
124 return false;
127 public static function checkPheumococcal(CqmPatient $patient, $beginDate, $endDate)
129 $options = array( Medication::OPTION_COUNT => 4 );
130 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
131 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
132 if (Helper::checkMed(Medication::PNEUMOCOCCAL_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
133 !Helper::checkAllergy(Allergy::PNEUM_VAC, $patient) ) {
134 return true;
137 return false;
140 public static function checkHepA(CqmPatient $patient, $beginDate, $endDate)
142 $options = array( Medication::OPTION_COUNT => 2 );
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 (Helper::checkMed(Medication::HEP_A_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) ||
146 ( Helper::checkDiagResolved(Diagnosis::HEP_A, $patient, $patient->dob, $endDate) &&
147 !Helper::checkAllergy(Allergy::HEP_A_VAC, $patient, $patient->dob, $endDate) ) ) {
148 return true;
151 return false;
154 public static function checkRotavirus(CqmPatient $patient, $beginDate, $endDate)
156 $options = array( Medication::OPTION_COUNT => 4 );
157 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
158 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
159 if (Helper::checkMed(Medication::ROTAVIRUS_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
160 !Helper::checkAllergy(Allergy::ROTAVIRUS_VAC, $patient, $patient->dob, $endDate) ) {
161 return true;
164 return false;
167 public static function checkInfluenza(CqmPatient $patient, $beginDate, $endDate)
169 $options = array( Medication::OPTION_COUNT => 2 );
170 $dobPlus180Days = date('Y-m-d 00:00:00', strtotime('+180 day', strtotime($patient->dob)));
171 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
172 if (Helper::checkMed(Medication::INFLUENZA_VAC, $patient, $dobPlus180Days, $dobPlus2Years, $options) &&
173 !( Helper::checkAllergy(Allergy::INFLUENZA_VAC, $patient, $patient->dob, $endDate) ||
174 Helper::checkDiagActive(Diagnosis::CANCER_LYMPH_HIST, $patient, $patient->dob, $endDate) ||
175 Helper::checkDiagInactive(Diagnosis::CANCER_LYMPH_HIST, $patient, $patient->dob, $endDate) ||
176 Helper::checkDiagActive(Diagnosis::ASYMPTOMATIC_HIV, $patient, $patient->dob, $endDate) ||
177 Helper::checkDiagActive(Diagnosis::MULT_MYELOMA, $patient, $patient->dob, $endDate) ||
178 Helper::checkDiagActive(Diagnosis::LUKEMIA, $patient, $patient->dob, $endDate) ||
179 Helper::checkDiagActive(Diagnosis::IMMUNODEF, $patient, $patient->dob, $endDate) ) ) {
180 return true;
183 return false;
186 public static function checkRotavirus_2014(CqmPatient $patient, $beginDate, $endDate)
188 $options = array( Medication::OPTION_COUNT => 2 );
189 $dobPlus42Days = date('Y-m-d 00:00:00', strtotime('+42 day', strtotime($patient->dob)));
190 $dobPlus2Years = date('Y-m-d 00:00:00', strtotime('+2 year', strtotime($patient->dob)));
191 if (Helper::checkMed(Medication::ROTAVIRUS_VAC, $patient, $dobPlus42Days, $dobPlus2Years, $options) &&
192 !Helper::checkAllergy(Allergy::ROTAVIRUS_VAC, $patient, $patient->dob, $endDate) ) {
193 return true;
196 return false;