/** * Charge l'idex de l'établissement * * @return string|null */ function loadIdex() { $tag_group = $this->getTagGroup(); if (!$this->_id || !$tag_group) { return null; } // Récupération du premier idex créé $order = "id400 ASC"; // Recuperation de la valeur de l'id400 $idex = new CIdSante400(); $idex->setObject($this); $idex->tag = $tag_group; $idex->loadMatchingObject($order); return $idex->id400; }
/** * Store Acte * * @param String[] $data Value * @param String $type CCAM or NGAP * @param CSejour $sejour Sejour * @param CPatient $patient Patient * @param String $tag Tag * * @return String|CActe; */ function storeActe($data, $type, $sejour, $patient, $tag) { $code_acte = "code"; if ($type == "CCAM") { $field_object = "codes_ccam"; $code_acte = "code_acte"; } $action = $data["action"]; $idex = CIdSante400::getMatch("CActe{$type}", $tag, $data["idSourceActe{$type}"]); $executant_id = $data["executant_id"]; if ($idex->_id) { $class = "CActe{$type}"; /** @var CActeCCAM|CActeNGAP $acte */ $acte = new $class(); $acte->load($idex->object_id); $object = $acte->loadTargetObject(); if ($action === "suppression") { if ($type == "CCAM") { $code = $acte->{$code_acte}; $replace = explode("|", $object->{$field_object}); CMbArray::removeValue($code, $replace); $object->{$field_object} = $replace ? implode("|", $replace) : ""; } if ($msg = $this->deleteActe($acte, $object, $idex)) { return $msg; } return $acte; } /** @var CActeCCAM|CActeNGAP $new_acte */ $new_acte = $this->{"createActe{$type}"}($data["acte{$type}"], $object, $executant_id); $modification = $new_acte->{$code_acte} != $acte->{$code_acte}; if ($modification) { if ($type == "CCAM") { $new_code = preg_replace("#{$acte}->{$code_acte}#", $new_acte->{$code_acte}, $object->{$field_object}, 1); $object->{$field_object} = $new_code; } if ($msg = $this->deleteActe($acte, $object, $idex)) { return $msg; } $acte = new $class(); } $acte->extendsWith($new_acte, true); if ($msg = $acte->store()) { return $msg; } if ($modification) { $idex->setObject($acte); if ($msg = $idex->store()) { return $msg; } } return $acte; } if ($action !== "création") { return "{$action} impossible car l'acte n'a pas été trouvé"; } $date = CMbDT::date($data["acte{$type}"]["date"]); $object = $this->getObject($date, $executant_id, $patient->_id); $object = $object ? $object : $sejour; /** @var CActe $acte */ $acte = $this->{"createActe{$type}"}($data["acte{$type}"], $object, $executant_id); if ($type == "CCAM") { $object->{$field_object} .= $object->{$field_object} ? "|{$acte->{$code_acte}}" : $acte->{$code_acte}; } if ($msg = $object->store()) { return $msg; } if ($msg = $acte->store()) { return $msg; } $idex = new CIdSante400(); $idex->id400 = $data["idSourceActe{$type}"]; $idex->tag = $tag; $idex->setObject($acte); if ($msg = $idex->store()) { return $msg; } return $acte; }
<?php /** * $Id$ * * @category CDA * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $group_type = CValue::post("group_type"); $group_id = CValue::post("group_id"); $group = new CGroups(); $group->load($group_id); $idex = new CIdSante400(); $idex->tag = "cda_association_code"; $idex->setObject($group); $idex->loadMatchingObject(); $idex->last_update = CMbDT::dateTime(); $idex->id400 = $group_type; if ($group_type && ($msg = $idex->store())) { CAppUI::setMsg($msg, UI_MSG_ERROR); } CAppUI::setMsg("Configuration effectué");
/** * Merge an array of objects * * @param self[] $objects An array of CMbObject to merge * @param bool $fast Tell wether to use SQL (fast) or PHP (slow but checked and logged) algorithm * * @return string|null */ function merge($objects, $fast = false) { $alternative_mode = $this->_id != null; // Modes and object count check if ($alternative_mode && count($objects) > 1) { return "mergeAlternativeTooManyObjects"; } if (!$alternative_mode && count($objects) < 2) { return "mergeTooFewObjects"; } // Trigger before event $this->notify("BeforeMerge"); if (!$this->_id && ($msg = $this->store())) { $this->notify("MergeFailure"); return $msg; } foreach ($objects as $object) { $this->_merging[$object->_id] = $object; } foreach ($objects as &$object) { $msg = $fast ? $this->fastTransferBackRefsFrom($object) : $this->transferBackRefsFrom($object); if ($msg) { $this->notify("MergeFailure"); return $msg; } $object_id = $object->_id; $object->_mergeDeletion = true; if ($msg = $object->delete()) { return $msg; } // If external IDs are available, we save old objects' id as external IDs if (CModule::getInstalled("dPsante400")) { $idex = new CIdSante400(); $idex->setObject($this); $idex->tag = "merged"; $idex->id400 = $object_id; $idex->last_update = CMbDT::dateTime(); $idex->store(); } } // Trigger after event $this->notify("AfterMerge"); return $this->store(); }
$mediuser->insGroupPermission(); $results[$i]["result"] = 0; $results[$i]["username"] = $mediuser->_user_username; $results[$i]["password"] = $mediuser->_user_password; $number_idex = $results[$i]["idex"]; if (!$number_idex) { continue; } $idex = new CIdSante400(); $idex->tag = CMediusers::getTagMediusers($group_id); $idex->id400 = $number_idex; if ($idex->loadMatchingObject()) { $unfound["idex"][$number_idex] = true; CAppUI::setMsg("Identifiant déjà existant", UI_MSG_WARNING); continue; } $idex->setObject($mediuser); $msg = $idex->store(); if ($msg) { CAppUI::setMsg($msg, UI_MSG_ERROR); } } fclose($fp); } CAppUI::callbackAjax('$("systemMsg").insert', CAppUI::getMsg()); // Création du template $smarty = new CSmartyDP(); $smarty->assign("dryrun", $dryrun); $smarty->assign("results", $results); $smarty->assign("unfound", $unfound); $smarty->display("user_import_csv.tpl");
/** * Store the external ID of the given object * * @param CMbObject $object The MB to store the external ID of * @param string $db_id The Import ID to store on the MB Object * * @return string The external ID store error message */ function storeIdExt(CMbObject $object, $db_id) { $id_ext = new CIdSante400(); $id_ext->setObject($object); $id_ext->tag = $this->getImportTag(); $id_ext->id400 = $db_id; $id_ext->escapeValues(); $id_ext->loadMatchingObject(); $id_ext->last_update = CMbDT::dateTime(); $id_ext->unescapeValues(); return $id_ext->store(); }
/** * store the idex * * @param CPatient|CSejour $object patient or sejour * @param String[] $identifier identifiers * @param String $tag tag * * @return null|String */ function storeIdex($object, $identifier, $tag) { $idex = new CIdSante400(); $idex->tag = "{$tag}"; $idex->id400 = "{$identifier}"; $idex->setObject($object); $idex->loadMatchingObject(); if ($msg = $idex->store()) { return $msg; } return null; }
/** * @see parent::store() */ function store() { $this->completeField("type"); if ($this->type == "alle") { $this->loadRefDossierMedical(); $dossier_medical = $this->_ref_dossier_medical; if ($dossier_medical->object_class == "CPatient") { DSHM::remKeys("alertes-*-CPatient-" . $dossier_medical->object_id); } } // Save owner and creation date if (!$this->_id) { if (!$this->creation_date) { $this->creation_date = CMbDT::dateTime(); } if (!$this->owner_id) { $this->owner_id = CMediusers::get()->_id; } } // Standard store if ($msg = parent::store()) { return $msg; } // DossierMedical store $this->checkCodeCim10(); // Sauvegarde de l'identifiant externe (code composant de la BDM pour le cas des allergies) if ($this->_idex_code && $this->_idex_tag) { $idex = new CIdSante400(); $idex->setObject($this); $idex->id400 = $this->_idex_code; $idex->tag = $this->_idex_tag; $idex->store(); } return null; }
/** * Handle receive order message * * @param CHL7v2ReceiveOrderMessageResponse $ack Acknowledgment * @param CPatient $patient Person * @param array $data Data * * @return string|void */ function handle(CHL7v2ReceiveOrderMessageResponse $ack, CPatient $patient, $data) { $exchange_hl7v2 = $this->_ref_exchange_hl7v2; $sender = $exchange_hl7v2->_ref_sender; $sender->loadConfigValues(); $this->_ref_sender = $sender; $patientPI = CValue::read($data['personIdentifiers'], "PI"); if (!$patientPI) { return $exchange_hl7v2->setORRError($ack, "E007"); } $IPP = CIdSante400::getMatch("CPatient", $sender->_tag_patient, $patientPI); // Patient non retrouvé par son IPP if (!$IPP->_id) { return $exchange_hl7v2->setORRError($ack, "E105"); } $patient->load($IPP->object_id); $venueAN = $this->getVenueAN($sender, $data); $NDA = CIdSante400::getMatch("CSejour", $sender->_tag_sejour, $venueAN); // Séjour non retrouvé par son NDA if (!$NDA->_id) { return $exchange_hl7v2->setORRError($ack, "E205"); } $sejour = new CSejour(); $sejour->load($NDA->object_id); // Common order - ORC $orc = $data["ORC"]; $obr = $data["OBR"]; $event_request = $this->getEventRequest($orc); $consultation = new CConsultation(); $placer_id = $this->getPlacerNumber($orc); $filler_id = $this->getFillerNumber($orc); switch ($event_request) { // new order case "SN": $datetime = $this->getDate($orc); $orc12 = $this->getDoctorNode($orc, $data); $mediuser = new CMediusers(); $medisuer_id = $this->getDoctor($orc12, $mediuser); if (!$medisuer_id) { return $exchange_hl7v2->setORRError($ack, "E801"); } $consultation->createByDatetime($datetime, $medisuer_id, $patient->_id); if (!$consultation->_id) { return $exchange_hl7v2->setORRError($ack, "E802"); } $idex = new CIdSante400(); $idex->id400 = $filler_id; $idex->tag = $sender->_tag_consultation; $idex->setObject($consultation); $idex->store(); break; //Modification //Modification case "SC": $consultation->load($placer_id); $status_code = $this->getStatusCode($orc); switch ($status_code) { case "CM": $status = CConsultation::TERMINE; break; case "OD": $status = CConsultation::PLANIFIE; break; case "IP": $status = CConsultation::EN_COURS; break; default: return $exchange_hl7v2->setORRError($ack, "E803"); } $consultation->chrono = $status; if ($msg = $consultation->store()) { return $exchange_hl7v2->setORRError($ack, "E804", $msg); } $obr4 = $this->getExamen("OBR.4", $obr, $data); //Identifiant de l'élément de prescription $examen_id = $this->getExamenID($obr4); $examen_name = $this->getExamenName($obr4); //todo gérer avec l'élément de prescription break; // cancel order request // cancel order request case "OC": $consultation->annule = "1"; if ($msg = $consultation->store()) { return $exchange_hl7v2->setORRError($ack, "E804", $msg); } $idex = CIdSante400::getMatchFor($consultation, $sender->_tag_consultation); $idex->id400 = "trash_{$idex->id400}"; if ($msg = $idex->store()) { return $exchange_hl7v2->setORRError($ack, "E805", $msg); } break; default: return $exchange_hl7v2->setORRError($ack, "E205"); } return $exchange_hl7v2->setORRSuccess($ack); }