/** * Edit clinical notes template, this must be called using AJAX */ public function editTemplateAction() { $clinicalNoteTemplateId = (int) $this->_getParam('clinicalNoteTemplateId'); $cnTemplate = new ClinicalNoteTemplate(); if ($clinicalNoteTemplateId > 0) { $cnTemplate->clinicalNoteTemplateId = $clinicalNoteTemplateId; $cnTemplate->populate(); $definitions = array(); $cndIterator = new ClinicalNoteDefinitionIterator(); $filters = array(); $filters['clinicalNoteTemplateId'] = $clinicalNoteTemplateId; $cndIterator->setFilters($filters); $this->view->definitions = $cndIterator; } $objForm = new WebVista_Form(array('name' => 'cnTemplate')); $objForm->setAction(Zend_Registry::get('baseUrl') . "clinical-notes-manager.raw/process-edit-template"); $objForm->loadORM($cnTemplate, "cnTemplate"); $objForm->setWindow('windowEditTemplate'); $this->view->form = $objForm; $this->render(); }
public function indexAction() { $personId = (int) $this->_getParam('personId'); $clinicalNoteId = (int) $this->_getParam('clinicalNoteId'); trigger_error('ttpid: ' . $personId, E_USER_NOTICE); $cn = new ClinicalNote(); $cn->clinicalNoteId = (int) $clinicalNoteId; $cn->populate(); $templateId = $cn->clinicalNoteTemplateId; $cnTemplate = new ClinicalNoteTemplate(); $cnTemplate->clinicalNoteTemplateId = (int) $templateId; $cnTemplate->populate(); $xml = simplexml_load_string($cnTemplate->template); $objective = ''; foreach ($xml as $question) { foreach ($question as $key => $item) { if ($key != "dataPoint") { continue; } $namespace = (string) $item->attributes()->template; // extract the nsdr: format preg_match('/{nsdr:(.*)}/', $namespace, $matches); if (isset($matches[1])) { $namespace = str_replace('[selectedPatientId]', $personId, $matches[1]); $result = NSDR::populate($namespace); $objective .= $result[$namespace]; } } } $this->view->objective = $objective; $filter = array('personId' => $personId); $pl = new ProblemList(); $pli = $pl->getIterator(); $pli->setFilters($filter); $this->view->problemListIterator = $pli; }
public static function upgradeClinicalNote() { /* NOTE: take output file and # cat upnote.sql | sort -n | uniq > upnote2.sql For it to run quickly all the fields used in the join need to be indexed, otherwise 5 seconds per row give or take */ set_time_limit(0); $db = Zend_Registry::get('dbAdapter'); $genericData = new self(); $sql = "\n\t\tSELECT genericData.name, clinicalNoteDefinitions.clinicalNoteTemplateId\n\t\t\tFROM `genericData`\n\t\t\tINNER JOIN clinicalNotes ON clinicalNotes.clinicalNoteId = genericData.objectId\n\t\t\tINNER JOIN clinicalNoteDefinitions on clinicalNoteDefinitions.clinicalNoteDefinitionId = clinicalNotes.clinicalNoteDefinitionId\n\t\t\tGROUP BY genericData.name, clinicalNoteDefinitions.clinicalNoteTemplateId"; $res = $db->query($sql); while (($row = $res->fetch()) !== false) { $cn = new ClinicalNoteTemplate(); $cn->clinicalNoteTemplateId = (int) $row['clinicalNoteTemplateId']; if (!$cn->populate()) { $error = 'Error populating clinical note ' . $cn->clinicalNoteId; trigger_error($error); continue; } try { $xml = new SimpleXMLElement($cn->template); foreach ($xml as $question) { foreach ($question as $key => $item) { if ($key != 'dataPoint') { continue; } $namespace = (string) $item->attributes()->namespace; $html = preg_replace('/[-\\.]/', '_', $namespace); $output = 'UPDATE ' . $genericData->_table . ' INNER JOIN clinicalNotes ON clinicalNotes.clinicalNoteId = genericData.objectId INNER JOIN clinicalNoteDefinitions on clinicalNoteDefinitions.clinicalNoteDefinitionId = clinicalNotes.clinicalNoteDefinitionId SET `name`=' . $db->quote($namespace) . ' WHERE `name`=' . $db->quote($html) . ' AND objectClass=\'ClinicalNote\' AND clinicalNoteDefinitions.clinicalNoteTemplateId=' . $cn->clinicalNoteTemplateId . ";\n"; file_put_contents('/tmp/upnote.sql', $output, FILE_APPEND); echo "."; } } } catch (Exception $e) { $error = 'Error parsing template for clinical note ' . $cn->clinicalNoteId . ' template ' . $templateId; trigger_error($error); continue; } } }