public function StatusMapForDate($date) { freemed::acl_enforce('scheduling', 'read'); $s = CreateObject('org.freemedsoftware.api.Scheduler'); $u = freemed::user_cache(); $q = "CALL patientWorkflowStatusByDate( " . $GLOBALS['sql']->quote($s->ImportDate($date)) . ", " . $GLOBALS['sql']->quote($u->getManageConfig('workflow_status_age') + 0) . " )"; return $GLOBALS['sql']->queryAllStoredProc($q); }
public function GetBlockedTimeSlots($providerid, $date = null) { freemed::acl_enforce('scheduling', 'write'); $providerGroups = CreateObject('org.freemedsoftware.module.ProviderGroups'); $providerGroupsIds = $providerGroups->getGroupIds($providerid); $q = "select sbshour,sbsminute,sbsduration from scheduler_block_slots where sbsprovider=" . $GLOBALS['sql']->quote($providerid) . ($date ? " and sbdate='" . $date . "'" : ""); foreach ($providerGroupsIds as $ids) { $q = $q . " or sbsprovidergroup = " . $ids['id']; } return $GLOBALS['sql']->queryAll($q); }
public function GetDetailedRecord($id) { freemed::acl_enforce('emr', 'read'); $q = "SELECT cg.id,cg.groupname,cg.grouplength,cg.groupfrequency,cg.groupmembers,cg.groupfacility as facility, CONCAT(f.psrname,' ',f.psrnote,' (',f.psrcity,',',f.psrstate,')') as groupfacility FROM calgroup cg left outer join facility f on f.id=cg.groupfacility where cg.id=" . $GLOBALS['sql']->quote($id); $groupResult = $GLOBALS['sql']->queryRow($q); if ($groupResult) { $members = $groupResult['groupmembers']; $q2 = "select CONCAT(pa.ptlname, ', ', pa.ptfname, IF(LENGTH(pa.ptmname)>0,CONCAT(' ',pa.ptmname),''), IF(LENGTH(pa.ptsuffix)>0,CONCAT(' ',pa.ptsuffix),''), ' (', pa.ptid, ')') AS patient from patient pa where pa.id in (" . $members . ")"; $membersResult = $GLOBALS['sql']->queryAll($q2); $allMembers = ""; foreach ($membersResult as $mem) { $allMembers = $allMembers . $mem['patient'] . "\n"; } $groupResult['groupmembersName'] = $allMembers; } return $groupResult; }
public function ListTags($criteria) { freemed::acl_enforce('emr', 'read'); if (strlen($criteria) < 3) { return array(); } $query = "SELECT DISTINCT(tag) AS tag FROM " . $this->table_name . " WHERE tag LIKE '%" . $GLOBALS['sql']->escape($criteria) . "%' AND ( dateexpire = 0 OR dateexpire > NOW() ) ORDER BY tag LIMIT 20"; $result = $GLOBALS['sql']->queryCol($query); $found = false; foreach ($result as $entry) { if (strtolower($entry) == strtolower($criteria)) { $found = true; } $return[$entry] = $entry; } if (!$found) { $return[$criteria] = $criteria; } return $return; }
protected function GenerateReport_Jasper($param, $format, $query, $params = NULL, $send_to_printer = null) { //return $params; freemed::acl_enforce('reporting', 'write'); //Checking for default printer if send_to_print is true if ($send_to_printer) { $defaultPrinter = freemed::user_cache()->getManageConfig('defaultPrinter'); if (!$defaultPrinter) { return "DPNS"; } //Default printer not set $printing = CreateObject('org.freemedsoftware.api.Printing'); $printerAvailable = $printing->PrinterAvailable($defaultPrinter); if (!$printerAvailable) { return "PNA"; } //Printer not available } switch ($format) { case 'html': $outformat = 'HTML'; $ext = 'html'; break; case 'xml': $outformat = 'XML'; $ext = 'xml'; break; case 'pdf': $outformat = 'PDF'; $ext = 'pdf'; break; case 'xls': $outformat = 'XLS'; $ext = 'xls'; break; default: $outformat = 'PDF'; $ext = 'pdf'; break; } // end switch format // Create connection string $jdbc_url = "jdbc:mysql://" . DB_HOST . ":3306/" . DB_NAME; // Prepare parameters $parameters = ""; if ($params != NULL && count($params) > 0) { foreach ($params as $k => $p) { $parameters .= " --param=" . $p; switch ($param['params'][$k]['type']) { case 'Date': $parameters .= " --paramformat=date"; break; case 'Facility': case 'User': case 'BottleID': case 'TestStatus': case 'MessageID': case 'EMRModule': case 'SupportModule': $parameters .= " --paramformat=int"; break; case 'Integer': case 'int': $parameters .= " --paramformat=int"; break; default: $parameters .= " --paramformat=string"; break; } } } $reportprefix = $param['report_formatting'] . "." . mktime(); // Wrap and generate $cmd = "java -jar " . PHYSICAL_LOCATION . "/scripts/jasper/JasperWrapper.jar --dburl=" . escapeshellarg($jdbc_url) . " --dbuser="******" --dbpass="******" --ipath=" . escapeshellarg(PHYSICAL_LOCATION . '/data/report/') . " --opath=" . escapeshellarg(PHYSICAL_LOCATION . '/data/cache/') . " --oprefix=" . escapeshellarg($reportprefix) . " --format=" . escapeshellarg($outformat) . " --report=" . escapeshellarg($param['report_formatting'] . ".jrxml") . " " . $parameters; syslog(LOG_INFO, "Jasper cmd = {$cmd}"); // Execute actual report generation `{$cmd} 2>&1 | logger -t JasperWrapper`; $output_file = PHYSICAL_LOCATION . "/data/cache/" . $reportprefix . "." . $ext; //If send_to_printer then send print command and returns if ($send_to_printer) { $printer = CreateObject('org.freemedsoftware.core.PrinterWrapper'); $printer->driver->PrintFile($defaultPrinter, $output_file); unlink($output_file); return "PRINTED"; } switch ($format) { case 'xls': Header('Content-type: application/x-ms-excel'); break; case 'html': Header('Content-type: text/html'); break; case 'xml': Header('Content-type: text/xml'); break; case 'pdf': default: Header('Content-type: application/pdf'); break; } Header("Content-Transfer-Encoding:binary"); Header("Content-Disposition: inline; filename=\"" . $param['report_formatting'] . ".{$ext}\""); Header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 Header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past readfile($output_file); @unlink($output_file); @unlink($output_file . '_files'); die; }
public function picklist($string, $_limit = 10, $inputlimit = 2) { freemed::acl_enforce('emr', 'read'); $limit = $_limit < 10 ? 10 : $_limit; if (strlen($string) < $inputlimit) { syslog(LOG_INFO, "under {$inputlimit}"); return false; } $criteria = addslashes($string); if (!(strpos($criteria, ',') === false)) { list($last, $first) = explode(',', $criteria); } else { if (!(strpos($criteria, ' ') === false)) { list($first, $last) = explode(' ', $criteria); } else { $either = $criteria; } } $last = trim($last); $first = trim($first); $either = trim($either); if ($first and $last) { $q[] = "ptfname LIKE '" . addslashes($either) . "%'"; $q[] = "ptlname LIKE '" . addslashes($either) . "%'"; $q[] = "( ptlname LIKE '" . addslashes($last) . "%' AND " . " ptfname LIKE '" . addslashes($first) . "%' )"; } elseif ($first) { $q[] = "ptfname LIKE '" . addslashes($either) . "%'"; $q[] = "ptlname LIKE '" . addslashes($either) . "%'"; $q[] = "ptfname LIKE '" . addslashes($first) . "%'"; $q[] = "ptid LIKE '%" . addslashes($first) . "%'"; } elseif ($last) { $q[] = "ptfname LIKE '" . addslashes($either) . "%'"; $q[] = "ptlname LIKE '" . addslashes($either) . "%'"; $q[] = "ptlname LIKE '" . addslashes($last) . "%'"; $q[] = "ptid LIKE '%" . addslashes($last) . "%'"; } else { $q[] = "ptfname LIKE '" . addslashes($either) . "%'"; $q[] = "ptlname LIKE '" . addslashes($either) . "%'"; $q[] = "ptid LIKE '%" . addslashes($either) . "%'"; } $query = "SELECT * FROM patient WHERE ( " . join(' OR ', $q) . " ) " . "AND ( ISNULL(ptarchive) OR ptarchive=0 ) LIMIT {$limit}"; syslog(LOG_INFO, "PICK| {$query}"); $result = $GLOBALS['sql']->queryAll($query); if (count($result) < 1) { return array(); } $count = 0; foreach ($result as $r) { $_obj = CreateObject('org.freemedsoftware.core.Patient', $r); $return[(int) $r['id']] = trim(stripslashes($_obj->to_text())); } syslog(LOG_INFO, "picklist| found " . count($return) . " results returned"); return $return; }
public function ExecuteTool($uuid, $param) { freemed::acl_enforce('admin', 'write'); $tool = $this->GetToolParameters($uuid, false); // Sanity checking if (!$tool['tool_name']) { return false; } $s = CreateObject('org.freemedsoftware.api.Scheduler'); foreach ($tool['params'] as $k => $v) { if (!$v['optional'] and !$param[$k]) { syslog(LOG_INFO, get_class($this) . "| parameter {$k} failed for tool {$uuid}"); return false; } switch ($v['type']) { case 'Date': $pass[] = $GLOBALS['sql']->quote($s->ImportDate($param[$k])); break; default: $pass[] = $GLOBALS['sql']->quote($param[$k]); break; } } // Form query $query = "CALL " . $tool['tool_sp'] . " ( " . @join(', ', $pass) . " ); "; //print_r($result); die(); $result = $GLOBALS['sql']->queryAllStoredProc($query); return $result; }
public function GetAll() { freemed::acl_enforce('emr', 'read'); $query = "select a.stamp as stamp, c.username as user, \n concat(b.ptlname, ' ', b.ptmname, ' ', b.ptfname) as patient, \n a.provider, a.rxorig as rxorig, a.note as note,a.approved as approved, \n a.locked as locked, a.id as id \n from " . $this->table_name . " as a, \n patient as b, \n user as c \n where a.patient = b.id and c.id = a.user ORDER BY stamp DESC"; return $GLOBALS['sql']->queryAll($query); }
public function GetDetailedRecordWithIntake($id) { freemed::acl_enforce('emr', 'read'); $id = $GLOBALS['sql']->quote($id); $q = "select * FROM callin c where c.id=" . $id . " AND " . $this->archive_check; $return = $GLOBALS['sql']->queryRow($q); $q = "select tii.id as treatment_id,tii.* from treatment_initial_intake tii where tii.intaketype = 'callin' and tii.patient = " . $id; $r = $GLOBALS['sql']->queryRow($q); //return $r; if ($r) { $return = array_merge($r, $return); } return $return; }
public function AgingReportQualified($criteria) { freemed::acl_enforce('financial', 'read'); $s = CreateObject('org.freemedsoftware.api.Scheduler'); foreach ($criteria as $k => $v) { //print "criteria key = $k, value = $v<hr/>\n"; switch ($k) { case 'aging': switch ($v) { case '0-30': case '31-60': case '61-90': case '91-120': list($lower, $upper) = explode('-', $v); break; case '120+': $lower = '120'; $upper = '10000'; break; } // end inner aging switch if ($upper) { $q[] = "(TO_DAYS(NOW()) - TO_DAYS(pa.payrecdt) >= " . addslashes($lower) . ") AND " . "(TO_DAYS(NOW()) - TO_DAYS(pa.payrecdt) <= " . addslashes($upper) . ")"; } break; // end aging case // end aging case case 'billed': if ($v == '0' or $v == '1') { $q[] = "p.procbilled = '" . addslashes($v) . "'"; } break; // end billed case // end billed case case 'date': if ($v) { $q[] = "pa.payrecdt = '" . addslashes($s->ImportDate($v)) . "'"; } break; // end date // end date case 'date_of': if ($v) { $q[] = "p.procdt = '" . addslashes($s->ImportDate($v)) . "'"; } break; // end procedure date // end procedure date case 'procedure': if ($v) { $q[] = "p.id = '" . addslashes($v) . "'"; } break; // end procedure case // end procedure case case 'provider': if ($v) { $q[] = "pr.id = '" . addslashes($v) . "'"; } break; // end provider case // end provider case case 'facility': if ($v) { $q[] = "p.procpos = '" . addslashes($v) . "'"; } break; // end facility case // end facility case case 'patient': if ($v) { $q[] = "pt.id = '" . addslashes($v) . "'"; } break; // end patient case // end patient case case 'first_name': if ($v) { $q[] = "pt.ptfname LIKE '%" . addslashes($v) . "%'"; } break; // end first name // end first name case 'last_name': if ($v) { $q[] = "pt.ptlname LIKE '%" . addslashes($v) . "%'"; } break; // end last name // end last name case 'type': if ($v) { $q[] = "pa.payreccat = '" . addslashes($v) . "'"; } break; case 'date_from': if ($v) { $q[] = "pa.payrecdtadd >= '" . addslashes($v) . "'"; } break; case 'date_to': if ($v) { $q[] = "pa.payrecdtadd <= '" . addslashes($v) . "'"; } break; case 'tag': $tag_object = CreateObject('org.freemedsoftware.module.PatientTag'); $obj = $tag_object->SimpleTagSearch($v); for ($i = 0; $i < count($obj); $i++) { $patient_ids[] = "p.procpatient = '" . $obj[$i]['patient_record'] . "'"; } $condition = join(' OR ', $patient_ids); if ($condition != "") { $condition = '(' . $condition . ')'; } $q[] = $condition; break; } // end outer criteria type switch } // end criteria foreach loop //print "debug: criteria = ".join(' AND ', $q)." <br/>\n"; $query = "SELECT " . "CONCAT(pt.ptlname, ', ', pt.ptfname, ' ', pt.ptmname) AS patient, " . "pt.id AS patient_id, " . "CONCAT(pr.phyfname, ' ', pr.phylname) AS provider, " . "pr.id AS provider_id, " . "ROUND(p.procamtpaid, 2) AS total_amount_paid, " . "ROUND(p.procbalcurrent, 2) AS total_balance, " . "ROUND(IF(FIND_IN_SET(pa.payreccat, '0,1,7,8,11'), pa.payrecamt, 0), 2) AS money_in, " . "ROUND(IF(FIND_IN_SET(pa.payreccat, '0,1,7,8,11'), 0, pa.payrecamt), 2) AS money_out, " . "p.id AS procedure_id, " . "p.procdt AS date_of, " . "DATE_FORMAT(p.procdt, '%m/%d/%Y') AS date_of_mdy, " . "pa.payrecdtadd AS payment_date, " . "DATE_FORMAT(pa.payrecdt, '%m/%d/%Y') AS payment_date_mdy, " . "pa.payreccat AS item_type_id, " . "CASE pa.payreccat " . "WHEN 0 THEN '" . addslashes(__("Payment")) . "' " . "WHEN 1 THEN '" . addslashes(__("Adjustment")) . "' " . "WHEN 2 THEN '" . addslashes(__("Refund")) . "' " . "WHEN 3 THEN '" . addslashes(__("Denial")) . "' " . "WHEN 4 THEN '" . addslashes(__("Rebill")) . "' " . "WHEN 5 THEN '" . addslashes(__("Charge")) . "' " . "WHEN 6 THEN '" . addslashes(__("Transfer")) . "' " . "WHEN 7 THEN '" . addslashes(__("Withholding")) . "' " . "WHEN 8 THEN '" . addslashes(__("Deductable")) . "' " . "WHEN 9 THEN '" . addslashes(__("Fee Adjustment")) . "' " . "WHEN 10 THEN '" . addslashes(__("Billed")) . "' " . "WHEN 11 THEN '" . addslashes(__("Copayment")) . "' " . "WHEN 12 THEN '" . addslashes(__("Writeoff")) . "' " . "ELSE '" . __("Unknown") . "' END AS item_type, " . "pa.id AS item " . "FROM procrec p " . "LEFT OUTER JOIN payrec pa ON pa.payrecproc=p.id " . "LEFT OUTER JOIN patient pt ON pt.id=p.procpatient " . "LEFT OUTER JOIN physician pr ON pr.id=p.procphysician " . "WHERE " . (is_array($q) ? join(' AND ', $q) : ' ( 1 > 0 ) ') . " " . "ORDER BY date_of DESC, item"; //print "<hr/>query = \"$query\"<hr/>\n"; $result = $GLOBALS['sql']->queryAll($query); $return = array(); foreach ($result as $r) { // Make sure to deserialize the id map, since // we can't actually extract values from it using // SQL regex's, or if we could, it would be a // huge waste of processor time... if (is_array(@unserialize($r['id_map']))) { $id_map = unserialize($r['id_map']); $r['id_map'] = $id_map[$r['_provider']]; } else { $id_map = array(); } $return[] = $r; // patient, claims, paid, balance, ratio } return $return; }
public function SetValues($hash) { freemed::acl_enforce('admin', 'write'); if (!is_object($hash) && !is_array($hash)) { return false; } $h = (array) $hash; foreach ($h as $k => $v) { $q = "UPDATE config SET c_value=" . $GLOBALS['sql']->quote($v) . " WHERE c_option=" . $GLOBALS['sql']->quote($k); $GLOBALS['sql']->query($q); } return true; }
public function ImportTables($tables) { freemed::acl_enforce('admin', 'write'); foreach ($tables['exporttables'] as $v) { //$created = $this->ImportStockData($v); if (!$created) { return false; } } return true; }
public function GetAll() { freemed::acl_enforce('emr', 'read'); $q = "SELECT *, CONCAT(lastname, ' ', lastname2) AS fulllastname FROM " . $this->table_name . " WHERE processed = FALSE ORDER BY dateof DESC"; return $GLOBALS['sql']->queryAll($q); }
public function SetAppointment($data = NULL) { freemed::acl_enforce('scheduling', 'write'); // Check for bogus data if ($data == NULL) { return false; } $ourdata = (array) $data; // Set defaults $fields = array('caltype' => 'pat', 'calstatus' => 'scheduled'); // Only pass fields that are set as overrides foreach ($this->calendar_field_mapping as $k => $v) { if (isset($ourdata[$k])) { $fields[$v] = $ourdata[$k]; } } // Set add and modify $fields['caldateof'] = $this->ImportDate($fields['caldateof']); $this_user = freemed::user_cache(); $fields['user'] = $this_user->user_number; $query = $GLOBALS['sql']->insert_query('scheduler', $fields); $result = $GLOBALS['sql']->query($query); if (!$result) { return false; } else { return $GLOBALS['sql']->lastInsertId('scheduler', 'id'); } }
function AgingReportQualified($criteria) { freemed::acl_enforce('financial', 'read'); $s = CreateObject('org.freemedsoftware.api.Scheduler'); foreach ($criteria as $k => $v) { //print "criteria key = $k, value = $v<hr/>\n"; switch ($k) { case 'aging': switch ($v) { case '0-30': case '31-60': case '61-90': case '91-120': list($lower, $upper) = explode('-', $v); break; case '120+': $lower = '120'; $upper = '10000'; break; } // end inner aging switch if ($upper) { $q[] = "(TO_DAYS(NOW()) - TO_DAYS(p.procdt) >= " . addslashes($lower) . ") AND " . "(TO_DAYS(NOW()) - TO_DAYS(p.procdt) <= " . addslashes($upper) . ")"; } break; // end aging case // end aging case case 'billed': if ($v == '0' or $v == '1') { $q[] = "p.procbilled = '" . addslashes($v) . "'"; } break; // end billed case // end billed case case 'date': if ($v && ($criteria['week'] == "" || $criteria['week'] == NULL)) { $q[] = "p.procdt = '" . addslashes($s->ImportDate($v)) . "'"; } break; // end date // end date case 'week': if ($v && ($criteria['date'] != "" || $criteria['date'] != NULL)) { $q[] = "WEEK(p.procdt) = WEEK('" . addslashes($s->ImportDate($criteria['date'])) . "')"; } break; // end week // end week case 'provider': if ($v) { $q[] = "p.procphysician = '" . addslashes($v) . "'"; } break; // end patient case // end patient case case 'facility': if ($v) { $q[] = "p.procpos = '" . addslashes($v) . "'"; } break; // end patient case // end patient case case 'patient': if ($v) { $q[] = "pt.id = '" . addslashes($v) . "'"; } break; // end patient case // end patient case case 'first_name': if ($v) { $q[] = "pt.ptfname LIKE '%" . addslashes($v) . "%'"; } break; // end first name // end first name case 'last_name': if ($v) { $q[] = "pt.ptlname LIKE '%" . addslashes($v) . "%'"; } break; // end last name // end last name case 'payer': if ($v) { $q[] = "c.covinsco = '" . addslashes($v) . "'"; } break; // end payer case // end payer case case 'payergroup': if ($v) { $q[] = "i.inscogroup = '" . addslashes($v) . "'"; } break; // end payergroup case // end payergroup case case 'plan': if ($v) { $q[] = "c.covplanname = '" . addslashes($v) . "'"; } break; case 'status': if ($v) { $q[] = "p.procstatus = '" . addslashes($v) . "'"; } break; case 'tag': $tag_object = CreateObject('org.freemedsoftware.module.PatientTag'); $obj = $tag_object->SimpleTagSearch($v); for ($i = 0; $i < count($obj); $i++) { $patient_ids[] = "p.procpatient = '" . $obj[$i]['patient_record'] . "'"; } $condition = join(' OR ', $patient_ids); if ($condition != "") { $condition = '(' . $condition . ')'; } $q[] = $condition; break; } // end outer criteria type switch } // end criteria foreach loop //print "debug: criteria = ".join(' AND ', $q)." <br/>\n"; $query = "SELECT DISTINCT p.id AS Id, CONCAT(pt.ptlname, ', ', pt.ptfname, " . "' ', pt.ptmname) AS patient, " . "pt.id AS patient_id, " . "p.procdt AS date_of, " . "DATE_FORMAT(p.procdt,'%m/%d/%Y') AS date_of_mdy, " . "p.procstatus AS status, " . "p.procbilled AS billed, " . "p.procphysician AS provider_id, " . "p.proccurcovtp AS proc_cov_type, " . "p.id AS claim, " . "p.procpos AS pos, " . "c.covpatinsno AS insured_id, " . "c.covinsco AS payer_id, " . "CONCAT(i.insconame, ' (', i.inscocity, ', ', " . "i.inscostate, ')') AS payer, " . "i.inscoidmap AS id_map, " . "cl.clbillkey AS billkey, " . "TRUNCATE(p.procamtpaid, 2) AS paid, " . "TRUNCATE(p.procbalcurrent, 2) AS balance " . "FROM procrec p " . "LEFT OUTER JOIN coverage c ON p.proccurcovid = c.id " . "LEFT OUTER JOIN insco i ON c.covinsco = i.id " . "LEFT OUTER JOIN patient pt ON p.procpatient = pt.id " . "LEFT OUTER JOIN claimlog cl ON cl.clprocedure = p.id AND cl.clbillkey != 0 AND cl.clbillkey=(select max(tcl.clbillkey) from claimlog tcl where tcl.clprocedure=p.id) " . "WHERE "; if ($criteria['zerobalance'] + 0 == '0') { $query .= "p.procbalcurrent > 0 AND "; } $query .= (is_array($q) ? join(' AND ', $q) : ' ( 1 > 0 ) ') . " " . "ORDER BY patient, balance DESC"; //print "<hr/>query = \"$query\"<hr/>\n"; $result = $GLOBALS['sql']->queryAll($query); $return = array(); foreach ($result as $r) { // Make sure to deserialize the id map, since // we can't actually extract values from it using // SQL regex's, or if we could, it would be a // huge waste of processor time... $pm = CreateObject('org.freemedsoftware.module.ProviderModule'); $r['provider_name'] = $pm->fullName($r['provider_id']); if (is_array(@unserialize($r['id_map']))) { $id_map = unserialize($r['id_map']); $r['id_map'] = $id_map[$r['provider_id']]; } else { $id_map = array(); } $fac = CreateObject('org.freemedsoftware.module.FacilityModule'); $r['posname'] = $fac->to_text($r['pos']); $return[] = $r; // patient, claims, paid, balance, ratio } return $return; }
public function DelAllowedACOs($userId) { freemed::acl_enforce('admin', 'delete'); $acl = $this->acl_object(); return $acl->del_allowed_objects($userId); }
public function mod($data, $blockedACOs = NULL, $allowedACOs = NULL) { freemed::acl_enforce('admin', 'write'); if (is_array($data)) { if (!$data['id']) { return false; } } elseif (is_object($data)) { if (!$data->id) { return false; } } else { return false; } $ourdata = (array) $data; // Protect admin user if ($ourdata['id'] + 0 == 1) { return false; } $tempVariables = $this->variables; if (!$data['userpassword']) { // remove password from variables if no need to change the password unset($tempVariables[1]); } $this->mod_pre($ourdata); $GLOBALS['sql']->load_data($ourdata); $result = $GLOBALS['sql']->query($GLOBALS['sql']->update_query('user', $tempVariables, array("id" => $data['id']))); if ($data['useracl']) { if (!is_array($data['useracl'])) { $data['useracl'] = explode(",", $data['useracl']); } } else { $data['useracl'] = array($data['useracl']); } // Create user ACL object If not already exists in ACL tables module_function('ACL', 'UserAdd', array($data['id'])); if (is_array($data['useracl'])) { $groups = module_function('ACL', 'UserGroups'); foreach ($groups as $group) { $found = false; foreach ($data['useracl'] as $acl_id) { if ($group[1] == $acl_id) { $found = true; } } $inThisGroup = module_function('ACL', 'UserInGroup', array($data['id'], $group[1])); if ($found && !$inThisGroup) { // Need to add $o = module_function('ACL', 'AddUserToGroup', array($data['id'], $group[1])); } if (!$found && $inThisGroup) { // Need to remove $abc = $abc . ':rm:'; $o = module_function('ACL', 'RemoveUserFromGroup', array($data['id'], $group[1])); } } } // ACL routine for adding all blockedACOs if ($blockedACOs) { module_function('ACL', 'DelBlockedACOs', $data['id']); $blockedACOsSuccess = module_function('ACL', 'AddBlockedACOs', array($data['id'], $blockedACOs)); } else { //else remove blocked permission if exists module_function('ACL', 'DelBlockedACOs', $data['id']); } // ACL routine for adding all allowedACOs if ($allowedACOs) { module_function('ACL', 'DelAllowedACOs', $data['id']); $allowedACOsSuccess = module_function('ACL', 'AddAllowedACOs', array($data['id'], $allowedACOs)); } else { //else remove blocked permission if exists module_function('ACL', 'DelAllowedACOs', $data['id']); } return $result ? true : false; }
public function mod($data) { freemed::acl_enforce('emr', 'modify'); if (!is_array($data) and !is_object($data)) { syslog(LOG_INFO, get_class($this) . "| no data presented"); return false; } $ourdata = (array) $data; if (!$ourdata['id']) { syslog(LOG_INFO, get_class($this) . "| no id presented"); return false; } // Check for modification locking if (!freemed::lock_override()) { if ($this->locked($ourdata['id'])) { return false; } } // Handle row-level locking mechanism $lock = CreateObject('org.freemedsoftware.core.RecordLock', $this->table_name); if ($lock->IsLocked($ourdata['id'])) { return false; } else { $lock->LockRow($ourdata['id']); } $ourdata = $this->prepare($ourdata); $this->mod_pre($ourdata); $GLOBALS['sql']->load_data($ourdata); $result = $GLOBALS['sql']->query($GLOBALS['sql']->update_query($this->table_name, $this->variables, array("id" => $data['id']), $this->date_variables)); $this->mod_post($ourdata); $this->moduleFieldCheck(get_class($this), $data['id'], $data); // Unlock row, since update is done $lock->UnlockRow($data['id']); return $result ? true : false; }