}
// Recherche sur les diagnostics
/** @var CDossierMedical[] $dossiersMed */
$dossiersMed = array();
$where_diag = array();
if ($diagnostic_patient) {
    $where_diag["codes_cim"] = "LIKE '%{$diagnostic_patient}%'";
    $where_diag["object_class"] = " = 'CPatient'";
}
$order_diag = "object_id";
$dossierMedical = new CDossierMedical();
$pat_diag = new CPatient();
$total_dossierMedicals = null;
if ($where_diag) {
    $total_dossierMedicals = $dossierMedical->countList($where_diag);
    $dossiersMed = $dossierMedical->loadList($where_diag, $order_diag, "{$page_dossierMedical}, 30");
}
foreach ($dossiersMed as $value) {
    $value->loadRefObject();
    $value->loadRefsFwd();
}
$where_motif = null;
$where_remarque = null;
$where_examen = null;
$where_traitement = null;
$where_consult = null;
// Recherche sur les Consultations
/** @var CConsultation[] $consultations */
$consultations = array();
$consult = new CConsultation();
$patient_consult = array();
Beispiel #2
0
 /**
  * Fusion de patients
  *
  * @param CPatient[] $objects Liste des patientsx
  * @param bool       $fast    Mode rapide
  *
  * @return string|null
  */
 function merge($objects = array(), $fast = false)
 {
     // Load the matching CDossierMedical objects
     if ($this->_id) {
         $merged_objects = array_merge($objects, array($this));
     } else {
         $merged_objects = $objects;
     }
     $where = array('object_class' => "='{$this->_class}'", 'object_id' => CSQLDataSource::prepareIn(CMbArray::pluck($merged_objects, 'patient_id')));
     $dossier_medical = new CDossierMedical();
     $list = $dossier_medical->loadList($where);
     foreach ($objects as $object) {
         $object->loadIPP();
     }
     if ($msg = parent::merge($objects, $fast)) {
         return $msg;
     }
     CPatientLink::deleteDoubloon();
     $this->store();
     // Merge them
     if (count($list) > 1) {
         $dossier_medical->mergePlainFields($list);
         $dossier_medical->object_class = $this->_class;
         $dossier_medical->object_id = $this->_id;
         return $dossier_medical->merge($list, $fast);
     }
     return null;
 }
$request = "SELECT DISTINCT(d.object_id), d.object_class\r\n            FROM `dossier_medical` d\r\n            WHERE d.`object_id` <> '0'\r\n            AND EXISTS (\r\n              SELECT * FROM `dossier_medical` e\r\n              WHERE e.`object_class` = d.`object_class`\r\n              AND e.`object_id` = d.`object_id`\r\n              AND e.`dossier_medical_id` <> d.`dossier_medical_id`\r\n            );";
$resultats = $ds->loadList($request);
CAppUI::stepAjax("Dossiers à corriger: " . count($resultats), UI_MSG_OK);
if ($mode == "repair") {
    $correction = 0;
    foreach ($resultats as $result) {
        //Dossier de références
        $where = array();
        $where["object_class"] = "= '" . $result['object_class'] . "'";
        $where["object_id"] = "= '" . $result['object_id'] . "'";
        $dossier_ok = new CDossierMedical();
        $dossier_ok->loadObject($where, "dossier_medical_id ASC");
        $dossier_ok->loadRefsAntecedents();
        $dossier_ok->loadRefsEtatsDents();
        $dossier_ok->loadRefsTraitements();
        //Chargement des autres dossiers
        $_dossier = new CDossierMedical();
        $where["dossier_medical_id"] = "!= '" . $dossier_ok->_id . "'";
        $dossiers = $_dossier->loadList($where);
        //Merge des dossiers
        foreach ($dossiers as $dossier) {
            /* @var CDossierMedical $dossier*/
            if ($msg = $dossier_ok->merge(array($dossier))) {
                mbTrace($msg);
            } else {
                $correction++;
            }
        }
    }
    CAppUI::stepAjax("Dossiers corrigés: {$correction}", UI_MSG_OK);
}