function notify() { global $display_buffer; $enable = freemed::config_value('worklist_enabled'); $providers = freemed::config_value('worklist_providers'); // Skip if this is not enabled if (!$enable) { return false; } include_once freemed::template_file('ajax.php'); $display_buffer .= "\n\t\t<script language=\"javascript\">\n\t\tvar workListElementActive = 0;\n\t\tvar workListElementCurrent;\n\n\t\tfunction workListClick ( id ) {\n\t\t\tif (workListElementActive) { return false; }\n\t\t\tworkListElementCurrent = id;\n\t\t\tdocument.getElementById(id).innerHTML = '<select id=\"worklist_select\" onChange=\"workListProcess(\\'worklist_select\\', \\'' + id + '\\'); return true;\">' +\n\t\t\t'<option value=\"\">-</option>'+\n\t\t"; $q = $GLOBALS['sql']->query("SELECT * FROM schedulerstatustype ORDER BY id"); foreach ($q as $r) { $display_buffer .= "'<option value=\"{$r['id']}\">{$r['sname']}</option>'+\n"; } $display_buffer .= "\n\t\t\t'<option value=\"\">-</option>'+\n\t\t\t'</select>';\n\t\t\tworkListElementActive = 1;\n\t\t}\n\n\t\tfunction workListProcess ( id, parent ) {\n\t\t\tif (! document.getElementById(id).value ) {\n\t\t\t\tdocument.getElementById(parent).innerHTML = ' ';\n\t\t\t\tworkListElementCurrent = '';\n\t\t\t\tworkListElementActive = 0;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tx_module_html('" . get_class($this) . "', 'ajax_process', document.getElementById(id).value + workListElementCurrent, workListPopulate);\n\t\t}\n\n\t\tfunction workListPopulate ( value ) {\n\t\t\tvar tokenizer = new StringTokenizer ( value, ':' );\n\t\t\tvar _color = tokenizer.nextToken();\n\t\t\tvar _text = tokenizer.nextToken();\n\t\t\tvar _desc = tokenizer.nextToken();\n\t\t\tdocument.getElementById('r' + workListElementCurrent).style.backgroundColor = _color;\n\t\t\tdocument.getElementById(workListElementCurrent).innerHTML = '<acronym title=\"' + _desc + '\">' + _text + '</acronym>';\n\t\t\tworkListElementCurrent = '';\n\t\t\tworkListElementActive = 0;\n\t\t}\n\n\t\t</script>\n\t\t"; // Get list of providers $p = explode(',', $providers); $buffer .= "<table border=\"0\" cellspacing=\"5\"><tr>\n"; foreach ($p as $v) { $buffer .= "<td valign=\"top\">" . $this->generate_worklist($v) . "</td>\n"; } $buffer .= "</tr></table>\n"; return array(__("Work Lists"), $buffer); }
public function RunBackup() { $pwd = `pwd`; $dev = escapeshellarg(freemed::config_value('cdrw_device')); $driver = escapeshellarg(freemed::config_value('cdrw_driver')); $speed = escapeshellarg(freemed::config_value('cdrw_speed')); $output = `/usr/share/freemed/scripts/cdrw_backup.sh {$dev} {$driver} {$speed}`; //print "/usr/share/freemed/scripts/cdrw_backup.sh $dev | $driver | $speed\n"; return $output; }
function smarty_function_config_value($params, &$smarty) { if (!isset($params['option'])) { $smarty->trigger_error("Option not specified"); } $x = freemed::config_value($params['option']); // Handle optional variable return policy if ($params['var']) { $smarty->assign($params['var'], $x); } else { return $x; } }
public function display_short($code) { switch (freemed::config_value('icd')) { case '10': $suffix = '10'; break; case '9': default: $suffix = '9'; break; } $code_record = $GLOBALS['sql']->get_link($this->table_name, $code); return $code_record['icd' . $suffix . 'code'] . ' - ' . $code_record['icd' . $suffix . 'descrip']; }
function menu_notify() { // Check to see if we're the person who is supposed to be // notified. If not, die out right now. $supposed = freemed::config_value('uffax_user'); $authdata = HTTP_Session2::get('authdata'); if (!(strpos($supposed, ',') === false)) { // Handle array $found = false; foreach (explode(',', $supposed) as $s) { if ($s == $authdata['user']) { $found = true; } } if (!$found) { return false; } } else { if ($supposed > 0 and $supposed != $authdata['user']) { return false; } } // Decide if we have any "unfiled documents" in the system $query = "SELECT COUNT(*) AS unfiled FROM " . $this->table_name; $unfiled = $GLOBALS['sql']->queryOne($query); if ($unfiled > 0) { return array(sprintf(__("You have %d unfiled documents"), $unfiled), "module_loader.php?module=" . urlencode(get_class($this)) . "&action=display"); } else { // For now, we're just going to return nothing so that // the box doesn't show up return false; } }
public function __construct() { $this->url = freemed::config_value('remitt_url'); $this->username = freemed::config_value('remitt_user'); $this->password = freemed::config_value('remitt_pass'); }
protected function GetProxy() { $sc = new SoapClient(PHYSICAL_LOCATION . '/data/wsdl/Mirth.wsdl', array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'location' => freemed::config_value('mirth_endpoint'))); return $sc; }
private function _cache_feed($feed) { $u = freemed::config_value('update_user'); $p = freemed::config_value('update_pass'); $notify = false; if (!$this->_check_cached_copy($feed)) { // Download feed $new_feed = $this->_get('update.freemedsoftware.net', '/feed/?mode=rss&category=' . $feed, $u, $p); $old_feed = @file_get_contents('data/cache/rss.feed.' . $feed); if ($new_feed != $old_feed) { $notify = true; } // Write to feed file $fp = fopen('data/cache/rss.feed.' . $feed, 'w'); if (!$fp) { die("Unable to write to feed!"); } fwrite($fp, $new_feed); fclose($fp); } return $notify; }
function ProcessData($data) { $cache = freemed::module_cache(); // Handle "module:" prefix if (substr($data['table'], 0, 7) == 'object:') { $objectname = substr($data['table'], -(strlen($data['table']) - 7)); $params = explode(':', $data['field']); if ($params[0] == 'patient') { $obj = CreateObject('org.freemedsoftware.core.' . $objectname, $this->patient->local_record[$params[1]]); $method = $params[2] ? $params[2] : 'to_text'; $raw = $obj->{${method}}(); } else { syslog(LOG_INFO, get_class($this) . "| could not process {$data['table']}, {$data['field']}"); return ''; } } elseif (substr($data['table'], 0, 7) == 'module:') { $modulename = substr($data['table'], -(strlen($data['table']) - 7)); // Deal with method: prefix on data if (substr($data['field'], 0, 7) == 'method:') { $params = explode(':', $data['field']); $raw = module_function($modulename, $params[1], array($params[2] ? $params[2] : $this->patient->id)); } else { // Load information from module include_once resolve_module($modulename); $m = new $modulename(); // Run SQL query $query = "SELECT *" . (count($m->summary_query) > 0 ? "," . join(",", $m->summary_query) . " " : " ") . "FROM " . $m->table_name . " " . "WHERE " . $m->patient_field . "='" . addslashes($this->patient->id) . "' " . ($m->summary_conditional ? 'AND ' . $m->summary_conditional . ' ' : '') . "ORDER BY id DESC LIMIT 1"; $result = $GLOBALS['sql']->query($query); if ($GLOBALS['sql']->num_rows($result) != 1) { syslog(LOG_INFO, get_class($this) . "| could not retrieve rows for {$data['table']}, {$data['field']}"); return ""; } $r = $GLOBALS['sql']->fetch_array($result); return $r[$data['field']]; } } else { // Deal with straight abbreviations for data switch ($data['table']) { case 'patient': if (strpos($data['field'], ':') === false) { $raw = $this->patient->local_record[$data['field']]; } else { list($desc, $field) = explode(':', $data['field']); switch ($desc) { case 'method': $raw = $this->patient->{${field}}(); break; // end method // end method default: syslog(LOG_INFO, get_class($this) . "| could not figure out syntax for {$data['table']}, {$data['field']}"); $raw = ""; break; // end default } // end switch desc } break; case 'control': $raw = $this->FetchDataElement($data['field']); break; case 'static': $raw = $data['field']; break; default: break; } // end switch } // Deal with output formatting switch ($data['type']) { case 'link': if (!$data['value']) { syslog(LOG_INFO, get_class($this) . "| could not process {$data['table']}, {$data['field']}, {$data['value']}"); return ''; } if (strpos($data['value'], ':') !== false) { $params = explode(':', $data['value']); return module_function($params[0], 'get_field', array($raw, $params[1])); } else { return module_function($data['value'], 'to_text', array($raw)); } break; case 'ssn': return substr($raw, 0, 3) . '-' . substr($raw, 3, 2) . '-' . substr($raw, 5, 4); break; case 'conditional': // Handle "static" type if ($data['table'] == 'static') { return 'X'; } // Handle "multiple" type if ($data['table'] == 'control') { if (!isset($this->controls)) { $this->controls = $this->GetControls(); } if ($this->controls[$data['field']]['type'] == 'multiple') { foreach (explode(',', $raw) as $value) { if ($data['value'] == $value) { return 'X'; } } return ''; } } // Handle everything else if ($data['value'] == $raw) { return 'X'; } else { return ''; } break; case 'phone': return freemed::phone_display($raw); break; case 'date': if (!$raw) { return ''; } $_date = explode('-', $raw); switch (freemed::config_value('dtfmt')) { case 'ymd': return $raw; break; case 'mdy': default: return "{$_date[1]}/{$_date[2]}/{$_date[0]}"; break; } // Should never get here return $raw; break; case 'string': default: return $raw; break; } // end data type }
function map_init() { $map = array(); $map['count'] = 0; for ($hour = freemed::config_value("calshr"); $hour < freemed::config_value("calehr"); $hour++) { for ($minute = 00; $minute < 60; $minute += 15) { $idx = $hour . ":" . ($minute == 0 ? "00" : $minute); $map[$idx]['link'] = 0; // no link $map[$idx]['span'] = 1; // one slot per $map[$idx]['mark'] = 0; // default marking $map[$idx]['selected'] = false; // selection $map[$idx]['physician'] = 0; $map[$idx]['room'] = 0; } // end init minute loop } // end init hour loop return $map; }
public function getMonthlyReportsDetails($month) { $remitt = CreateObject('org.freemedsoftware.api.Remitt', freemed::config_value('remitt_url')); $result = $remitt->GetFileList("output", "month", date("Y-m", strtotime($month))); for ($i = 0; $i < count($result); $i++) { $index = count($data); foreach ($result[$i] as $key => $val) { $data[$index][$key] = "" . $val; } } return $data; }
public function next_available($_criteria) { // Error checking if ($_criteria['days'] < 1 or $_criteria['days'] > 90) { $days = 4; } else { $days = $_criteria['days']; } // Get duration $duration = $_criteria['duration'] ? $_criteria['duration'] : 5; // Loop through days to create c_days array $i_cur = $_criteria['date'] ? $this->ImportDate($_criteria['date']) : date('Y-m-d'); $i_add = true; list($i_y, $i_m, $i_d) = explode('-', $i_cur); // Check for criteria ... if ($_criteria['weekday']) { $dow = strftime("%u", mktime(0, 0, 0, $i_m, $i_d, $i_y)); if ($dow > 5) { $i_add = false; } } if ($_criteria['forceday']) { $dow = strftime("%u", mktime(0, 0, 0, $i_m, $i_d, $i_y)); // print "current day = $i_cur, dow = $dow<br/>\n"; if ($dow != $_criteria['forceday']) { $i_add = false; } } if ($i_add) { $c_days[] = $i_cur; } // start with current? for ($i = 1; $i <= $days; $i++) { $i_cur = $this->date_add($i_cur, 1); list($i_y, $i_m, $i_d) = explode('-', $i_cur); $i_add = true; // Check for criteria ... if ($_criteria['weekday']) { $dow = strftime("%u", mktime(0, 0, 0, $i_m, $i_d, $i_y)); if ($dow > 5) { $i_add = false; } } if ($_criteria['forceday']) { $dow = strftime("%u", mktime(0, 0, 0, $i_m, $i_d, $i_y)); // print "current day = $i_cur, dow = $dow<br/>\n"; if ($dow != $_criteria['forceday']) { $i_add = false; } } if ($i_add) { $c_days[] = $i_cur; } } // end for i loop for number of days // Return false if there are no days available as specified if (count($c_days) < 1) { return array(false); } // Create basic SQL criteria if ($_criteria['after']) { $starting_time = $_criteria['after']; } else { $starting_time = freemed::config_value("calshr"); } //$b_criteria; if ($_criteria['location']) { $b_criteria[] = "calfacility = '" . addslashes($_criteria['location']) . "'"; } if ($_criteria['provider']) { $b_criteria[] = "calphysician = '" . addslashes($_criteria['provider']) . "'"; } // After we have gotten all of the prospective days, run // some maps to see what we have foreach ($c_days as $this_day) { //if($b_criteria) $m_criteria = array_merge($b_criteria, array("caldateof = '" . addslashes($this_day) . "'", "calstatus != 'cancelled'")); //else // $m_criteria = array("caldateof = '".addslashes($this_day)."'", "calstatus != 'cancelled'"); $map = $this->map("SELECT * FROM scheduler WHERE " . join(' AND ', $m_criteria)); // Loop through the map and use map_fit() queries // to return the first possible fit for ($h = $starting_time; $h < freemed::config_value('calehr'); $h++) { for ($m = '00'; $m < 60; $m += 5) { if ($this->map_fit($map, sprintf('%02s:%02s', $h, $m), $duration)) { if ($_criteria['single']) { return array($this_day, $h, $m); } else { $found = true; $res[] = array($this_day, $h, $m); } } // end if map_fit } // end minute loop } // end hour loop } // end for each possible day // If all else fails, return array(false), otherwise results if (!$found) { return false; } else { return $res; } }
protected function FixPhoneNumber($phone) { if (strlen($phone) == 7) { return freemed::config_value('default_area_code') . $phone; } else { return $phone; } }
function Send($destination_number) { // Sanitize number $number = strtr($destination_number, array(';' => '', '\\' => '', '>' => '', '<' => '', '\\`' => '', '\'' => '', '"' => '', '-' => '', '+' => '', '(' => '', ')' => '', ' ' => '', '&' => '')); // Fix number for area code switch (strlen($number)) { case 7: // Number with no area code, do nothing break; case 10: // Add +1 if this is a 10 digit one $number = '+1' . $number; break; case 11: // In format 1XXXXXXXXXX, just need a + $number = '+' . $number; break; default: syslog(LOG_INFO, "FreeMED.Fax.Send| error, number {$number}, length = " . strlen($number)); break; } // Log if we couldn't find the attachment if (!file_exists($this->attachment)) { syslog(LOG_INFO, "FreeMED.Fax.Send| could not find attachment file " . $this->attachment); } // Form command switch ($this->options['fax_server']) { case 'efax': $cmd = 'efax ' . '-t ' . $number . ' ' . ' "' . $this->attachment . '"'; break; // end efax // end efax case 'hylafax': default: $cmd = 'sendfax ' . (freemed::config_value('fax_nocover') ? '-n ' : '') . '-m ' . '-f "' . $this->options['sender'] . '" ' . '-s "' . $this->options['size'] . '" ' . '-r "' . $this->options['subject'] . '" ' . ($this->options['comments'] ? '-c "' . $this->options['comments'] . '" ' : '') . '-x "' . addslashes(INSTALLATION) . '" ' . '-d "' . ($this->options['recipient'] ? $this->options['recipient'] . '@' : '') . $number . '" ' . $this->_attachments(); syslog(LOG_INFO, "FreeMED.Fax.Send| send cmd = " . $cmd); break; // end hylafax } // end switch $output = `{$cmd}`; syslog(LOG_INFO, "FreeMED.Fax.Send| output = {$output}"); // Deal with output properly switch ($this->options['fax_server']) { case 'efax': return $output; break; case 'hylafax': default: if (!(strpos($output, 'request id is ') === false)) { $pieces = explode(' ', $output); return $pieces[3]; } else { return $output; } break; } // end case fax_server }
public function DetermineBracket($hhsize, $income) { // Formula: // ( fed_pov_level + ( dependents * increment) ) * percent of povlev $fed_pov_level = freemed::config_value('fed_pov_level'); if (!$fed_pov_level) { $fed_pov_level = 8980; } $increment = freemed::config_value('fed_pov_inc'); if (!$increment) { $increment = 3140; } $dependents = $hhsize - 1; $base = $fed_pov_level + $dependents * $increment; // Bracket A: income at or below 100% of poverty guideline if ($income <= $base * 1.0) { return 'A'; } // Bracket B: income at or below 125% of poverty guideline if ($income <= $base * 1.25) { return 'B'; } // Bracket C: income at or below 150% of poverty guideline if ($income <= $base * 1.5) { return 'C'; } // Bracket D: income at or below 175% of poverty guideline if ($income <= $base * 1.75) { return 'D'; } // Bracket E: income at or above 200% of poverty guideline if ($income <= $base * 2.0) { return 'E'; } // Fall through return false; }
public static function phone_display($phone) { if (strlen($phone) < 7) { return __("NONE"); } switch (freemed::config_value('phofmt')) { case "usa": return '(' . substr($phone, 0, 3) . ') ' . substr($phone, 3, 3) . '-' . substr($phone, 6, 4) . (strlen($phone) > 10 ? ' ' . substr($phone, 10, 4) : ''); break; case "fr": return '+' . substr($w, 0, 2) . substr($w, 2, 2) . substr($w, 4, 2) . substr($w, 6, 2) . substr($w, 8, 2); break; case "unformatted": default: return $phone; break; } // end formatting case statement }