Highway to PSR2
[openemr.git] / library / classes / rulesets / Cqm / reports / NFQ_0002 / Exclusion.php
blob72f39518d8203369655763865fa64c1aee510088
1 <?php
2 /**
4 * CQM NQF 0002 Exclusion
6 * Copyright (C) 2015 Ensoftek, Inc
8 * LICENSE: This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>;.
19 * @package OpenEMR
20 * @author Ensoftek
21 * @link http://www.open-emr.org
24 class NFQ_0002_Exclusion implements CqmFilterIF
26 public function getTitle()
28 return "Exclusion";
31 public function test(CqmPatient $patient, $beginDate, $endDate)
33 //Children who are taking antibiotics in the 30 days prior to the diagnosis of pharyngitis
34 $antibiotics = implode(',', Codes::lookup(Medication::ANTIBIOTIC_FOR_PHARYNGITIS, 'RXNORM'));
35 $pharyngitis_snomed_codes = $pharyngitis_icd9_codes = $pharyngitis_icd10_codes = array();
36 foreach (Codes::lookup(Diagnosis::ACUTE_PHARYNGITIS, 'SNOMED-CT') as $code) {
37 $pharyngitis_snomed_codes[] = "SNOMED-CT:".$code;
40 foreach (Codes::lookup(Diagnosis::ACUTE_PHARYNGITIS, 'ICD9') as $code) {
41 $pharyngitis_icd9_codes[] = "ICD9:".$code;
44 foreach (Codes::lookup(Diagnosis::ACUTE_PHARYNGITIS, 'ICD10') as $code) {
45 $pharyngitis_icd10_codes[] = "ICD10:".$code;
48 $pharyngitis_snomed_codes = "'".implode("','", $pharyngitis_snomed_codes)."'";
49 $pharyngitis_icd9_codes = "'".implode("','", $pharyngitis_icd9_codes)."'";
50 $pharyngitis_icd10_codes = "'".implode("','", $pharyngitis_icd10_codes)."'";
52 $tonsillitis_snomed_codes = $tonsillitis_icd9_codes = $tonsillitis_icd10_codes = array();
53 foreach (Codes::lookup(Diagnosis::ACUTE_TONSILLITIS, 'SNOMED-CT') as $code) {
54 $tonsillitis_snomed_codes[] = "SNOMED-CT:".$code;
57 foreach (Codes::lookup(Diagnosis::ACUTE_TONSILLITIS, 'ICD9') as $code) {
58 $tonsillitis_icd9_codes[] = "ICD9:".$code;
61 foreach (Codes::lookup(Diagnosis::ACUTE_TONSILLITIS, 'ICD10') as $code) {
62 $tonsillitis_icd10_codes[] = "ICD10:".$code;
65 $tonsillitis_snomed_codes = "'".implode("','", $tonsillitis_snomed_codes)."'";
66 $tonsillitis_icd9_codes = "'".implode("','", $tonsillitis_icd9_codes)."'";
67 $tonsillitis_icd10_codes = "'".implode(',', $tonsillitis_icd10_codes)."'";
70 $query = "SELECT count(*) as cnt FROM form_encounter fe ".
71 "INNER JOIN openemr_postcalendar_categories opc ON fe.pc_catid = opc.pc_catid ".
72 " INNER JOIN lists l on l.type='medical_problem' and fe.pid = l.pid ".
73 "INNER JOIN prescriptions p ON fe.pid = p.patient_id ".
74 "WHERE opc.pc_catname = 'Office Visit' AND fe.pid = ? AND fe.date BETWEEN ? and ? ".
75 " AND p.rxnorm_drugcode in ( $antibiotics )".
76 " AND (l.diagnosis in ($pharyngitis_snomed_codes) or l.diagnosis in ($pharyngitis_icd9_codes) or l.diagnosis in($pharyngitis_icd10_codes) ".
77 " or l.diagnosis in($tonsillitis_snomed_codes) or l.diagnosis in ($tonsillitis_icd9_codes) or l.diagnosis in ($tonsillitis_icd10_codes)) ".
78 " AND DATEDIFF(l.date,p.date_added) between 0 and 30 AND p.active = 1";
80 $check = sqlQuery($query, array($patient->id, $beginDate, $endDate));
81 if ($check['cnt'] >= 1) {//more than one medication it will exclude
82 return true;
83 } else {
84 return false;