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); }
/** * 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; }