/** * 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; }
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; }