| 1 | ORXTABS4 ; SLC/PKS - Edit calls, tab parameters preferences. [9/28/00 3:05pm]
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,47,84**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; NOTES: The routines herein are called by those of the same tag 
 | 
|---|
| 5 |  ;        name in ORXTABS2.  Most variables are NEW'd and assigned 
 | 
|---|
| 6 |  ;        by one or more routines in the preceding call chains. 
 | 
|---|
| 7 |  ;        Refer to comments and notes there for additional infor-
 | 
|---|
| 8 |  ;        mation.  
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;   Each tag in this routine must return one of the following:
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ;      1 - A new value entered or selected by the user,
 | 
|---|
| 13 |  ;      2 - A null string,
 | 
|---|
| 14 |  ;      3 - The string "*Invalid*" - to repeat due to invalid entry,
 | 
|---|
| 15 |  ;      4 - The "^" character, indicating user's cancel action.
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | STATUS(TYPE) ; Status, for various tabs.
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; Internal variables used:
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;    ORXAUTH  = Holds current value of AUTHOR value for some TYPEs.
 | 
|---|
| 24 |  ;    ORXFLAG  = Used in set/reset of ORDSTS^ORCHANG2 values.
 | 
|---|
| 25 |  ;    ORXP1    = Prompt piece holder.
 | 
|---|
| 26 |  ;    ORXP2    = Prompt piece holder.
 | 
|---|
| 27 |  ;    ORXSCNT  = Loop counter.
 | 
|---|
| 28 |  ;    ORXSETC  = Set of codes for assignment to DIR(0) variable.
 | 
|---|
| 29 |  ;    ORXSTAGS = Orders STATUS tags, in routine ORXCHANG2 or herein.
 | 
|---|
| 30 |  ;    TYPE     = Type of STATUS being processed; must be one of:
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ;                 - ORDERS
 | 
|---|
| 33 |  ;                 - CONSULTS
 | 
|---|
| 34 |  ;                 - NOTES
 | 
|---|
| 35 |  ;                 - D/C SUMMARIES
 | 
|---|
| 36 |  ;                 - PROBLEMS
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  N ORXAUTH,ORXFLAG,ORXP1,ORXP2,ORXSCNT,ORXSETC,ORXSTAGS
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ; Process DIR call through IF statements below, based on TYPE.
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ; Orders and Consults:
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ;    NOTE: Displayed choices are numerically sequential as coded.
 | 
|---|
| 45 |  ;          Actual storage number values come from routine data tags. 
 | 
|---|
| 46 |  ;          Thus, the default entry must be converted before
 | 
|---|
| 47 |  ;          display, reset before updates - as is done below.
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  I ((TYPE="ORDERS")!(TYPE="CONSULTS")) D
 | 
|---|
| 50 |  .K ORXSTAGS                                 ; Clean up each time.
 | 
|---|
| 51 |  .S ORXSCNT=0                                ; Initialize counter.
 | 
|---|
| 52 |  .S ORXFLAG=1                                ; Start true each time.
 | 
|---|
| 53 |  .;
 | 
|---|
| 54 |  .; Establish loop for tag entries:
 | 
|---|
| 55 |  .F  D  Q:(ORXSTAGS(ORXSCNT)="")!(ORXSTAGS(ORXSCNT)["ZZZ")
 | 
|---|
| 56 |  ..S ORXSCNT=ORXSCNT+1                       ; Increment counter.
 | 
|---|
| 57 |  ..;
 | 
|---|
| 58 |  ..; Assign retrieved values to ORXSTAGS array:
 | 
|---|
| 59 |  ..S ORXSTAGS="ORDSTS+"_ORXSCNT_"^ORCHANG2"  ; ORDERS data tag.
 | 
|---|
| 60 |  ..;
 | 
|---|
| 61 |  ..; For CONSULTS set a different data tag:
 | 
|---|
| 62 |  ..I TYPE="CONSULTS" S ORXSTAGS="CORDSTS+"_ORXSCNT
 | 
|---|
| 63 |  ..;
 | 
|---|
| 64 |  ..S ORXSTAGS(ORXSCNT)=ORXSCNT_";"_$P($T(@ORXSTAGS),";;",2)
 | 
|---|
| 65 |  ..I (ORXSTAGS(ORXSCNT)="")!(ORXSTAGS(ORXSCNT)["ZZZ") Q
 | 
|---|
| 66 |  ..;
 | 
|---|
| 67 |  ..; Reset ORXNOW (current value) number when found:
 | 
|---|
| 68 |  ..I ORXFLAG D
 | 
|---|
| 69 |  ...I $P(ORXSTAGS(ORXSCNT),";",2)=ORXNOW S ORXNOW=$P(ORXSTAGS(ORXSCNT),";",1) S ORXFLAG=0                         ; Do only once each time.
 | 
|---|
| 70 |  ..;
 | 
|---|
| 71 |  ..; Continue building prompt strings from retrieved values:
 | 
|---|
| 72 |  ..S ORXP1=$P(ORXSTAGS(ORXSCNT),";",1)       ; First prompt piece.
 | 
|---|
| 73 |  ..S ORXP1=$$LJ^XLFSTR(ORXP1,9)              ; Format for 9 chars.
 | 
|---|
| 74 |  ..S ORXP2=$P(ORXSTAGS(ORXSCNT),";",3)       ; Second prompt piece.
 | 
|---|
| 75 |  ..S ORXP2=$$LJ^XLFSTR(ORXP2,24)             ; Format for 24 chars.
 | 
|---|
| 76 |  ..;
 | 
|---|
| 77 |  ..; Assign DIR("A") display array:
 | 
|---|
| 78 |  ..S DIR("A",ORXSCNT)=ORXP1_ORXP2            ; Complete prompt string.
 | 
|---|
| 79 |  .;
 | 
|---|
| 80 |  .; Check for bad/missing tag data:
 | 
|---|
| 81 |  .I ORXSCNT<2 W !!,"ERROR: Bad data tag entry(ies)." S ORXNOW="^" Q
 | 
|---|
| 82 |  .;
 | 
|---|
| 83 |  .; Assign remaining DIR variables:
 | 
|---|
| 84 |  .S DIR("T")=120 ; Two minute maximum timeout for response.
 | 
|---|
| 85 |  .S DIR("A")="   Enter # for type of "_ORXPDIS_" to display:  "
 | 
|---|
| 86 |  .S DIR("?")="   Entry must be between 1 and "_(ORXSCNT-1)
 | 
|---|
| 87 |  .S DIR(0)="NA^1:"_(ORXSCNT-1)               ; Numerical, required.
 | 
|---|
| 88 |  .;
 | 
|---|
| 89 |  .; Call tag to get/assign input:
 | 
|---|
| 90 |  .D INPUT^ORXTABS2
 | 
|---|
| 91 |  .;
 | 
|---|
| 92 |  .; Check for user abort:
 | 
|---|
| 93 |  .I ORXNOW="^" Q
 | 
|---|
| 94 |  .;
 | 
|---|
| 95 |  .; Reset user entry to actual number from data tag in use:
 | 
|---|
| 96 |  .S:ORXNOW'="" ORXNOW=$P(ORXSTAGS(ORXNOW),";",2)
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ; Notes and D/C Summaries:
 | 
|---|
| 99 |  I ((TYPE="NOTES")!(TYPE="D/C SUMMARIES")) D
 | 
|---|
| 100 |  .;
 | 
|---|
| 101 |  .; Assign values retrieved to ORXSTAGS array:
 | 
|---|
| 102 |  .S ORXP1="1"                                ; First piece.
 | 
|---|
| 103 |  .S ORXP1=$$LJ^XLFSTR(ORXP1,9)               ; Format for 9 chars.
 | 
|---|
| 104 |  .S ORXP2="All Signed"                       ; Second piece.
 | 
|---|
| 105 |  .S ORXP2=$$LJ^XLFSTR(ORXP2,24)              ; Format for 24 chars.
 | 
|---|
| 106 |  .S DIR("A",1)=ORXP1_ORXP2                   ; First prompt string.
 | 
|---|
| 107 |  .S ORXP1="2"                                ; First piece.
 | 
|---|
| 108 |  .S ORXP1=$$LJ^XLFSTR(ORXP1,9)               ; Format for 9 chars.
 | 
|---|
| 109 |  .S ORXP2="My Unsigned"                      ; Second piece.
 | 
|---|
| 110 |  .S ORXP2=$$LJ^XLFSTR(ORXP2,24)              ; Format for 24 chars.
 | 
|---|
| 111 |  .S DIR("A",2)=ORXP1_ORXP2                   ; Second prompt string.
 | 
|---|
| 112 |  .S ORXP1="3"                                ; First piece.
 | 
|---|
| 113 |  .S ORXP1=$$LJ^XLFSTR(ORXP1,9)               ; Format for 9 chars.
 | 
|---|
| 114 |  .S ORXP2="My Un-cosigned"                   ; Second piece.
 | 
|---|
| 115 |  .S ORXP2=$$LJ^XLFSTR(ORXP2,24)              ; Format for 24 chars.
 | 
|---|
| 116 |  .S DIR("A",3)=ORXP1_ORXP2                   ; Third prompt string.
 | 
|---|
| 117 |  .S ORXP1="4"                                ; First piece.
 | 
|---|
| 118 |  .S ORXP1=$$LJ^XLFSTR(ORXP1,9)               ; Format for 9 chars.
 | 
|---|
| 119 |  .S ORXP2="Signed/Author"                    ; Second piece.
 | 
|---|
| 120 |  .S ORXP2=$$LJ^XLFSTR(ORXP2,24)              ; Format for 24 chars.
 | 
|---|
| 121 |  .S DIR("A",4)=ORXP1_ORXP2                   ; Fourth prompt string.
 | 
|---|
| 122 |  .S ORXP1="5"                                ; First piece.
 | 
|---|
| 123 |  .S ORXP1=$$LJ^XLFSTR(ORXP1,9)               ; Format for 9 chars.
 | 
|---|
| 124 |  .S ORXP2="Signed/Dates"                     ; Second piece.
 | 
|---|
| 125 |  .S ORXP2=$$LJ^XLFSTR(ORXP2,24)              ; Format for 24 chars.
 | 
|---|
| 126 |  .S DIR("A",5)=ORXP1_ORXP2                   ; Fifth prompt string.
 | 
|---|
| 127 |  .;
 | 
|---|
| 128 |  .; Assign remaining DIR variables:
 | 
|---|
| 129 |  .S DIR("T")=120 ; Two minute maximum timeout for response.
 | 
|---|
| 130 |  .S DIR("A")="   Enter # for type of "_ORXPDIS_" to display:  "
 | 
|---|
| 131 |  .S DIR("?")="   Entry must be between 1 and 5"
 | 
|---|
| 132 |  .S DIR(0)="NA^1:5"                          ; Numerical, required.
 | 
|---|
| 133 |  .;
 | 
|---|
| 134 |  .; Call tag to get/assign input:
 | 
|---|
| 135 |  .D INPUT^ORXTABS2
 | 
|---|
| 136 |  .;
 | 
|---|
| 137 |  .; Check for user abort:
 | 
|---|
| 138 |  .I ORXNOW="^" Q
 | 
|---|
| 139 |  .;
 | 
|---|
| 140 |  .; Use ORXAUTH twice to Check for valid entry:
 | 
|---|
| 141 |  .I ORXNOW'="" D
 | 
|---|
| 142 |  ..I (ORXCNT+1)<1 W !!,"ERROR: Improper TABS entry." S ORXNOW="^" Q
 | 
|---|
| 143 |  ..S ORXAUTH=$P($G(ORXSETS),";",ORXCNT+1)
 | 
|---|
| 144 |  ..I ORXAUTH'="AUTHOR" W !!,"ERROR: Improper TABS entry." S ORXNOW="^" Q
 | 
|---|
| 145 |  ..S ORXAUTH=$P($G(ORXCUR),";",$P($G(ORXPCS),";",ORXCNT+1))
 | 
|---|
| 146 |  ..I ((ORXAUTH="")&(ORXNOW=4)) S $P(ORXCUR,";",$P($G(ORXPCS),";",ORXCNT+1))=+DUZ Q                                ; STATUS 4 = DUZ AUTHOR.
 | 
|---|
| 147 |  ..I ORXAUTH="" Q                            ; Stop if already null.
 | 
|---|
| 148 |  ..;
 | 
|---|
| 149 |  ..; For all other entries, set matching AUTHOR value to null:
 | 
|---|
| 150 |  ..S $P(ORXCUR,";",$P($G(ORXPCS),";",ORXCNT+1))=""
 | 
|---|
| 151 |  .;
 | 
|---|
| 152 |  .; Check for deletion entry:
 | 
|---|
| 153 |  .I ORXNOW="@" S ORXNOW=""
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  ; Problems:
 | 
|---|
| 156 |  I TYPE="PROBLEMS" D
 | 
|---|
| 157 |  .K ORXSTAGS                                 ; Clean up each time.
 | 
|---|
| 158 |  .S ORXSETC=""                               ; Clear each time.
 | 
|---|
| 159 |  .S ORXSCNT=0                                ; Initialize counter.
 | 
|---|
| 160 |  .;
 | 
|---|
| 161 |  .; Establish loop for tag entries:
 | 
|---|
| 162 |  .F  D  Q:(ORXSTAGS(ORXSCNT)="")!(ORXSTAGS(ORXSCNT)["ZZZ")
 | 
|---|
| 163 |  ..S ORXSCNT=ORXSCNT+1                       ; Increment counter.
 | 
|---|
| 164 |  ..;
 | 
|---|
| 165 |  ..; Assign retrieved values to ORXSTAGS array:
 | 
|---|
| 166 |  ..S ORXSTAGS="PLSTS+"_ORXSCNT_"^ORCHANG2"   ; Data tags.
 | 
|---|
| 167 |  ..S ORXSTAGS(ORXSCNT)=$P($T(@ORXSTAGS),";;",2)
 | 
|---|
| 168 |  ..I (ORXSTAGS(ORXSCNT)="")!(ORXSTAGS(ORXSCNT)["ZZZ") Q
 | 
|---|
| 169 |  ..S ORXP1=$P(ORXSTAGS(ORXSCNT),";",1)       ; First prompt piece.
 | 
|---|
| 170 |  ..S:ORXSCNT=1 ORXSETC=ORXP1_":"             ; DIR codes string.
 | 
|---|
| 171 |  ..S:ORXSCNT>1 ORXSETC=ORXSETC_";"_ORXP1_":" ;         "
 | 
|---|
| 172 |  ..S ORXP1=$$LJ^XLFSTR(ORXP1,9)              ; Format for 9 chars.
 | 
|---|
| 173 |  ..S ORXP2=$P(ORXSTAGS(ORXSCNT),";",2)       ; Second prompt piece.
 | 
|---|
| 174 |  ..S ORXSETC=ORXSETC_ORXP2                   ; DIR codes string.
 | 
|---|
| 175 |  ..S ORXP2=$$LJ^XLFSTR(ORXP2,24)             ; Format for 24 chars.
 | 
|---|
| 176 |  ..;
 | 
|---|
| 177 |  ..; Assign DIR("A") display array:
 | 
|---|
| 178 |  ..S DIR("A",ORXSCNT)=ORXP1_ORXP2            ; Complete prompt string.
 | 
|---|
| 179 |  .;
 | 
|---|
| 180 |  .; Check for bad/missing data:
 | 
|---|
| 181 |  .I ORXSCNT<2 W !!,"ERROR: Bad PLSTS tag data." S ORXNOW="^" Q
 | 
|---|
| 182 |  .;
 | 
|---|
| 183 |  .; Assign remaining DIR variables:
 | 
|---|
| 184 |  .S DIR("T")=120 ; Two minute maximum timeout for response.
 | 
|---|
| 185 |  .S DIR("A")="   Enter types of "_ORXPDIS_" to display:  "
 | 
|---|
| 186 |  .S DIR(0)="SAO^"_ORXSETC                    ; Optional, Set of Codes.
 | 
|---|
| 187 |  .;
 | 
|---|
| 188 |  .; Call tag to get/assign input:
 | 
|---|
| 189 |  .D INPUT^ORXTABS2
 | 
|---|
| 190 |  .;
 | 
|---|
| 191 |  .; Check for user abort:
 | 
|---|
| 192 |  .I ORXNOW="^" Q
 | 
|---|
| 193 |  .;
 | 
|---|
| 194 |  .; Check for deletion entry:
 | 
|---|
| 195 |  .I ORXNOW="@" S ORXNOW=""
 | 
|---|
| 196 |  ;
 | 
|---|
| 197 |  Q
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  ;
 | 
|---|
| 200 |  ; NOTES ON ENTRIES FOR "CORDSTS" TAG:
 | 
|---|
| 201 |  ;    CORDSTS entries below match previous LM CONSULTS ORDERS
 | 
|---|
| 202 |  ;    "STATUS" settings allowed.  They are also listed in the 
 | 
|---|
| 203 |  ;    ORQ1 routine.  The listings consist of 2 pieces:
 | 
|---|
| 204 |  ;
 | 
|---|
| 205 |  ;         ValueToBeStoredInParam;ListingDescription
 | 
|---|
| 206 |  ;    
 | 
|---|
| 207 | CORDSTS ; Consults ORDERS "STATUS" settings.
 | 
|---|
| 208 |  ;;1;Discontinued
 | 
|---|
| 209 |  ;;2;Complete
 | 
|---|
| 210 |  ;;5;Pending
 | 
|---|
| 211 |  ;;6;Active
 | 
|---|
| 212 |  ;;8;Scheduled
 | 
|---|
| 213 |  ;;9;Partial Results
 | 
|---|
| 214 |  ;;13;Cancelled
 | 
|---|
| 215 |  ;;;All Statuses
 | 
|---|
| 216 |  ;;;ZZZZ
 | 
|---|
| 217 |  ;
 | 
|---|
| 218 |  Q
 | 
|---|
| 219 |  ;
 | 
|---|