/** * @param string $sSql * @return CDomain */ protected function getDomainBySql($sSql) { $oDomain = null; if ($this->oConnection->Execute($sSql)) { $oRow = $this->oConnection->GetNextRecord(); if ($oRow) { $oDomain = new CDomain(); $oDomain->InitByDbRow($oRow); } $this->oConnection->FreeResult(); } $this->throwDbExceptionIfExist(); return $oDomain; }
/** * @see parent::onAfterStore() */ function onAfterStore(CMbObject $mbObject) { if (!$this->isHandled($mbObject)) { return false; } if (!$mbObject->_id || !$this->create) { return false; } $group_id = $mbObject->_id; $object_class = array("CSejour", "CPatient"); global $dPconfig; $original_value = $dPconfig["eai"]["use_domain"]; $dPconfig["eai"]["use_domain"] = "0"; foreach ($object_class as $_class) { switch ($_class) { case "CSejour": $tag_group = CSejour::getTagNDA($group_id); break; case "CPatient": $tag_group = CPatient::getTagIPP($group_id); break; default: $tag_group = null; } if (!$tag_group) { continue; } $domain = new CDomain(); $domain->tag = $tag_group; if ($domain->store()) { continue; } $group_domain = new CGroupDomain(); $group_domain->group_id = $group_id; $group_domain->domain_id = $domain->_id; $group_domain->object_class = $_class; $group_domain->master = "1"; $group_domain->store(); } $dPconfig["eai"]["use_domain"] = "{$original_value}"; return true; }
/** * Get AN identifier * * @param DOMNode $node Node * @param array &$data Data * @param CInteropSender $sender Sender * * @return void */ function getANIdentifier(DOMNode $node, &$data, CInteropSender $sender) { if (CHL7v2Message::$handle_mode == "simple") { $data["AN"] = $this->queryTextNode("CX.1", $node); return; } $control_identifier_type_code = CValue::read($sender->_configs, "control_identifier_type_code"); $search_master_NDA = CValue::read($sender->_configs, "search_master_NDA"); if ($search_master_NDA) { $domain = CDomain::getMasterDomain("CSejour", $sender->group_id); if ($domain->namespace_id != $this->queryTextNode("CX.4/HD.1", $node)) { return; } if ($control_identifier_type_code) { if ($this->queryTextNode("CX.5", $node) == "AN") { $data["AN"] = $this->queryTextNode("CX.1", $node); } } else { $data["AN"] = $this->queryTextNode("CX.1", $node); } return; } if ($control_identifier_type_code) { if ($this->queryTextNode("CX.5", $node) == "AN") { $data["AN"] = $this->queryTextNode("CX.1", $node); } } else { $data["AN"] = $this->queryTextNode("CX.1", $node); } }
/** * Save domain details back to the database upon modifying the object. * * @param CDomain $oDomain * * @return bool */ public function updateDomain(CDomain $oDomain) { $bResult = false; try { if ($oDomain->validate()) { if ($oDomain->IsDefaultDomain) { $oSettings =& CApi::GetSettings(); $aSettingsMap = $oDomain->GetSettingsMap(); foreach ($aSettingsMap as $sProperty => $sSettingsName) { $oSettings->SetConf($sSettingsName, $oDomain->{$sProperty}); } $bResult = $oSettings->SaveToXml(); } else { if (!$this->oStorage->updateDomain($oDomain)) { throw new CApiManagerException(Errs::DomainsManager_DomainUpdateFailed); } $bResult = true; } } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; }
<?php /** * View interop actors EAI * * @category EAI * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); $domain_id = CValue::get("domain_id"); // Domaine $domain = new CDomain(); $domain->load($domain_id); $domain->loadRefsGroupDomains(); foreach ($domain->_ref_group_domains as $_group_domain) { $_group_domain->loadRefGroup(); } $group_domain = new CGroupDomain(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("domain", $domain); $smarty->assign("group_domain", $group_domain); $smarty->display("inc_vw_group_domains.tpl");
/** * Build PID segement * * @param CHL7v2Event $event Event * * @return null */ function build(CHL7v2Event $event) { parent::build($event); $message = $event->message; $sender = $event->_sender; $group = $sender->loadRefGroup(); $domains_returned = $this->domains_returned; $patient = $this->patient; $data = array(); // PID-1: Set ID - PID (SI) (optional) $data[] = $this->set_id; // PID-2: Patient ID (CX) (optional) $data[] = null; $identifiers = array(); if (empty($domains_returned)) { $idex = new CIdSante400(); $idex->object_id = $patient->_id; $idex->object_class = "CPatient"; $ljoin = array(); $ljoin[] = "group_domain AS g1 ON g1.domain_id = domain.domain_id AND g1.object_class = 'CPatient'"; foreach ($idex->loadMatchingList() as $_idex) { $domain = new CDomain(); $where["tag"] = " = '{$_idex->tag}'"; $domain->loadObject($where, null, null, $ljoin); if (!$domain->_id) { continue; } $identifiers[] = array($_idex->id400, null, null, $this->getAssigningAuthority("domain", null, null, $domain), "MR"); } } else { foreach ($domains_returned as $_domain_returned) { $assigning_authority = $this->getAssigningAuthority("domain", null, null, $_domain_returned); $identifiers[] = array(CIdSante400::getValueFor($patient, $_domain_returned->tag), null, null, $assigning_authority, "MR"); } } // PID-3: Patient Identifier List (CX) (repeating) $data[] = $identifiers; // PID-4: Alternate Patient ID - PID (CX) (optional repeating) $data[] = null; // PID-5: Patient Name (XPN) (repeating) $data[] = $this->getXPN($patient); // PID-6: Mother's Maiden Name (XPN) (optional repeating) $data[] = null; // PID-7: Date/Time of Birth (TS) (optional) $data[] = CMbDT::isLunarDate($patient->naissance) ? null : $patient->naissance; // PID-8: Administrative Sex (IS) (optional) // Table - 0001 // F - Female // M - Male // O - Other // U - Unknown // A - Ambiguous // N - Not applicable $data[] = CHL7v2TableEntry::mapTo("1", $patient->sexe); // PID-9: Patient Alias (XPN) (optional repeating) $data[] = null; // PID-10: Race (CE) (optional repeating) $data[] = null; // PID-11: Patient Address (XAD) (optional repeating) $address = array(); if ($patient->adresse || $patient->ville || $patient->cp) { $linesAdress = explode("\n", $patient->adresse, 2); $address[] = array(CValue::read($linesAdress, 0), str_replace("\n", $message->componentSeparator, CValue::read($linesAdress, 1)), $patient->ville, $patient->province, $patient->cp, CPaysInsee::getAlpha3($patient->pays_insee), "H"); } if ($patient->lieu_naissance || $patient->cp_naissance || $patient->pays_naissance_insee) { $address[] = array(null, null, $patient->lieu_naissance, null, $patient->cp_naissance, CPaysInsee::getAlpha3($patient->pays_naissance_insee), "BDL"); } $data[] = $address; // PID-12: County Code (IS) (optional) $data[] = null; // PID-13: Phone Number - Home (XTN) (optional repeating) // Table - 0201 // ASN - Answering Service Number // BPN - Beeper Number // EMR - Emergency Number // NET - Network (email) Address // ORN - Other Residence Number // PRN - Primary Residence Number // VHN - Vacation Home Number // WPN - Work Number // Table - 0202 // BP - Beeper // CP - Cellular Phone // FX - Fax // Internet - Internet Address: Use Only If Telecommunication Use Code Is NET // MD - Modem // PH - Telephone // TDD - Telecommunications Device for the Deaf // TTY - Teletypewriter $phones = array(); if ($patient->tel) { $area_city_code = null; $local_number = null; if ($sender->_configs["send_area_local_number"]) { $area_city_code = substr($patient->tel, 0, 3); $local_number = substr($patient->tel, 3); } $phones[] = array(null, "PRN", "PH", null, null, $area_city_code, $local_number, null, null, null, null, $sender->_configs["send_area_local_number"] ? null : $patient->tel); } $data[] = $phones; // PID-14: Phone Number - Business (XTN) (optional repeating) $data[] = null; // PID-15: Primary Language (CE) (optional) $data[] = null; // PID-16: Marital Status (CE) (optional) $data[] = null; // PID-17: Religion (CE) (optional) $data[] = null; // PID-18: Patient Account Number (CX) (optional) if ($this->sejour) { $sejour = $this->sejour; $sejour->loadNDA($group->_id); $domain = new CDomain(); $domain->tag = $sejour->getTagNDA(); $domain->loadMatchingObject(); $data[] = $sejour->_NDA ? array(array($sejour->_NDA, null, null, $this->getAssigningAuthority("domain", null, null, $domain))) : null; } else { $data[] = null; } // PID-19: SSN Number - Patient (ST) (optional) $data[] = $patient->matricule; // PID-20: Driver's License Number - Patient (DLN) (optional) $data[] = null; // PID-21: Mother's Identifier (CX) (optional repeating) $data[] = null; // PID-22: Ethnic Group (CE) (optional repeating) $data[] = null; // PID-23: Birth Place (ST) (optional) $data[] = null; // PID-24: Multiple Birth Indicator (ID) (optional) $data[] = null; // PID-25: Birth Order (NM) (optional) $data[] = $patient->rang_naissance; // PID-26: Citizenship (CE) (optional repeating) $data[] = null; // PID-27: Veterans Military Status (CE) (optional) $data[] = null; // PID-28: Nationality (CE) (optional) $data[] = null; // PID-29: Patient Death Date and Time (TS) (optional) $data[] = $patient->deces ? $patient->deces : null; // PID-30: Patient Death Indicator (ID) (optional) $data[] = $patient->deces ? "Y" : "N"; // PID-31: Identity Unknown Indicator (ID) (optional) $data[] = null; // PID-32: Identity Reliability Code (IS) (optional repeating) $data[] = null; // PID-33: Last Update Date/Time (TS) (optional) $data[] = null; // PID-34: Last Update Facility (HD) (optional) $data[] = null; // PID-35: Species Code (CE) (optional) $data[] = null; // PID-36: Breed Code (CE) (optional) $data[] = null; // PID-37: Strain (ST) (optional) $data[] = null; // PID-38: Production Class Code (CE) (optional) $data[] = null; // PID-39: Tribal Citizenship (CWE) (optional repeating) $data[] = null; $this->fill($data); }
/** * Construit le tag NDA en fonction des variables de configuration * * @param int $group_id Permet de charger le NDA pour un établissement donné si non null * @param string $type_tag Permet de spécifier le type de tag * * @return string|void */ static function getTagNDA($group_id = null, $type_tag = "tag_dossier") { // Recherche de l'établissement $group = CGroups::get($group_id); if (!$group_id) { $group_id = $group->_id; } $cache = new Cache(__METHOD__, array($group_id, $type_tag), Cache::INNER); if ($cache->exists()) { return $cache->get(); } // Gestion du tag NDA par son domaine d'identification if (CAppUI::conf("eai use_domain")) { $tag_NDA = CDomain::getMasterDomain("CSejour", $group_id)->tag; if ($type_tag != "tag_dossier") { $tag_NDA = CAppUI::conf("dPplanningOp CSejour {$type_tag}") . $tag_NDA; } return $cache->put($tag_NDA, false); } $tag_NDA = CAppUI::conf("dPplanningOp CSejour tag_dossier"); if ($type_tag != "tag_dossier") { $tag_NDA = CAppUI::conf("dPplanningOp CSejour {$type_tag}") . $tag_NDA; } // Si on est dans le cas d'un établissement gérant la numérotation $group->loadConfigValues(); if ($group->_configs["smp_idex_generator"]) { $tag_NDA = CAppUI::conf("smp tag_nda"); } // Pas de tag Num dossier if (null == $tag_NDA) { return $cache->put(null, false); } // Préférer un identifiant externe de l'établissement if ($tag_group_idex = CAppUI::conf("dPplanningOp CSejour tag_dossier_group_idex")) { $idex = new CIdSante400(); $idex->loadLatestFor($group, $tag_group_idex); $group_id = $idex->id400; } return $cache->put(str_replace('$g', $group_id, $tag_NDA), false); }
<?php /** * Refresh incrementer/actor EAI * * @category EAI * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); $domain_id = CValue::get("domain_id"); // Liste des domaines $domain = new CDomain(); $domain->load($domain_id); $domain->loadRefsGroupDomains(); $domain->loadRefActor(); $domain->loadRefIncrementer()->loadView(); $domain->isMaster(); // Liste des acteurs $actor = new CInteropActor(); $actors = $actor->getObjects(); $groups = CGroups::loadGroups(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("domain", $domain); $smarty->assign("actors", $actors); $smarty->assign("groups", $groups); $smarty->display("inc_vw_incrementer_actor.tpl");
/** * @param CDomain $oDomain */ public function PluginDomainConstruct(&$oDomain) { $aFolderMap =& $oDomain->GetFoldersMap(); $aFolderMap = array(EFolderType::Inbox => 'INBOX', EFolderType::Trash => 'Trash'); }
/** * Get actor tag * * @param int $group_id Group * * @return string */ function getTag($group_id = null) { // Recherche de l'établissement $group = CGroups::get($group_id); if (!$group_id) { $group_id = $group->_id; } $cache = new Cache(__METHOD__, array($group_id), Cache::INNER); if ($cache->exists()) { return $cache->get(); } $ljoin["group_domain"] = "`group_domain`.`domain_id` = `domain`.`domain_id`"; $where = array(); $where["group_domain.group_id"] = " = '{$group_id}'"; $where["domain.actor_class"] = " = '{$this->_class}'"; $where["domain.actor_id"] = " = '{$this->_id}'"; $domain = new CDomain(); $domain->loadObject($where, null, null, $ljoin); return $cache->put($domain->tag, false); }
* @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); CApp::setMemoryLimit("712M"); $domains_id = CValue::get("domains_id"); if (!is_array($domains_id)) { $domains_id = explode("-", $domains_id); } CMbArray::removeValue("", $domains_id); $d1_id = $domains_id[0]; $d2_id = $domains_id[1]; $d1 = new CDomain(); $d1->load($d1_id); $d1->isMaster(); $d2 = new CDomain(); $d2->load($d2_id); $d2->isMaster(); $ds = $d1->_spec->ds; $and = null; if ($d1->_is_master_ipp || $d2->_is_master_ipp) { $and .= "AND id1.object_class = 'CPatient' \n AND id2.object_class = 'CPatient'"; } if ($d1->_is_master_nda || $d2->_is_master_nda) { $and .= "AND id1.object_class = 'CSejour' \n AND id2.object_class = 'CSejour'"; } $intersect_id400s = $ds->loadList("SELECT id1.id400\n FROM id_sante400 AS id1 \n LEFT JOIN id_sante400 AS id2 ON id2.id400 = id1.id400 \n AND id2.object_class = id1.object_class\n WHERE id1.tag = '{$d1->tag}'\n AND id2.tag = '{$d2->tag}'\n {$and}"); $intersect_id400s = CMbArray::pluck($intersect_id400s, "id400"); if (!$intersect_id400s) { $intersect_id400s = array(); }
<?php /** * Edit domain EAI * * @category EAI * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); $domain_id = CValue::getOrSession("domain_id"); $group_domain_id = CValue::getOrSession("group_domain_id"); // Récupération du domaine à ajouter/editer $domain = new CDomain(); $domain->load($domain_id); // Récupération de l'établissement du domaine à editer $group_domain = new CGroupDomain(); $group_domain->load($group_domain_id); $groups = CGroups::loadGroups(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("domain", $domain); $smarty->assign("group_domain", $group_domain); $smarty->assign("groups", $groups); $smarty->display("inc_edit_group_domain.tpl");
<?php /** * Actor domain aed * * @category EAI * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ $actor_guid = CValue::post("actor_guid"); $domain_id = CValue::post("domain_id"); $disassociated = CValue::post("disassociated"); list($actor_class, $actor_id) = explode('-', $actor_guid); $domain = new CDomain(); $domain->load($domain_id); if ($disassociated == 1) { $domain->actor_id = ""; $domain->actor_class = ""; } else { $domain->actor_id = $actor_id; $domain->actor_class = $actor_class; } if ($msg = $domain->store()) { CAppUI::stepAjax(CAppUI::tr("CDomain") . CAppUI::tr("CMbObject-msg-store-failed") . $msg, UI_MSG_ERROR); } else { $disassociated == 1 ? CAppUI::stepAjax("CDomain-actor-disassociated-desc") : CAppUI::stepAjax("CDomain-actor-associated"); } CApp::rip();
<?php /** * $Id$ * * @category EAI * @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 */ $domain_id = CValue::get("domain_id"); $domain = new CDomain(); $domain->load($domain_id); $domain->countObjects(); $smarty = new CSmartyDP(); $smarty->assign("domain", $domain); $smarty->display("inc_show_domain_details.tpl");
/** * Handle event * * @param CHL7v2PatientDemographicsAndVisitResponse $ack Acknowledgement * @param CPatient $patient Person * @param array $data Nodes data * * @return null|string */ function handle(CHL7v2PatientDemographicsAndVisitResponse $ack, CPatient $patient, $data) { $exchange_hl7v2 = $this->_ref_exchange_hl7v2; $sender = $exchange_hl7v2->_ref_sender; $sender->loadConfigValues(); $this->_ref_sender = $sender; $ds = $patient->getDS(); $where = array(); foreach ($this->getRequestPatient($data["QPD"]) as $field => $value) { if ($value == "") { continue; } if (!in_array($field, array("naissance", "cp"))) { $value = preg_replace("/[^a-z\\d\\*]/i", "_", $value); $value = preg_replace("/\\*+/", "%", $value); } $where["patients.{$field}"] = $ds->prepare("LIKE %", $value); } $ljoin = null; $identifier_list = $this->getRequestPatientIdentifierList($data["QPD"]); if (count(array_filter($identifier_list)) > 0) { $ljoin[10] = "id_sante400 AS id_pat_list ON id_pat_list.object_id = patients.patient_id"; $where[] = "`id_pat_list`.`object_class` = 'CPatient'"; // Requête sur un IPP if (!empty($identifier_list["id_number"]) && empty($identifier_list["namespace_id"]) && empty($identifier_list["universal_id"]) && empty($identifier_list["universal_id_type"])) { $where[] = $ds->prepare("id_pat_list.id400 = %", $identifier_list["id_number"]); } if (!empty($identifier_list["id_number"]) && (!empty($identifier_list["namespace_id"]) || !empty($identifier_list["universal_id"]))) { $namespace_id = $identifier_list["namespace_id"]; $universal_id = $identifier_list["universal_id"]; $domain = new CDomain(); if ($namespace_id) { $domain->namespace_id = $namespace_id; } if ($universal_id) { $domain->OID = $universal_id; } if ($domain->tag || $domain->OID) { $domain->loadMatchingObject(); } $where[] = $ds->prepare("id_pat_list.id400 = %", $identifier_list["id_number"]); $where[] = $ds->prepare("id_pat_list.tag = %", $domain->tag); } if (empty($identifier_list["id_number"]) && (!empty($identifier_list["namespace_id"]) || !empty($identifier_list["universal_id"]))) { $namespace_id = $identifier_list["namespace_id"]; $universal_id = $identifier_list["universal_id"]; $domain = new CDomain(); if ($namespace_id) { $domain->namespace_id = $namespace_id; } if ($universal_id) { $domain->OID = $universal_id; } if ($domain->namespace_id || $domain->OID) { $domain->loadMatchingObject(); $where[] = $ds->prepare("id_pat_list.tag = %", $domain->tag); } } } $request_admit = false; // Requête sur un NDA $identifier_list = $this->getRequestSejourIdentifierList($data["QPD"]); if (count(array_filter($identifier_list)) > 0) { $ljoin[100] = "sejour ON `patients`.`patient_id` = `sejour`.`patient_id`"; $ljoin[10] = "id_sante400 AS id_sej_list ON id_sej_list.object_id = sejour.sejour_id"; $where[] = "`id_sej_list`.`object_class` = 'CSejour'"; // Requête sur un IPP if (!empty($identifier_list["id_number"]) && empty($identifier_list["namespace_id"]) && empty($identifier_list["universal_id"]) && empty($identifier_list["universal_id_type"])) { $where[] = $ds->prepare("id_sej_list.id400 = %", $identifier_list["id_number"]); } if (!empty($identifier_list["id_number"]) && (!empty($identifier_list["namespace_id"]) || !empty($identifier_list["universal_id"]))) { $namespace_id = $identifier_list["namespace_id"]; $universal_id = $identifier_list["universal_id"]; $domain = new CDomain(); if ($namespace_id) { $domain->namespace_id = $namespace_id; } if ($universal_id) { $domain->OID = $universal_id; } if ($domain->namespace_id || $domain->OID) { $domain->loadMatchingObject(); } $where[] = $ds->prepare("id_sej_list.id400 = %", $identifier_list["id_number"]); $where[] = $ds->prepare("id_sej_list.tag = %", $domain->tag); } if (empty($identifier_list["id_number"]) && (!empty($identifier_list["namespace_id"]) || !empty($identifier_list["universal_id"]))) { $namespace_id = $identifier_list["namespace_id"]; $universal_id = $identifier_list["universal_id"]; $domain = new CDomain(); if ($namespace_id) { $domain->namespace_id = $namespace_id; } if ($universal_id) { $domain->OID = $universal_id; } if ($domain->namespace_id || $domain->OID) { $domain->loadMatchingObject(); $where[] = $ds->prepare("id_sej_list.tag = %", $domain->tag); } } } foreach ($this->getRequestSejour($data["QPD"]) as $field => $value) { if ($value == "") { continue; } $value = preg_replace("/[^a-z\\*]/i", "_", $value); $value = preg_replace("/\\*+/", "%", $value); $where["sejour.{$field}"] = $ds->prepare("LIKE %", $value); $request_admit = true; } if ($other_request = $this->getOtherRequestSejour($data["QPD"])) { $where = array_merge($other_request, $where); $request_admit = true; } $i = 1; $domains = array(); foreach ($this->getQPD8s($data["QPD"]) as $_QPD8) { // Requête sur un domaine particulier $domains_returned_namespace_id = $_QPD8["domains_returned_namespace_id"]; // Requête sur un OID particulier $domains_returned_universal_id = $_QPD8["domains_returned_universal_id"]; $domain = new CDomain(); if ($domains_returned_namespace_id) { $domain->namespace_id = $domains_returned_namespace_id; } if ($domains_returned_universal_id) { $domain->OID = $domains_returned_universal_id; } if ($domain->namespace_id || $domain->OID) { $domain->loadMatchingObject(); } $value = $domain->OID ? $domain->OID : $domain->tag; // Cas où le domaine n'est pas retrouvé if (!$domain->_id) { return $exchange_hl7v2->setPDRAE($ack, null, $value); } $domains[] = $domain; if ($domains_returned_namespace_id) { $ljoin[20 + $i] = "id_sante400 AS id{$i} ON id{$i}.object_id = patients.patient_id"; $where[] = $ds->prepare("id{$i}.tag = %", $domain->tag); $i++; } } $quantity_limited_request = $this->getQuantityLimitedRequest($data["RCP"]); $limit_quantity = !!$quantity_limited_request; $quantity_limited_request = $quantity_limited_request ? $quantity_limited_request : 100; $pointer = null; if (isset($data["DSC"])) { $pointer = $this->getContinuationPointer($data["DSC"]); } $objects = array(); if (!$request_admit) { // Pointeur pour continuer if ($pointer) { $patient->_pointer = $pointer; // is_numeric $where["patients.patient_id"] = $ds->prepare(" > %", $pointer); } $order = "patients.patient_id ASC"; if (!empty($where)) { $objects = $patient->loadList($where, $order, $quantity_limited_request, "patients.patient_id", $ljoin); // If we have no next match, we won't have to add a DSC segment if ($limit_quantity) { $next_one = $patient->loadList($where, $order, "{$quantity_limited_request},1", "patients.patient_id", $ljoin); if (count($next_one) == 0) { $limit_quantity = false; } } } } else { $ljoin[100] = "patients ON `patients`.`patient_id` = `sejour`.`patient_id`"; /** @var $sejour CSejour */ $sejour = new CSejour(); if (!empty($where)) { $objects = $sejour->loadList($where, null, $quantity_limited_request, "sejour.sejour_id", $ljoin); } } // Save information indicating that we are doing an incremental query $last = end($objects); if ($last && $limit_quantity) { $last->_incremental_query = true; } return $exchange_hl7v2->setPDRAA($ack, $objects, null, $domains); }
* @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); $domains_id = CValue::get("domains_id"); if (!is_array($domains_id)) { $domains_id = explode("-", $domains_id); } CMbArray::removeValue("", $domains_id); $domains = array(); $checkMerge = array(); if (count($domains_id) != 2) { $checkMerge[] = CAppUI::tr("mergeTooFewObjects"); } foreach ($domains_id as $domain_id) { $domain = new CDomain(); // the CMbObject is loaded if (!$domain->load($domain_id)) { CAppUI::setMsg("Chargement impossible de l'objet [{$domain_id}]", UI_MSG_ERROR); continue; } $domain->loadRefIncrementer(); $domain->loadRefActor(); $domains[] = $domain; } $domain1 = $domains[0]; $domain2 = $domains[1]; if ($domain1->incrementer_id && $domain2->actor_id || $domain2->incrementer_id && $domain1->actor_id) { $checkMerge[] = CAppUI::tr("CDomain-merge_incompatible-incrementer_actor"); } /*if (($domain1->derived_from_idex && !$domain2->derived_from_idex) || ($domain2->derived_from_idex && !$domain1->derived_from_idex)) {
/** * Get actors identifiers * * @param array &$identifiers Identifiers * @param CMbObject $object Object * @param CInteropActor $actor Actor * * @return void */ function fillActorsIdentifiers(&$identifiers, CMbObject $object, CInteropActor $actor = null) { if (!$actor->_configs["send_actor_identifier"]) { return; } $domain = new CDomain(); $where = array(); $where["incrementer_id"] = "IS NULL"; $where["actor_id"] = "IS NOT NULL"; /** @var CDomain[] $domains */ $domains = $domain->loadList($where); foreach ($domains as $_domain) { $value = CIdSante400::getValueFor($object, $_domain->tag); if (!$value) { continue; } $identifiers[] = array($value, null, null, $this->getAssigningAuthority("domain", null, null, $_domain), $actor->_configs["build_identifier_authority"] == "PI_AN" ? "PI" : "RI"); } }
/** * Construit le tag IPP en fonction des variables de configuration * * @param int $group_id Permet de charger l'IPP pour un établissement donné si non null * * @return string|null */ static function getTagIPP($group_id = null) { // Recherche de l'établissement $group = CGroups::get($group_id); if (!$group_id) { $group_id = $group->_id; } $cache = new Cache(__METHOD__, array($group_id), Cache::INNER); if ($cache->exists()) { return $cache->get(); } // Gestion du tag IPP par son domaine d'identification if (CAppUI::conf("eai use_domain")) { return $cache->put(CDomain::getMasterDomain("CPatient", $group_id)->tag, false); } // Pas de tag IPP => pas d'affichage d'IPP if (null == ($tag_ipp = CAppUI::conf("dPpatients CPatient tag_ipp"))) { return $cache->put(null, false); } // Si on est dans le cas d'un établissement gérant la numérotation $group->loadConfigValues(); if ($group->_configs["sip_idex_generator"]) { $tag_ipp = CAppUI::conf("sip tag_ipp"); } // Préférer un identifiant externe de l'établissement if ($tag_group_idex = CAppUI::conf("dPpatients CPatient tag_ipp_group_idex")) { $idex = new CIdSante400(); $idex->loadLatestFor($group, $tag_group_idex); $group_id = $idex->id400; } return $cache->put(str_replace('$g', $group_id, $tag_ipp), false); }
/** * @param string $sName * @param mixed $mValue * @return string */ protected function getDomainByWhere($sWhere) { $aMap = api_AContainer::DbReadKeys(CDomain::GetStaticMap()); $aMap = array_map(array($this, 'escapeColumn'), $aMap); $sSql = 'SELECT %s FROM %sawm_domains WHERE %s'; return sprintf($sSql, implode(', ', $aMap), $this->Prefix(), $sWhere); }
<?php /** * Refresh list domains EAI * * @category EAI * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkAdmin(); // Liste des domaines $domain = new CDomain(); $domains = $domain->loadList(); foreach ($domains as $_domain) { $_domain->loadRefActor(); $_domain->loadRefIncrementer()->loadView(); $_domain->loadRefsGroupDomains(); foreach ($_domain->_ref_group_domains as $_group_domain) { $_group_domain->loadRefGroup(); } $_domain->isMaster(); } // Récupération due l'incrementeur à ajouter/editer $domain = new CDomain(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("domains", $domains); $smarty->assign("domain", $domain);
/** * Get master domain tag * * @param string $domain_type Object class * @param string $group_id Group * * @return CDomain */ static function getMasterDomain($domain_type, $group_id = null) { $group = CGroups::loadCurrent(); if (!$group_id) { $group_id = $group->_id; } $group_domain = new CGroupDomain(); $group_domain->object_class = $domain_type; $group_domain->group_id = $group_id; $group_domain->master = true; $group_domain->loadMatchingObject(); $domain = new CDomain(); $domain->load($group_domain->domain_id); return $domain; }