Exemplo n.º 1
0
 function onBeforeMerge(CMbObject $mbObject)
 {
     if (!parent::onBeforeMerge($mbObject)) {
         return;
     }
     $this->sendFormatAction("onBeforeMerge", $mbObject);
 }
 /**
  * @see parent::onBeforeMerge
  */
 function onBeforeMerge(CMbObject $mbObject)
 {
     if (!parent::onBeforeMerge($mbObject)) {
         return;
     }
     // Si pas en mode alternatif
     if (!CAppUI::conf("alternative_mode")) {
         throw new CMbException("no_alternative_mode");
     }
     $patient = $mbObject;
     $patient_elimine = new CPatient();
     $patient_elimine->load(reset($mbObject->_merging));
     // Si Client
     if (!CAppUI::conf('sip server')) {
         $mbObject->_fusion = array();
         foreach (CGroups::loadGroups() as $_group) {
             /** @var CInteropSender $sender */
             $sender = $mbObject->_eai_sender_guid ? CMbObject::loadFromGuid($mbObject->_eai_sender_guid) : null;
             if ($sender && $sender->group_id == $_group->_id) {
                 continue;
             }
             $patient->_IPP = null;
             $patient->loadIPP($_group->_id);
             $patient1_ipp = $patient->_IPP;
             $patient_elimine->_IPP = null;
             $patient_elimine->loadIPP($_group->_id);
             $patient2_ipp = $patient_elimine->_IPP;
             // Passage en trash des IPP des patients
             $tap_IPP = CPatient::getTagIPP($_group->_id);
             if (!$tap_IPP) {
                 continue;
             }
             $idexPatient = new CIdSante400();
             $idexPatient->tag = $tap_IPP;
             $idexPatient->object_class = "CPatient";
             $idexPatient->object_id = $patient->_id;
             $idexsPatient = $idexPatient->loadMatchingList();
             $idexPatientElimine = new CIdSante400();
             $idexPatientElimine->tag = $tap_IPP;
             $idexPatientElimine->object_class = "CPatient";
             $idexPatientElimine->object_id = $patient_elimine->_id;
             $idexsPatientElimine = $idexPatientElimine->loadMatchingList();
             $idexs = array_merge($idexsPatient, $idexsPatientElimine);
             $idexs_changed = array();
             if (count($idexs) > 1) {
                 foreach ($idexs as $_idex) {
                     // On continue pour ne pas mettre en trash l'IPP du patient que l'on garde
                     if ($_idex->id400 == $patient1_ipp) {
                         continue;
                     }
                     $old_tag = $_idex->tag;
                     $_idex->tag = CAppUI::conf('dPpatients CPatient tag_ipp_trash') . $tap_IPP;
                     $_idex->last_update = CMbDT::dateTime();
                     if (!($msg = $_idex->store())) {
                         if ($_idex->object_id == $patient_elimine->_id) {
                             $idexs_changed[$_idex->_id] = $old_tag;
                         }
                     }
                 }
             }
             if (!$patient1_ipp && !$patient2_ipp) {
                 continue;
             }
             $mbObject->_fusion[$_group->_id] = array("patientElimine" => $patient_elimine, "patient1_ipp" => $patient1_ipp, "patient2_ipp" => $patient2_ipp, "idexs_changed" => $idexs_changed);
         }
     }
     $this->sendFormatAction("onBeforeMerge", $mbObject);
 }
Exemplo n.º 3
0
 /**
  * Trigger before event merge
  *
  * @param CMbObject $mbObject Object
  *
  * @throws CMbException
  *
  * @return bool
  */
 function onBeforeMerge(CMbObject $mbObject)
 {
     if (!parent::onBeforeMerge($mbObject)) {
         return false;
     }
     // Si pas en mode alternatif
     if (!CAppUI::conf("alternative_mode")) {
         throw new CMbException("no_alternative_mode");
     }
     $sejour = $mbObject;
     $sejour_elimine = new CSejour();
     $sejour_elimine->load(reset($mbObject->_merging));
     // Si Client
     if (!CAppUI::conf('smp server')) {
         $mbObject->_fusion = array();
         foreach (CGroups::loadGroups() as $_group) {
             $sender = CMbObject::loadFromGuid($mbObject->_eai_sender_guid);
             if ($sender && $sender->group_id == $_group->_id) {
                 continue;
             }
             $sejour->_NDA = null;
             $sejour->loadNDA($_group->_id);
             $sejour1_nda = $sejour->_NDA;
             $sejour_elimine->_NDA = null;
             $sejour_elimine->loadNDA($_group->_id);
             $sejour2_nda = $sejour_elimine->_NDA;
             // Passage en trash des NDA des séjours
             $tag_NDA = CSejour::getTagNDA($_group->_id);
             if (!$tag_NDA) {
                 continue;
             }
             $idexSejour = new CIdSante400();
             $idexSejour->tag = $tag_NDA;
             $idexSejour->object_class = "CSejour";
             $idexSejour->object_id = $sejour->_id;
             $idexsSejour = $idexSejour->loadMatchingList();
             $idexSejourElimine = new CIdSante400();
             $idexSejourElimine->tag = $tag_NDA;
             $idexSejourElimine->object_class = "CSejour";
             $idexSejourElimine->object_id = $sejour_elimine->_id;
             $idexsSejourElimine = $idexSejourElimine->loadMatchingList();
             /** @var CIdSante400[] $idexs */
             $idexs = array_merge($idexsSejour, $idexsSejourElimine);
             $idexs_changed = array();
             if (count($idexs) > 1) {
                 foreach ($idexs as $_idex) {
                     // On continue pour ne pas mettre en trash le NDA du séjour que l'on garde
                     if ($_idex->id400 == $sejour1_nda) {
                         continue;
                     }
                     $old_tag = $_idex->tag;
                     $_idex->tag = CAppUI::conf('dPplanningOp CSejour tag_dossier_trash') . $tag_NDA;
                     $_idex->last_update = CMbDT::dateTime();
                     if (!($msg = $_idex->store())) {
                         if ($_idex->object_id == $sejour_elimine->_id) {
                             $idexs_changed[$_idex->_id] = $old_tag;
                         }
                     }
                 }
             }
             if (!$sejour1_nda && !$sejour2_nda) {
                 continue;
             }
             $mbObject->_fusion[$_group->_id] = array("sejourElimine" => $sejour_elimine, "sejour1_nda" => $sejour1_nda, "sejour2_nda" => $sejour2_nda, "idexs_changed" => $idexs_changed);
         }
     }
     $this->sendFormatAction("onBeforeMerge", $mbObject);
     return true;
 }