Ejemplo n.º 1
0
 /**
  * @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);
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
     }
 }
Ejemplo n.º 4
0
 /**
  * Get idex
  *
  * @param CMbObject $object Object
  *
  * @return CIdSante400
  */
 function getIdex(CMbObject $object)
 {
     return CIdSante400::getMatchFor($object, $this->getTag($this->group_id, $this->_class));
 }
Ejemplo n.º 5
0
 /**
  * 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);
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }
Ejemplo n.º 8
0
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();