/** * @see parent::storeIdExt() */ protected function storeIdExt(CMbObject $object, $map_to) { if ($object instanceof CIdSante400) { return; } // Rattachement d'un ID externe $idex = CIdSante400::getMatchFor($object, "migration"); if (!$idex->_id) { $idex->id400 = $map_to; $idex->last_update = CMbDT::dateTime(); $idex->store(); CAppUI::stepAjax("Idex '%s' créé sur '%s'", UI_MSG_OK, $idex->id400, $object); } }
/** * Charge l'IPP du patient pour l'établissement courant * * @param int $group_id Permet de charger l'IPP pour un établissement donné si non null * * @return void */ function loadIPP($group_id = null) { if (!$this->_id) { return; } // Prevent loading twice if ($this->_IPP) { return; } // Pas de tag IPP => pas d'affichage d'IPP if (null == ($tag_ipp = $this->getTagIPP($group_id))) { $this->_IPP = str_pad($this->_id, 6, "0", STR_PAD_LEFT); return; } // Recuperation de la valeur de l'id400 $idex = CIdSante400::getMatchFor($this, $tag_ipp); // Stockage de la valeur de l'id400 $this->_ref_IPP = $idex; $this->_IPP = $idex->id400; }
/** * Get PV2.45 : operation * * @param CInteropReceiver $receiver Receiver * @param CSejour $sejour Admit * * @return array|null */ function getPV245(CInteropReceiver $receiver, CSejour $sejour) { $operation = $sejour->loadRefFirstOperation(); $operation->loadRefPlageOp(); $value = null; if (!empty($receiver->_configs["build_PV2_45"])) { $value = $receiver->_configs["build_PV2_45"]; } // Advance Directive Code switch ($value) { // Transmission de l'intervention case 'operation': if (!$operation) { return null; } $datetime = CHL7v2::getDateTime($operation->_datetime); $type_anesth = new CIdSante400(); if ($operation->type_anesth) { $tag_hl7 = $receiver->_tag_hl7; $type_anesth = CIdSante400::getMatch("CTypeAnesth", $tag_hl7, null, $operation->type_anesth); } $idex_chir = CIdSante400::getMatchFor($operation->loadRefChir(), $receiver->_tag_mediuser); $anesth = $operation->loadRefAnesth(); $idex_anesth = new CIdSante400(); if ($anesth->_id) { $idex_anesth = CIdSante400::getMatchFor($anesth, $receiver->_tag_mediuser); } $libelle = $operation->libelle; $PV2_45_2 = ""; // Datetime if ($datetime) { $PV2_45_2 .= "{$datetime}"; } $PV2_45_2 .= "#"; // Type anesth if ($type_anesth->id400) { $PV2_45_2 .= "{$type_anesth->id400}"; } $PV2_45_2 .= "#"; // Idex chir if ($idex_chir->id400) { $PV2_45_2 .= "{$idex_chir->id400}"; } $PV2_45_2 .= "#"; // Idex anesth if ($idex_anesth->id400) { $PV2_45_2 .= "{$idex_anesth->id400}"; } $PV2_45_2 .= "#"; // Libelle if ($libelle) { $PV2_45_2 .= "{$libelle}"; } if (CModule::getActive("mvsante")) { $PV2_45_2 .= CMVSante::getPV245($receiver, $sejour, $operation); } return array(array(null, $PV2_45_2)); default: return null; } }
/** * Get idex * * @param CMbObject $object Object * * @return CIdSante400 */ function getIdex(CMbObject $object) { return CIdSante400::getMatchFor($object, $this->getTag($this->group_id, $this->_class)); }
/** * Ajout de l'emplacement du mouvement * * @param DOMNode $elParent Node * @param CAffectation $affectation Affectation * * @return void */ function addEmplacement(DOMNode $elParent, CAffectation $affectation) { $receiver = $this->_ref_receiver; if (!$receiver->_configs["send_movement_location"]) { return; } $emplacement = $this->addElement($elParent, "emplacement"); $affectation->loadRefLit()->loadRefChambre()->loadRefService(); // Chambre $lit = $affectation->_ref_lit; $chambre = $lit->_ref_chambre; $idex = CIdSante400::getMatchFor($chambre, $receiver->_tag_chambre); $code = $idex->_id ? $idex->id400 : $chambre->_id; $this->addCodeLibelleCommentaire($emplacement, "chambre", $code, $chambre->nom, null, $chambre->caracteristiques); // Lit $idex = CIdSante400::getMatchFor($lit, $receiver->_tag_lit); $code = $idex->_id ? $idex->id400 : $lit->_id; $this->addCodeLibelleCommentaire($emplacement, "lit", $code, $lit->nom, null, $lit->nom_complet); // Chambre seul $this->addAttribute($emplacement, "chambreSeul", $chambre->_chambre_seule ? "oui" : "non"); }
/** * 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); }
/** * Charge le Numéro de pré-admission du séjour pour l'établissement courant * * @param int $group_id Permet de charger le NPA pour un établissement donné si non null * * @return void|string */ function loadNPA($group_id = null) { // Objet inexistant if (!$this->_id) { return "-"; } // Aucune configuration de numéro de dossier if (null == ($tag_NPA = $this->getTagNDA($group_id, "tag_dossier_pa"))) { $this->_NPA = str_pad($this->_id, 6, "0", STR_PAD_LEFT); return null; } // Recuperation de la valeur de l'id400 $idex = CIdSante400::getMatchFor($this, $tag_NPA); // Stockage de la valeur de l'id400 $this->_ref_NPA = $idex; $this->_NPA = $idex->id400; return null; }
foreach ($praticiens as $_praticien) { $_praticien->loadRefFunction()->loadRefGroup(); //----- Level 1 // Plages de consultations $where = array(); $where["date"] = "BETWEEN '{$date_min}' AND '{$date_max}'"; $where["chir_id"] = "= '{$_praticien->_id}'"; $plage = new CPlageconsult(); $criteres["level1"]["plages"][$_praticien->_id] = $plage->countList($where); // Connexion LDAP $idex = CIdSante400::getMatchFor($_praticien->_ref_user, "ldap"); $criteres["level1"]["ldap"][$_praticien->_id] = $idex->_id ? true : false; // Critères eCap if (CModule::getActive("ecap")) { // Identifiants CPRT $idex = CIdSante400::getMatchFor($_praticien, "eCap CIDC:{$cidc}"); $criteres["level1"]["cprt"][$_praticien->_id] = $idex->_id ? true : false; // Paramétrage eCap (appel d'un web service) $criteres["level1"]["ecap"][$_praticien->_id] = null; } // Vue offline paramétrée et accessible $criteres["level1"]["offline"][$_praticien->_id] = false; //----- Level 2 // Aides à la saisie $aides = array(); $aide = new CAideSaisie(); $aide->user_id = $_praticien->_id; $aides["user"] = $aide->countMatchingList(); $aide = new CAideSaisie(); $aide->function_id = $_praticien->_ref_function->_id; $aides["func"] = $aide->countMatchingList();