/** * get status of Acknowledgment * * @return String */ function getStatutAcknowledgment() { $xpath = new CHPrimSanteMessageXPath($this->dom_message); $nodes = $xpath->query("//ERR/ERR.4/CE.1[text()='T']"); if ($nodes->length > 0) { return "T"; } $nodes = $xpath->query("//ERR/ERR.4/CE.1[text()='P']"); if ($nodes->length > 0) { return "P"; } return "OK"; }
/** * Return or create the doctor of the message * * @param DOMNode $node Node * * @return CMediusers|int|null */ function getDoctor($node) { $xpath = new CHPrimSanteMessageXPath($node ? $node->ownerDocument : $this); $nodeDoctor = $xpath->query("P.13", $node); $code = null; $nom = null; $prenom = null; $type_code = null; foreach ($nodeDoctor as $_node_doctor) { $code = $xpath->queryTextNode("CNA.1", $_node_doctor); $nom = $xpath->queryTextNode("CNA.2/PN.1", $_node_doctor); $prenom = $xpath->queryTextNode("CNA.2/PN.2", $_node_doctor); $type_code = $xpath->queryTextNode("CNA.3", $_node_doctor); if ($code && $nom) { break; } } $mediuser = new CMediusers(); $mediuser->_user_last_name = $nom; switch ($type_code) { case "R": $mediuser->rpps = $code; break; case "A": $mediuser->adeli = $code; break; default: if (strlen($code) == 9 && luhn($code)) { $mediuser->adeli = $code; } if (strlen($code) == 11 && luhn($code)) { $mediuser->rpps = $code; } } // Cas où l'on a aucune information sur le médecin if (!$mediuser->rpps && !$mediuser->adeli && !$mediuser->_id && !$mediuser->_user_last_name) { return null; } $sender = $this->_ref_sender; $ds = $mediuser->getDS(); $ljoin = array(); $ljoin["functions_mediboard"] = "functions_mediboard.function_id = users_mediboard.function_id"; $where = array(); $where["functions_mediboard.group_id"] = " = '{$sender->group_id}'"; if ($mediuser->rpps || $mediuser->adeli) { if ($mediuser->rpps) { $where[] = $ds->prepare("rpps = %", $mediuser->rpps); } if ($mediuser->adeli) { $where[] = $ds->prepare("adeli = %", $mediuser->adeli); } // Dans le cas où le praticien recherché par son ADELI ou RPPS est multiple if ($mediuser->countList($where, null, $ljoin) > 1) { $ljoin["users"] = "users_mediboard.user_id = users.user_id"; $where[] = $ds->prepare("users.user_last_name = %", $nom); } $mediuser->loadObject($where, null, null, $ljoin); if ($mediuser->_id) { return $mediuser; } } $user = new CUser(); $ljoin = array(); $ljoin["users_mediboard"] = "users.user_id = users_mediboard.user_id"; $ljoin["functions_mediboard"] = "functions_mediboard.function_id = users_mediboard.function_id"; $where = array(); $where["functions_mediboard.group_id"] = " = '{$sender->group_id}'"; $where[] = $ds->prepare("users.user_first_name = %", $prenom); $where[] = $ds->prepare("users.user_last_name = %", $nom); $order = "users.user_id ASC"; if ($user->loadObject($where, $order, null, $ljoin)) { return $user->loadRefMediuser(); } $mediuser->_user_first_name = $prenom; $mediuser->_user_last_name = $nom; return $this->createDoctor($mediuser); }
/** * Get the observation result * * @param DOMNode $observation Observation * * @return string */ function getObservationResult(DOMNode $observation) { $xpath = new CHPrimSanteMessageXPath($observation ? $observation->ownerDocument : $this); return $xpath->queryTextNode("OBX/OBX.5", $observation); }