| 1 | ORXTABS ; SLC/PKS - Edit tab parameters preferences.  [10/17/00 2:44pm] | 
|---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,47,84**;Dec 17, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Main control routine is herein for Tab Preferences Editing. | 
|---|
| 5 | ;    Works with routines ORXTABS1 and ORXTABS2.  ORXTABS1 contains | 
|---|
| 6 | ;    additional control tags that work in conjunction with the | 
|---|
| 7 | ;    control code at the top of this routine, in order to keep this | 
|---|
| 8 | ;    one below 10K size maximum.  ORXTABS2 contains tags to handle | 
|---|
| 9 | ;    individual preference edit/input, making calls to ORXTABS3, | 
|---|
| 10 | ;    ORXTABS4, etc., where code for individual dialogues reside. | 
|---|
| 11 | ; | 
|---|
| 12 | Q | 
|---|
| 13 | ; | 
|---|
| 14 | EN ; Entry point - called by option [ORX PARAM TAB PREF]. | 
|---|
| 15 | ; | 
|---|
| 16 | ; Variables used: | 
|---|
| 17 | ; | 
|---|
| 18 | ;    DIR,X,Y = FM user input variables. | 
|---|
| 19 | ;    ORXANY  = Flag for number of changes. | 
|---|
| 20 | ;    ORXCDIS = Display holder for counter display. | 
|---|
| 21 | ;    ORXCHC  = User's choice of parameter value to edit. | 
|---|
| 22 | ;    ORXCNT  = Loop counter; re-used in various tags. | 
|---|
| 23 | ;    ORXCUR  = Existing settings for a parameter. | 
|---|
| 24 | ;    ORXERR  = Error array used in call to XPAR. | 
|---|
| 25 | ;    ORXNEW  = New value entered by user. | 
|---|
| 26 | ;    ORXNOW  = Cuttent setting of a parameter piece value. | 
|---|
| 27 | ;    ORXNUM  = Array count holder. | 
|---|
| 28 | ;    ORXPAR  = Working variable for parameter definitions, etc. | 
|---|
| 29 | ;    ORXPARS = Becomes array of parameters from TABS tag. | 
|---|
| 30 | ;    ORXPCS  = Array of formal parameter string's piece settings. | 
|---|
| 31 | ;    ORXPDIR = Display prompt piece (first piece). | 
|---|
| 32 | ;    ORXPDIS = Holder for prompt piece of each value. | 
|---|
| 33 | ;    ORXPNAM = Stores name of current parameter definition. | 
|---|
| 34 | ;    ORXPRO  = Current prompt. | 
|---|
| 35 | ;    ORXPSTR = String of prompts. | 
|---|
| 36 | ;    ORXSETS = Setting(s) pieces for a parameter. | 
|---|
| 37 | ;    ORXSTOP = Flag to stop editing. | 
|---|
| 38 | ;    ORXTAB  = Becomes current tab, as exists in last part of formal | 
|---|
| 39 | ;              parameter definition string. | 
|---|
| 40 | ;    ORXTAG  = Current data tag. | 
|---|
| 41 | ;    ORXTCNT = Current tab line counter. | 
|---|
| 42 | ;    ORXTNM  = First piece of current tab from text entry. | 
|---|
| 43 | ;    ORXVAL  = Value holder. | 
|---|
| 44 | ; | 
|---|
| 45 | N DIR,X,Y,ORXANY,ORXCDIS,ORXCHC,ORXCNT,ORXCUR,ORXERR,ORXNEW,ORXNOW,ORXNUM,ORXPAR,ORXPARS,ORXPCS,ORXPDIR,ORXPDIS,ORXPNAM,ORXPRO,ORXPSTR,ORXSETS,ORXSTOP,ORXTAB,ORXTAG,ORXTCNT,ORXTNM,ORXVAL | 
|---|
| 46 | ; | 
|---|
| 47 | S ORXSTOP=0                          ; Preset flag before starting. | 
|---|
| 48 | ; | 
|---|
| 49 | ; Establish control loop for entire editing process. | 
|---|
| 50 | F  Q:ORXSTOP  D | 
|---|
| 51 | .D BLDLIST Q:ORXSTOP                 ; ORXSTOP here = list problem. | 
|---|
| 52 | .D CHOOSE Q:ORXSTOP                  ; ORXSTOP here = user punted. | 
|---|
| 53 | .D PARAMS(ORXTAB)                    ; ORXTAB set by CHOOSE tag. | 
|---|
| 54 | .D EDIT^ORXTABS1                     ; User editing. | 
|---|
| 55 | .; | 
|---|
| 56 | .; ORXANY will be set by EACH, SOME, or ALL calls in ORXTABS1: | 
|---|
| 57 | .I ORXANY D SAVE^ORXTABS1            ; If changes made, save? | 
|---|
| 58 | .S ORXSTOP=0                         ; Assure loop restart. | 
|---|
| 59 | ; | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | BLDLIST ; Get list of tabs with editable parameters for display. | 
|---|
| 63 | ; | 
|---|
| 64 | K ORXPARS                            ; Clean out array each time. | 
|---|
| 65 | S ORXTAG="TABS"                      ; Data tag herein. | 
|---|
| 66 | S ORXCNT=0                           ; Initialize counter. | 
|---|
| 67 | F  D  Q:ORXPARS(ORXCNT)=""           ; Get each tag's entry. | 
|---|
| 68 | .S ORXCNT=ORXCNT+1                   ; Increment counter. | 
|---|
| 69 | .S ORXPARS(ORXCNT)=$P($T(@ORXTAG+ORXCNT),";;",2) | 
|---|
| 70 | ; | 
|---|
| 71 | ; Check for no parameters listed or problem with reading data: | 
|---|
| 72 | I ORXCNT<2 S ORXSTOP=1 | 
|---|
| 73 | ; | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | CHOOSE ; Display tabs, allow user to choose. | 
|---|
| 77 | ; | 
|---|
| 78 | ; Clear, reset DIR variables: | 
|---|
| 79 | K DIR,X,Y | 
|---|
| 80 | S DIR("A")="     Select tab for preferences editing" | 
|---|
| 81 | S DIR("?")="   Select by entry of item number:" | 
|---|
| 82 | ; | 
|---|
| 83 | ; Assign array [DIR("A")] items for display: | 
|---|
| 84 | S ORXCNT=0 | 
|---|
| 85 | S ORXVAL="" | 
|---|
| 86 | F  D  Q:ORXVAL="" | 
|---|
| 87 | .S ORXCNT=ORXCNT+1                   ; Increment counter. | 
|---|
| 88 | .S ORXVAL=$P($G(ORXPARS(ORXCNT)),U)  ; Get first piece of string. | 
|---|
| 89 | .; | 
|---|
| 90 | .; Assign the actual display line: | 
|---|
| 91 | .S ORXCDIS=ORXCNT | 
|---|
| 92 | .S ORXCDIS=$$RJ^XLFSTR(ORXCDIS,2)    ; Right justify to 2 places. | 
|---|
| 93 | .S:(ORXVAL'="") DIR("A",ORXCNT)="        "_ORXCDIS_"    "_ORXVAL | 
|---|
| 94 | ; | 
|---|
| 95 | ; Check for errors: | 
|---|
| 96 | I ORXCNT<2 W !!,"   Problem reading TABS data!" S ORXSTOP=1 Q | 
|---|
| 97 | ; | 
|---|
| 98 | ; Define DIR input requirements: | 
|---|
| 99 | S DIR(0)="NO^1:"_(ORXCNT-1)_":0" | 
|---|
| 100 | ; | 
|---|
| 101 | ; Call DIR for user choice: | 
|---|
| 102 | W !! ; Spacing for screen display. | 
|---|
| 103 | D ^DIR | 
|---|
| 104 | ; | 
|---|
| 105 | ; Check user response: | 
|---|
| 106 | I '$L($G(Y)) S ORXSTOP=1 Q           ; Punt if Y not assigned. | 
|---|
| 107 | I Y="" S ORXSTOP=1 Q                 ; Punt if Y is null. | 
|---|
| 108 | I Y="^" S ORXSTOP=1 Q                ; Punt if Y is "^" character. | 
|---|
| 109 | I Y<1 S ORXSTOP=1 Q                  ; Punt if Y is less than one. | 
|---|
| 110 | I Y>(ORXCNT-1) S ORXSTOP=1 Q         ; Punt if Y isn't within range. | 
|---|
| 111 | S (ORXTCNT,ORXTAB)=Y                 ; Otherwise, get entry and go. | 
|---|
| 112 | ; | 
|---|
| 113 | Q | 
|---|
| 114 | ; | 
|---|
| 115 | PARAMS(ORXPAR) ; Retrieve selected tab's current parameter values. | 
|---|
| 116 | ; | 
|---|
| 117 | S ORXTAB=$P(ORXPARS(ORXPAR),U)       ; Tab name from user display. | 
|---|
| 118 | S ORXTNM=ORXTAB                      ; Comparison value holder. | 
|---|
| 119 | S ORXSETS=$P(ORXPARS(ORXPAR),U,2)    ; Settings info. | 
|---|
| 120 | S ORXTAB=$$EXCX                      ; Display name differences. | 
|---|
| 121 | S ORXPAR="ORCH CONTEXT "_ORXTAB      ; Construct formal param name. | 
|---|
| 122 | S ORXPNAM=ORXPAR                     ; Store for saving changes. | 
|---|
| 123 | ; | 
|---|
| 124 | ; Get current parameter values from Parameters file: | 
|---|
| 125 | S ORXCUR="" | 
|---|
| 126 | S ORXCUR=$$GET^XPAR("ALL",ORXPAR) | 
|---|
| 127 | ; | 
|---|
| 128 | Q | 
|---|
| 129 | ; | 
|---|
| 130 | EXCX() ; Deal with exceptions in spelling. | 
|---|
| 131 | ; | 
|---|
| 132 | I ORXTAB="D/C SUMMARIES" S ORXTAB="SUMMRIES"     ; Shorter spelling. | 
|---|
| 133 | I ORXTAB="IMAGING" S ORXTAB="XRAYS"              ; IMAGING is XRAYS. | 
|---|
| 134 | I ORXTAB="INPATIENT LABS" S ORXTAB="INPT LABS"   ; Shorter spelling. | 
|---|
| 135 | I ORXTAB="OUTPATIENT LABS" S ORXTAB="OUTPT LABS" ; Shorter spelling. | 
|---|
| 136 | ; | 
|---|
| 137 | Q ORXTAB | 
|---|
| 138 | ; | 
|---|
| 139 | ; | 
|---|
| 140 | ; NOTES ON ENTRIES FOR THE FOLLOWING "TABS" TAG: | 
|---|
| 141 | ;    Each TABS entry MUST have a corresponding PROMPTS entry in | 
|---|
| 142 | ;    PROMPTS^ORXTABS, in the same order and with matching first | 
|---|
| 143 | ;    pieces.  There MUST ALSO be a tag in ORXTABS2, to get user | 
|---|
| 144 | ;    input, which matches the actual name of the parameter in the | 
|---|
| 145 | ;    Parameter Definition [^XTV(8989.51,] file.  For example, | 
|---|
| 146 | ;    the NOTES entry in TABS below is the last word of the "ORCH | 
|---|
| 147 | ;    CONTEXT NOTES" entry in the Parameter Definition file.  If | 
|---|
| 148 | ;    the first piece listed in the TABS tag below differs from the | 
|---|
| 149 | ;    actual Parameter Definition file entry - as is the case for | 
|---|
| 150 | ;    XRAYS, which is the IMAGING entry below - add code in the EXCX | 
|---|
| 151 | ;    tag above to deal with it.  The third "^" piece in each TABS | 
|---|
| 152 | ;    entry represents the positions in the parameter string entry | 
|---|
| 153 | ;    itself, i.e. in the Parameters [^XTV(8989.5,] file, where | 
|---|
| 154 | ;    each individual value is stored, in the order listed in the | 
|---|
| 155 | ;    second "^" piece of the TABS entry.  IMPORTANT: Keep all "BEG" | 
|---|
| 156 | ;    and "END" pairs together consecutively - with "BEG" first, and | 
|---|
| 157 | ;    all "STATUS" and "AUTHOR" pairs together - with "STATUS" first. | 
|---|
| 158 | ; | 
|---|
| 159 | TABS ; Data strings for parameters/preferences. | 
|---|
| 160 | ;;CONSULTS^BEG;END;STATUS;SERVICE^1;2;3;4 | 
|---|
| 161 | ;;INPATIENT LABS^BEG;END;TYPE^1;2;3 | 
|---|
| 162 | ;;OUTPATIENT LABS^BEG;END;TYPE^1;2;3 | 
|---|
| 163 | ;;MEDS^BEG;END;OUTPT^1;2;3 | 
|---|
| 164 | ;;NOTES^BEG;END;STATUS;AUTHOR;OCCLIM;SUBJECT^1;2;3;4;5;6 | 
|---|
| 165 | ;;ORDERS^BEG;END;STATUS;DISPGRP;FORMAT^1;2;3;4;5 | 
|---|
| 166 | ;;PROBLEMS^STATUS;COMMENTS^3;4 | 
|---|
| 167 | ;;REPORTS^BEG;END;MAX^1;2;5 | 
|---|
| 168 | ;;D/C SUMMARIES^BEG;END;STATUS;AUTHOR^1;2;3;4 | 
|---|
| 169 | ;;IMAGING^BEG;END;MAX^1;2;5 | 
|---|
| 170 | ; | 
|---|
| 171 | Q | 
|---|
| 172 | ; | 
|---|
| 173 | ; NOTES ON ENTRIES FOR "PROMPTS" TAG: | 
|---|
| 174 | ;    Each PROMPTS entry below needs a corresponding TABS entry | 
|---|
| 175 | ;    in TABS^ORXTABS, must be listed in the same order, and with | 
|---|
| 176 | ;    a matching number of pieces. | 
|---|
| 177 | ; | 
|---|
| 178 | PROMPTS ; 24 char-max Prompts - MUST match TABS^ORXTABS entries/piece counts! | 
|---|
| 179 | ;;CONSULTS^Begin Date;End Date;Status;Service | 
|---|
| 180 | ;;INPATIENT LABS^Begin Date;End Date;Type | 
|---|
| 181 | ;;OUTPATIENT LABS^Begin Date;End Date;Type | 
|---|
| 182 | ;;MEDS^Begin Date;End Date;Outpatient or Inpatient Meds Default Display | 
|---|
| 183 | ;;NOTES^Begin Date;End Date;Status;Author;Occurrence Limit;Show/Hide Subject | 
|---|
| 184 | ;;ORDERS^Begin Date;End Date;Status;Service/Section;Format | 
|---|
| 185 | ;;PROBLEMS^Status;Comments | 
|---|
| 186 | ;;REPORTS^Begin Date;End Date;Maximum | 
|---|
| 187 | ;;D/C SUMMARIES^Begin Date;End Date;Status;Author | 
|---|
| 188 | ;;IMAGING^Begin Date;End Date;Maximum | 
|---|
| 189 | ; | 
|---|
| 190 | Q | 
|---|
| 191 | ; | 
|---|