/** * @param $params * @param $includeDateOfBirth * * @return mixed */ public function getPossibleDuplicatesByDemographic($params, $includeDateOfBirth = false) { $this->setPatientModel(); $sql = "SELECT *\n\t\t\t\t FROM `patient`\n \t\t\t\t WHERE `fname` SOUNDS LIKE '{$params->fname}'\n \t\t\t\t AND `lname` SOUNDS LIKE '{$params->lname}'\n \t\t\t\t AND `sex` = '{$params->sex}'"; $this->patientContacts = new PatientContacts(); if ($includeDateOfBirth) { $sql = " AND `DOB` = '{$params->DOB}'"; } if (isset($params->pid) && $params->pid != 0) { $sql .= " AND `pid` != '{$params->pid}'"; } $results = $this->p->sql($sql)->all(); foreach ($results as $index => $record) { $contact = $this->patientContacts->getSelfContact($record['pid']); $results[$index]['name'] = Person::fullname($record['fname'], $record['mname'], $record['lname']); if (isset($contact)) { $results[$index]['fulladdress'] = Person::fulladdress(isset($contact['street_mailing_address']) ? $contact['street_mailing_address'] : '', null, isset($contact['city']) ? $contact['city'] : '', isset($contact['state']) ? $contact['state'] : '', isset($contact['zip']) ? $contact['zip'] : ''); $results[$index]['phones'] = isset($contact['phone_local_number']) ? $contact['phone_use_code'] . '-' . $contact['phone_area_code'] . '-' . $contact['phone_local_number'] : ''; } } return ['total' => count($results), 'data' => $results]; }