/** * Get patient links * * @return CPatient[] */ function loadPatientLinks() { /** @var CPatientLink[] $links1 */ $links1 = $this->loadBackRefs("patient_link1"); /** @var CPatientLink[] $links2 */ $links2 = $this->loadBackRefs("patient_link2"); /** @var CPatient[] $patient_link1 */ $patient_link1 = CPatientLink::massLoadFwdRef($links1, "patient_id2"); $patient_link2 = CPatientLink::massLoadFwdRef($links2, "patient_id1"); $patient_link = $patient_link1 + $patient_link2; self::massLoadIPP($patient_link); foreach ($links1 as $_link1) { $_link1->_ref_patient_doubloon = $patient_link[$_link1->patient_id2]; } foreach ($links2 as $_link2) { $_link2->_ref_patient_doubloon = $patient_link[$_link2->patient_id1]; } return $this->_ref_patient_links = $links1 + $links2; }
$number_day = CValue::getOrSession("_number_day", 8); $number_day = $number_day ?: 8; if ($number_day > 31) { $number_day = 31; } elseif ($number_day < 0) { $number_day = 0; } $now = CValue::getOrSession("_date_end", CMbDT::date()); $before = CMbDT::date("-{$number_day} DAYS", $now); CValue::setSession("_number_day", $number_day); CValue::setSession("_date_end", $now); CValue::setSession("_merge_patient", $merge_patient); $patient = new CPatient(); $count_patient = $patient->countList(); $count_status = $patient->countMultipleList(array("status" => "IS NOT NULL"), null, "status", null, array("status")); $patient_link = new CPatientLink(); $count_status[] = array("total" => $patient_link->countList(), "status" => "DPOT"); //répartition total $series = CPatientStateTools::createGraphPie($count_status); foreach ($series["datum"] as $_k => $_serie) { $series["datum"][$_k]["percent"] = $series["count"] > 0 ? round($_serie["data"] / $series["count"] * 100) : 0; } //Répartition par journée $values = array(); $ids = array(); if ($merge_patient) { $results = CPatientStateTools::getPatientMergeByDate($before, $now); for ($i = $number_day; $i >= 0; $i--) { $values["merged"][CMbDT::date("-{$i} DAYS", $now)] = 0; } foreach ($results as $_result) {
$where["sortie"] = "<= '{$date_max}'"; $leftjoin["sejour"] = "patients.patient_id = sejour.patient_id"; } $patients_count = CPatientState::getAllNumberPatient($date_min, $date_max); if ($patients_count[$state] > 0) { /** @var CPatient[] $patients */ $where["status"] = " = '{$state}'"; if ($state != "vali") { $where["vip"] = "= '0'"; } if ($state == "cach") { $where["vip"] = "= '1'"; $where["status"] = "!= 'VALI'"; } if ($state == "dpot") { $patient_link = new CPatientLink(); $patient_links = $patient_link->loadList(null, null, "{$page}, 30"); $patient_ids1 = CMbArray::pluck($patient_links, "patient_id1"); $patient_ids2 = CMbArray::pluck($patient_links, "patient_id2"); $where = array("patient_id" => CSQLDataSource::prepareIn(array_merge($patient_ids1, $patient_ids2))); $patients = $patient->loadList($where); } else { $patients = $patient->loadList($where, "nom, prenom", "{$page}, 30", null, $leftjoin); } CPatient::massLoadIPP($patients); /** @var CPatientState $patients_state */ $patients_state = CPatient::massLoadBackRefs($patients, "patient_state", "datetime DESC"); $mediusers = CPatientState::massLoadFwdRef($patients_state, "mediuser_id"); /** @var CPatientLink[] $link1 */ $link1 = CPatient::massLoadBackRefs($patients, "patient_link1"); /** @var CPatientLink[] $link2 */
/** * Store the state of the patient * * @param CPatient $patient Patient * * @return null|string */ static function storeState($patient) { $identity_status = CAppUI::conf("dPpatients CPatient manage_identity_status", CGroups::loadCurrent()); //Si la configuration n'est pas activé if (!$identity_status) { return null; } $last_state = $patient->loadLastState(); if ($patient->_doubloon_ids) { $doubloons = is_array($patient->_doubloon_ids) ? $patient->_doubloon_ids : explode("|", $patient->_doubloon_ids); foreach ($doubloons as $_id) { $patient_link = new CPatientLink(); $patient_link->patient_id1 = $patient->_id; $patient_link->patient_id2 = $_id; $patient_link->loadMatchingObject(); $patient_link->store(); } } if ($last_state && $patient->status == $last_state->state) { return null; } $patient_state = new self(); $patient_state->patient_id = $patient->_id; $patient_state->state = $patient->status; $patient_state->reason = $patient->_reason_state; if ($msg = $patient_state->store()) { return $msg; } return null; }