Beispiel #1
0
 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;
Beispiel #4
0
 /**
  * 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;
 }
Beispiel #5
0
 /**
  * Dumps the internal XML tree back into a string
  *
  * @return void
  */
 function saveFileXML()
 {
     parent::saveXML();
 }