Example #1
0
 /**
  * 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 */
Example #4
0
 /**
  * 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;
 }