コード例 #1
0
$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) {
        $values["merged"][$_result["date"]] = array('count' => $_result["total"], 'ids' => $_result['ids']);
コード例 #2
0
 /**
  * Get all number patient by a state and the filter
  *
  * @param String $date_min Date minimum
  * @param String $date_max Date maximum
  *
  * @return array
  */
 static function getAllNumberPatient($date_min = null, $date_max = null)
 {
     $patients_count = array();
     $leftjoin = null;
     $where = array();
     if ($date_min) {
         $where["entree"] = ">= '{$date_min}'";
         $leftjoin["sejour"] = "patients.patient_id = sejour.patient_id";
     }
     if ($date_max) {
         $where["entree"] = "<= '{$date_max}'";
         $leftjoin["sejour"] = "patients.patient_id = sejour.patient_id";
     }
     $ds = CSQLDataSource::get("std");
     $request = new CRequest();
     $request->addSelect("`status`, COUNT(DISTINCT(`patients`.`patient_id`)) as `total`");
     $request->addTable("patients");
     $request->addLJoin($leftjoin);
     $request->addWhere($where);
     $request->addGroup("`status`");
     $result = $ds->loadList($request->makeSelect());
     $state_count = array();
     foreach ($result as $_result) {
         $state_count[$_result["status"]] = $_result["total"];
     }
     foreach (self::$list_state as $_state) {
         $patients_count[CMbString::lower($_state)] = CMbArray::get($state_count, $_state, 0);
         if ($_state == "CACH") {
             $where = array("vip" => "= '1'", "status" => "!= 'VALI'");
             $patient = new CPatient();
             $patients_count[CMbString::lower($_state)] = $patient->countList($where, null, $leftjoin);
         }
         if ($_state == "DPOT") {
             $patient_link = new CPatientLink();
             $patients_count[CMbString::lower($_state)] = $patient_link->countList($where, null, array("sejour" => "patient_link.patient_id1 = sejour.patient_id"));
         }
     }
     return $patients_count;
 }