/**
  * return the schema
  *
  * @param String $type type
  * @param String $name name
  *
  * @return CHL7v2DOMDocument
  */
 function getSchema($type, $name)
 {
     $version = $this->getVersion();
     if (isset(self::$schemas[$version][$type][$name][$this->type])) {
         return clone self::$schemas[$version][$type][$name][$this->type];
     }
     if (!in_array($version, self::$versions)) {
         $this->error(CHL7v2Exception::VERSION_UNKNOWN, $version);
     }
     // TODO $type_liaison
     $version = strtoupper($version);
     $version_dir = preg_replace("/[^H0-9]/", "_", $version);
     $name_dir = preg_replace("/[^A-Z0-9_]/", "", $name);
     $this->spec_filename = "modules/hprimsante/resources/{$version_dir}/{$type}{$name_dir}.xml";
     if (!file_exists($this->spec_filename)) {
         $this->error(CHL7v2Exception::SPECS_FILE_MISSING, $this->spec_filename);
         return null;
     }
     $schema = new CHL7v2DOMDocument();
     $schema->registerNodeClass('DOMElement', 'CHL7v2DOMElement');
     $schema->load($this->spec_filename);
     self::$schemas[$version][$type][$name][$this->type] = $schema;
     return $this->specs = $schema;
 }
Esempio n. 2
0
 function getSchema($type, $name)
 {
     $extension = $this->extension;
     /*if (empty(self::$schemas)) {
         self::$schemas = SHM::get("hl7-v2-schemas");
       }*/
     $version = $this->getVersion();
     if (isset(self::$schemas[$version][$type][$name][$extension])) {
         return clone self::$schemas[$version][$type][$name][$extension];
     }
     if (!in_array($version, self::$versions)) {
         $this->error(CHL7v2Exception::VERSION_UNKNOWN, $version);
     }
     if ($extension && $extension !== "none" && preg_match("/([A-Z]{2})_(.*)/", $extension, $matches)) {
         $lang = strtolower($matches[1]);
         $v = "v" . str_replace(".", "_", $matches[2]);
         $version_dir = "extensions/{$lang}/{$v}";
     } else {
         $version_dir = "hl7v" . preg_replace("/[^0-9]/", "_", $version);
     }
     $name_dir = preg_replace("/[^A-Z0-9_]/", "", $name);
     $this->spec_filename = self::LIB_HL7 . "/{$version_dir}/{$type}{$name_dir}.xml";
     if (!file_exists($this->spec_filename)) {
         // on a déjà l'erreur sur le type de segment inconnu
         //$this->error(CHL7v2Exception::SPECS_FILE_MISSING, $this->spec_filename);
         return;
     }
     $schema = new CHL7v2DOMDocument();
     $schema->registerNodeClass('DOMElement', 'CHL7v2DOMElement');
     $schema->load($this->spec_filename);
     //$schema = @simplexml_load_file($this->spec_filename, "CHL7v2SimpleXMLElement");
     self::$schemas[$version][$type][$name][$extension] = $schema;
     //SHM::put("hl7-v2-schemas", self::$schemas);
     return $this->specs = $schema;
 }