Moved diagnoses from orders to individual procedures.
authorRod Roark <rod@sunsetsystems.com>
Tue, 12 Mar 2013 03:38:08 +0000 (11 20:38 -0700)
committerRod Roark <rod@sunsetsystems.com>
Thu, 14 Mar 2013 20:11:52 +0000 (14 13:11 -0700)
interface/forms/procedure_order/new.php
interface/forms/procedure_order/report.php
interface/orders/gen_hl7_order.inc.php
interface/orders/single_order_results.php
sql/4_1_1-to-4_1_2_upgrade.sql
sql/database.sql

index f2b2b30..3b2d25c 100644 (file)
@@ -75,7 +75,6 @@ if ($_POST['bn_save'] || $_POST['bn_xmit']) {
     "date_collected = " . QuotedOrNull(formData('form_date_collected')) . ", " .
     "order_priority = '" . formData('form_order_priority')              . "', " .
     "order_status = '" . formData('form_order_status')                  . "', " .
-    "diagnoses = '" . formData('form_diagnoses')                        . "', " .
     "patient_instructions = '" . formData('form_patient_instructions')  . "', " .
     "patient_id = '" . $pid                                             . "', " .
     "encounter_id = '" . $encounter                                     . "'";
@@ -112,9 +111,10 @@ if ($_POST['bn_save'] || $_POST['bn_xmit']) {
 
     $poseq = sqlInsert("INSERT INTO procedure_order_code SET ".
       "procedure_order_id = ?, " .
+      "diagnoses = ?, " .
       "procedure_code = (SELECT procedure_code FROM procedure_type WHERE procedure_type_id = ?), " .
       "procedure_name = (SELECT name FROM procedure_type WHERE procedure_type_id = ?)",
-      array($formid, $ptid, $ptid));
+      array($formid, strip_escape_custom($_POST['form_proc_type_diag'][$i]), $ptid, $ptid));
 
     $qres = sqlStatement("SELECT " .
       "q.procedure_code, q.question_code, q.options, q.fldtype " .
@@ -292,6 +292,12 @@ function addProcLine() {
   " title='<?php echo xla('Click to select the desired procedure'); ?>'" +
   "  style='width:100%;cursor:pointer;cursor:hand' readonly />" +
   " <input type='hidden' name='form_proc_type[" + i + "]' value='-1' />" +
+  "<br /><b><?php echo xla('Diagnoses'); ?>: </b>" +
+  "<input type='text' size='50' name='form_proc_type_diag[" + i + "]'" +
+  " onclick='sel_related(this.name)'" +
+  " title='<?php echo xla('Click to add a diagnosis'); ?>'" +
+  " onfocus='this.blur()'" +
+  " style='cursor:pointer;cursor:hand' readonly />" +
   " <div style='width:95%;' id='qoetable[" + i + "]'></div>";
  sel_proc_type(i);
  return false;
@@ -424,17 +430,6 @@ generate_form_field(array('data_type'=>1,'field_id'=>'order_status',
  </tr>
 
  <tr>
-  <td width='1%' valign='top' nowrap><b><?php xl('Diagnoses','e'); ?>:</b></td>
-  <td valign='top'>
-   <input type='text' size='50' name='form_diagnoses'
-    value='<?php echo $row['diagnoses'] ?>' onclick='sel_related(this.name)'
-    title='<?php echo xla('Click to add a diagnosis'); ?>'
-    onfocus='this.blur()'
-    style='width:100%;cursor:pointer;cursor:hand' readonly />
-  </td>
- </tr>
-
- <tr>
   <td width='1%' valign='top' nowrap><b><?php xl('Patient Instructions','e'); ?>:</b></td>
   <td valign='top'>
    <textarea rows='3' cols='40' name='form_patient_instructions' style='width:100%'
@@ -465,7 +460,7 @@ generate_form_field(array('data_type'=>1,'field_id'=>'order_status',
   if ($formid) {
     $opres = sqlStatement("SELECT " .
       "pc.procedure_order_seq, pc.procedure_code, pc.procedure_name, " .
-      "pt.procedure_type_id " .
+      "pc.diagnoses, pt.procedure_type_id " .
       "FROM procedure_order_code AS pc " .
       "LEFT JOIN procedure_type AS pt ON pt.lab_id = ? AND " .
       "pt.procedure_code = pc.procedure_code " .
@@ -495,6 +490,12 @@ generate_form_field(array('data_type'=>1,'field_id'=>'order_status',
     title='<?php xla('Click to select the desired procedure','e'); ?>'
     style='width:100%;cursor:pointer;cursor:hand' readonly />
    <input type='hidden' name='form_proc_type[<?php echo $i; ?>]' value='<?php echo $ptid ?>' />
+   <br /><b><?php echo xlt('Diagnoses'); ?>:</b>
+   <input type='text' size='50' name='form_proc_type_diag[<?php echo $i; ?>]'
+    value='<?php echo attr($oprow['diagnoses']) ?>' onclick='sel_related(this.name)'
+    title='<?php echo xla('Click to add a diagnosis'); ?>'
+    onfocus='this.blur()'
+    style='cursor:pointer;cursor:hand' readonly />
    <!-- MSIE innerHTML property for a TABLE element is read-only, so using a DIV here. -->
    <div style='width:95%;' id='qoetable[<?php echo $i; ?>]'>
 <?php
index ea4b3f5..b8a5901 100644 (file)
@@ -12,7 +12,7 @@ include_once($GLOBALS["srcdir"] . "/options.inc.php");
 
 function procedure_order_report($pid, $encounter, $cols, $id) {
   $data = sqlQuery("SELECT " .
-    "po.procedure_order_id, po.date_ordered, po.diagnoses, " .
+    "po.procedure_order_id, po.date_ordered, " .
     "po.order_status, po.specimen_type, " .
     "pp.name AS labname, pr.procedure_report_id, " .
     "u.lname AS ulname, u.fname AS ufname, u.mname AS umname " .
index 808d88d..608a875 100644 (file)
@@ -2,7 +2,7 @@
 /**
 * Functions to support HL7 order generation.
 *
-* Copyright (C) 2012 Rod Roark <rod@sunsetsystems.com>
+* Copyright (C) 2012-2013 Rod Roark <rod@sunsetsystems.com>
 *
 * LICENSE: This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
@@ -150,7 +150,7 @@ function gen_hl7_order($orderid, &$out) {
   $out = '';
 
   $porow = sqlQuery("SELECT " .
-    "po.date_collected, po.date_ordered, po.order_priority, po.diagnoses, " .
+    "po.date_collected, po.date_ordered, po.order_priority, " .
     "pp.*, " .
     "pd.pid, pd.pubpid, pd.fname, pd.lname, pd.mname, pd.DOB, pd.ss, " .
     "pd.phone_home, pd.phone_biz, pd.sex, pd.street, pd.city, pd.state, pd.postal_code, " .
@@ -168,7 +168,7 @@ function gen_hl7_order($orderid, &$out) {
   if (empty($porow)) return "Procedure order or lab is missing for order ID '$orderid'";
 
   $pcres = sqlStatement("SELECT " .
-    "pc.procedure_code, pc.procedure_name, pc.procedure_order_seq " .
+    "pc.procedure_code, pc.procedure_name, pc.procedure_order_seq, pc.diagnoses " .
     "FROM procedure_order_code AS pc " .
     "WHERE " .
     "pc.procedure_order_id = ? " .
@@ -337,8 +337,8 @@ function gen_hl7_order($orderid, &$out) {
     // Diagnoses.  Currently hard-coded for ICD9 and we'll surely want to make
     // this more flexible (probably when some lab needs another diagnosis type).
     $setid2 = 0;
-    if (!empty($porow['diagnoses'])) {
-      $relcodes = explode(';', $porow['diagnoses']);
+    if (!empty($pcrow['diagnoses'])) {
+      $relcodes = explode(';', $pcrow['diagnoses']);
       foreach ($relcodes as $codestring) {
         if ($codestring === '') continue;
         list($codetype, $code) = explode(':', $codestring);
index 94ca84d..a75c2aa 100644 (file)
@@ -78,15 +78,17 @@ if (!empty($_POST['form_sign_list'])) {
 }
 
 $orow = sqlQuery("SELECT " .
-  "po.procedure_order_id, po.date_ordered, po.diagnoses, " .
+  "po.procedure_order_id, po.date_ordered, " .
   "po.order_status, po.specimen_type, " .
   "pd.pubpid, pd.lname, pd.fname, pd.mname, " .
+  "fe.date, " .
   "pp.name AS labname, " .
   "u.lname AS ulname, u.fname AS ufname, u.mname AS umname " .
   "FROM procedure_order AS po " .
   "LEFT JOIN patient_data AS pd ON pd.pid = po.patient_id " .
   "LEFT JOIN procedure_providers AS pp ON pp.ppid = po.lab_id " .
   "LEFT JOIN users AS u ON u.id = po.provider_id " .
+  "LEFT JOIN form_encounter AS fe ON fe.pid = po.patient_id AND fe.encounter = po.encounter_id " .
   "WHERE po.procedure_order_id = ?",
   array($orderid));
 ?>
@@ -160,8 +162,8 @@ var mypcc = '<?php echo $GLOBALS['phone_country_code'] ?>';
  <tr bgcolor='#cccccc'>
   <td nowrap><?php echo xlt('Order Status'); ?></td>
   <td><?php echo myCellText($orow['order_status']); ?></td>
-  <td nowrap><?php echo xlt('Diagnoses'); ?></td>
-  <td><?php echo myCellText($orow['diagnoses']); ?></td>
+  <td nowrap><?php echo xlt('Encounter Date'); ?></td>
+  <td><?php echo myCellText(oeFormatShortDate(substr($orow['date'], 0, 10))); ?></td>
  </tr>
  <tr bgcolor='#cccccc'>
   <td nowrap><?php echo xlt('Lab'); ?></td>
index e08764e..de53a80 100644 (file)
@@ -329,3 +329,14 @@ CREATE TABLE IF NOT EXISTS `direct_message_log` (
   KEY `patient_id` (`patient_id`)
 ) ENGINE=MyISAM;
 #EndIf
+
+#IfMissingColumn procedure_order_code diagnoses
+ALTER TABLE `procedure_order_code`
+  ADD COLUMN `diagnoses` text NOT NULL DEFAULT '' COMMENT
+  'diagnoses and maybe other coding (e.g. ICD9:111.11)';
+UPDATE procedure_order_code AS pc, procedure_order AS po
+  SET pc.diagnoses = po.diagnoses
+  WHERE po.procedure_order_id = pc.procedure_order_id;
+ALTER TABLE `procedure_order` DROP COLUMN diagnoses;
+#EndIf
+
index 3334fb7..335d7fa 100644 (file)
@@ -5457,7 +5457,6 @@ CREATE TABLE `procedure_order` (
   `date_ordered`           date         DEFAULT NULL,
   `order_priority`         varchar(31)  NOT NULL DEFAULT '',
   `order_status`           varchar(31)  NOT NULL DEFAULT '' COMMENT 'pending,routed,complete,canceled',
-  `diagnoses`              text         NOT NULL DEFAULT '' COMMENT 'diagnoses and maybe other coding (e.g. ICD9:111.11)',
   `patient_instructions`   text         NOT NULL DEFAULT '',
   `activity`               tinyint(1)   NOT NULL DEFAULT 1  COMMENT '0 if deleted',
   `control_id`             bigint(20)   NOT NULL            COMMENT 'This is the CONTROL ID that is sent back from lab',
@@ -5476,6 +5475,7 @@ CREATE TABLE `procedure_order_code` (
   `procedure_code`      varchar(31) NOT NULL DEFAULT ''     COMMENT 'like procedure_type.procedure_code',
   `procedure_name`      varchar(255) NOT NULL DEFAULT ''    COMMENT 'descriptive name of the procedure code',
   `procedure_source`    char(1)     NOT NULL DEFAULT '1'    COMMENT '1=original order, 2=added after order sent',
+  `diagnoses`           text        NOT NULL DEFAULT ''     COMMENT 'diagnoses and maybe other coding (e.g. ICD9:111.11)',
   PRIMARY KEY (`procedure_order_id`, `procedure_order_seq`)
 ) ENGINE=MyISAM;