public function setAuditMessage() { $this->audit_message = $this->msg_xml->addElement($this->msg_xml, 'AuditMessage'); // Event $this->setEventIdentification(); // Source $this->setSourceActiveParticipant(); // Destination $this->setDestinationActiveParticipant(); // Audit Source $this->setAuditSourceIdentification(); // Patient $this->setParticipantObjectIdentification(); return $this->msg_xml->saveXML(); }
/** * Execute the request * * @param string $request Request to execute * @param string $location Webservice URL * @param string $action Action * @param int $version SOAP version * @param int $one_way One way * * @see parent::__doRequest * * @return null|string * @throws CMbException */ public function __doRequest($request, $location, $action, $version, $one_way = 0) { $ca_file = $this->ca_info; if ($this->use_tunnel) { $tunnel_exist = false; $tunnel_pass = CAppUI::conf("eai tunnel_pass"); $tunnel_object = new CHTTPTunnelObject(); $tunnels = $tunnel_object->loadActiveTunnel(); foreach ($tunnels as $_tunnel) { if ($_tunnel->checkStatus()) { $location = preg_replace("#[^/]*//[^/]*#", $_tunnel->address, $location); $ca_file = $_tunnel->ca_file; $tunnel_exist = true; break; } } if (!$tunnel_exist && $tunnel_pass === "0") { throw new CMbException("Pas de tunnel actif"); } } $response = null; if ($this->return_mode == "file") { $this->doRequestToFile($request, $location, $action, $ca_file); return ""; } elseif ($this->xop_mode) { $response = $this->doRequestXOP($request, $location, $action, $ca_file); } else { $response = parent::__doRequest($request, $location, $action, $version, $one_way); } if ($this->return_mode == "normal") { return $response; } if (!$response) { return null; } $document = new CMbXMLDocument(); $document->loadXMLSafe($response, null, true); $xpath = new CMbXPath($document); $documentElement = $document->documentElement; $xpath->registerNamespace($documentElement->prefix, $documentElement->namespaceURI); $body = $xpath->queryUniqueNode("/{$documentElement->prefix}:Envelope/{$documentElement->prefix}:Body"); $new_document = new CMbXMLDocument("UTF-8"); $new_document->appendChild($new_document->importNode($body->firstChild, true)); $this->response_body = $new_document->saveXML(); return $response; }
$root = $doc->createElement("modeles"); $doc->appendChild($root); $where = array("compte_rendu_id" => CSQLDataSource::prepareIn($modeles_ids)); // Récupération des header_id, footer_id, preface_id et ending_id $ds = CSQLDataSource::get("std"); $request = new CRequest(); $request->addTable("compte_rendu"); $request->addWhere($where); $components_ids = array(); foreach (array("header_id", "footer_id", "preface_id", "ending_id") as $_component) { $request->select = array(); $request->addSelect($_component); $components_ids = array_merge($components_ids, $ds->loadColumn($request->makeSelect())); } $modeles_ids = array_unique(array_merge($components_ids, $modeles_ids)); CMbArray::removeValue("", $modeles_ids); foreach ($modeles_ids as $_modele_id) { $modele = CApp::fetch("dPcompteRendu", "ajax_export_modele", array("modele_id" => $_modele_id)); $doc_modele = new CMbXMLDocument(null); @$doc_modele->loadXML($modele); // Importation du noeud CPrescription $modele_importe = $doc->importNode($doc_modele->firstChild, true); // Ajout de ce noeud comme fils de protocoles $doc->documentElement->appendChild($modele_importe); } $filename = 'Modèles ' . ($owner ? " - {$owner}" : '') . ($object_class ? " - " . CAppUI::tr($object_class) : '') . '.xml'; $content = $doc->saveXML(); header('Content-Type: text/xml'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Length: ' . strlen($content) . ';'); echo $content;
/** * Permet de nettoyer le XSD (suppression des minOccurs=0 maxOccurs=0 et des abtract) * libxml ne gère pas la prohibition des élément avec maxOccurs = 0; * les abtracts empêche l'instanciation des classes * * @return bool */ static function clearXSD() { $pathSource = "modules/cda/resources/datatypes-base_original.xsd"; $pathDest = "modules/cda/resources/datatypes-base.xsd"; $copyFile = copy($pathSource, $pathDest); if (!$copyFile) { return false; } $dom = new CMbXMLDocument("UTF-8"); $dom->load($pathDest); $xpath = new CMbXPath($dom); $nodeList = $xpath->query("//xs:complexType[@abstract]|xs:simpleType[@abstract]"); foreach ($nodeList as $_node) { /** @var DOMElement $_node */ $_node->removeAttribute("abstract"); } $nodeList = $xpath->query("//xs:element[@maxOccurs=\"0\"]"); foreach ($nodeList as $_node) { $_node->parentNode->removeChild($_node); } file_put_contents($pathDest, $dom->saveXML()); return true; }
/** * Dumps the internal XML tree back into a string * * @return void */ function saveFileXML() { parent::saveXML(); }