Ejemplo n.º 1
0
 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 = '&nbsp;';\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);
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
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;
    }
}
Ejemplo n.º 4
0
 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'];
 }
Ejemplo n.º 5
0
 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;
     }
 }
Ejemplo n.º 6
0
 public function __construct()
 {
     $this->url = freemed::config_value('remitt_url');
     $this->username = freemed::config_value('remitt_user');
     $this->password = freemed::config_value('remitt_pass');
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
 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
 }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
 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;
     }
 }
Ejemplo n.º 13
0
 protected function FixPhoneNumber($phone)
 {
     if (strlen($phone) == 7) {
         return freemed::config_value('default_area_code') . $phone;
     } else {
         return $phone;
     }
 }
Ejemplo n.º 14
0
 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
 }
Ejemplo n.º 15
0
 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;
 }
Ejemplo n.º 16
0
Archivo: API.php Proyecto: rrsc/freemed
 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
 }