Ejemplo n.º 1
0
 public static function intialize_csd_cache_metadata($csd_cache, $lists = array(), $requested_oids = array(), $options = array())
 {
     if (!I2CE_MagicDataNode::checkKey($csd_cache) || !is_array($lists)) {
         I2CE::raiseError("Badness on CSD cache metadata args");
         return false;
     }
     if (!is_array($requested_oids)) {
         $requested_oids = array();
     }
     if (!is_array($options)) {
         $options = array();
     }
     $config = I2CE::getConfig();
     if (!($svs_config = $config->traverse("/modules/SVS/lists", true, false)) instanceof I2CE_MagicDataNode) {
         I2CE::raiseError("bad SVS root node");
         return false;
     }
     if (!($csd_cache_config = $config->traverse("/modules/csd_cache/" . $csd_cache . "/args", true, false)) instanceof I2CE_MagicDataNode) {
         I2CE::raiseError("bad csd_cache config node");
         return false;
     }
     $site_module = 'ihris';
     $config->setIfIsSet($site_module, '/config/site/module');
     $source_uri = "http://localhost/" . $site_module;
     if (array_key_exists('HTTP_HOST', $_SERVER)) {
         $source_uri = I2CE_Page::getAccessedBaseURL();
     }
     if (!is_array($oids = $csd_cache_config->getAsArray('svs_dependencies'))) {
         $oids = array();
     }
     foreach ($lists as $list) {
         if (array_key_exists($list, $oids)) {
             continue;
         }
         if (array_key_exists($list, $requested_oids)) {
             $oids[$list] = $oid = $requested_oids[$list];
         } else {
             $oids[$list] = $oid = iHRIS_CSDCache::generateUUIDasOID();
         }
         if (!I2CE_MagicDataNode::checkKey($oid)) {
             I2CE::raiseError("Invalid OID: {$oid}");
             return false;
         }
         if (array_key_exists($list, $options) && is_array($options[$list])) {
             $opts = $options[$list];
         } else {
             $opts = array();
         }
         $styles = iHRIS_SVS::getAvailableStyles($list);
         if (array_key_exists('code_style', $opts) && is_scalar($opts['code_style'])) {
             $code_style = $opts['code_style'];
         } else {
             $code_style = 'code';
         }
         if (!in_array($code_style, $styles)) {
             $code_style = 'id';
         }
         $definition = array('list' => $list, 'meta' => array('Source' => $site_module, 'SourceURI' => $source_uri, 'code_style' => $code_style, 'code_system' => $oid));
         if (!($svs_list_config = $svs_config->traverse($oid, true, false)) instanceof I2CE_MagicDataNode) {
             I2CE::raiseError("Could not create MD for {$oid} at " . $svs_config->getPath());
             return false;
         }
         $svs_list_config->setValue($definition);
         try {
             $svs = new iHRIS_SVS($oid);
             $svs->publishConceptList();
         } catch (Exception $e) {
             I2CE::raiseError("Could not create SVS list on OID: {$oid}");
             return false;
         }
     }
     $transform_vars = array('sourceDirectory' => $source_uri, 'rootProviderURN' => 'urn:ihris.org:' . $site_module . ':providers', 'rootFacilityURN' => 'urn:ihris.org:' . $site_module . ':facilities', 'rootOrganizationURN' => 'urn:ihris.org:' . $site_module . ':organizations', 'rootServicesURN' => 'urn:ihris.org:' . $site_module . ':services');
     foreach ($lists as $list) {
         $transform_vars[$list . 'CodingScheme'] = $oids[$list];
     }
     $csd_cache_config->svs_dependencies = $oids;
     foreach ($transform_vars as $key => $val) {
         I2CE::raiseError("Setting {$key} at " . $csd_cache_config->getPath());
         if (!$csd_cache_config->__isset("transform_vars/" . $key)) {
             $csd_cache_config->transform_vars->{$key} = $val;
         }
     }
     return true;
 }