- ORXTABS ; SLC/PKS - Edit tab parameters preferences. [10/17/00 2:44pm]
- ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,47,84**;Dec 17, 1997
- ;
- ; Main control routine is herein for Tab Preferences Editing.
- ; Works with routines ORXTABS1 and ORXTABS2. ORXTABS1 contains
- ; additional control tags that work in conjunction with the
- ; control code at the top of this routine, in order to keep this
- ; one below 10K size maximum. ORXTABS2 contains tags to handle
- ; individual preference edit/input, making calls to ORXTABS3,
- ; ORXTABS4, etc., where code for individual dialogues reside.
- ;
- Q
- ;
- EN ; Entry point - called by option [ORX PARAM TAB PREF].
- ;
- ; Variables used:
- ;
- ; DIR,X,Y = FM user input variables.
- ; ORXANY = Flag for number of changes.
- ; ORXCDIS = Display holder for counter display.
- ; ORXCHC = User's choice of parameter value to edit.
- ; ORXCNT = Loop counter; re-used in various tags.
- ; ORXCUR = Existing settings for a parameter.
- ; ORXERR = Error array used in call to XPAR.
- ; ORXNEW = New value entered by user.
- ; ORXNOW = Cuttent setting of a parameter piece value.
- ; ORXNUM = Array count holder.
- ; ORXPAR = Working variable for parameter definitions, etc.
- ; ORXPARS = Becomes array of parameters from TABS tag.
- ; ORXPCS = Array of formal parameter string's piece settings.
- ; ORXPDIR = Display prompt piece (first piece).
- ; ORXPDIS = Holder for prompt piece of each value.
- ; ORXPNAM = Stores name of current parameter definition.
- ; ORXPRO = Current prompt.
- ; ORXPSTR = String of prompts.
- ; ORXSETS = Setting(s) pieces for a parameter.
- ; ORXSTOP = Flag to stop editing.
- ; ORXTAB = Becomes current tab, as exists in last part of formal
- ; parameter definition string.
- ; ORXTAG = Current data tag.
- ; ORXTCNT = Current tab line counter.
- ; ORXTNM = First piece of current tab from text entry.
- ; ORXVAL = Value holder.
- ;
- 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
- ;
- S ORXSTOP=0 ; Preset flag before starting.
- ;
- ; Establish control loop for entire editing process.
- F Q:ORXSTOP D
- .D BLDLIST Q:ORXSTOP ; ORXSTOP here = list problem.
- .D CHOOSE Q:ORXSTOP ; ORXSTOP here = user punted.
- .D PARAMS(ORXTAB) ; ORXTAB set by CHOOSE tag.
- .D EDIT^ORXTABS1 ; User editing.
- .;
- .; ORXANY will be set by EACH, SOME, or ALL calls in ORXTABS1:
- .I ORXANY D SAVE^ORXTABS1 ; If changes made, save?
- .S ORXSTOP=0 ; Assure loop restart.
- ;
- Q
- ;
- BLDLIST ; Get list of tabs with editable parameters for display.
- ;
- K ORXPARS ; Clean out array each time.
- S ORXTAG="TABS" ; Data tag herein.
- S ORXCNT=0 ; Initialize counter.
- F D Q:ORXPARS(ORXCNT)="" ; Get each tag's entry.
- .S ORXCNT=ORXCNT+1 ; Increment counter.
- .S ORXPARS(ORXCNT)=$P($T(@ORXTAG+ORXCNT),";;",2)
- ;
- ; Check for no parameters listed or problem with reading data:
- I ORXCNT<2 S ORXSTOP=1
- ;
- Q
- ;
- CHOOSE ; Display tabs, allow user to choose.
- ;
- ; Clear, reset DIR variables:
- K DIR,X,Y
- S DIR("A")=" Select tab for preferences editing"
- S DIR("?")=" Select by entry of item number:"
- ;
- ; Assign array [DIR("A")] items for display:
- S ORXCNT=0
- S ORXVAL=""
- F D Q:ORXVAL=""
- .S ORXCNT=ORXCNT+1 ; Increment counter.
- .S ORXVAL=$P($G(ORXPARS(ORXCNT)),U) ; Get first piece of string.
- .;
- .; Assign the actual display line:
- .S ORXCDIS=ORXCNT
- .S ORXCDIS=$$RJ^XLFSTR(ORXCDIS,2) ; Right justify to 2 places.
- .S:(ORXVAL'="") DIR("A",ORXCNT)=" "_ORXCDIS_" "_ORXVAL
- ;
- ; Check for errors:
- I ORXCNT<2 W !!," Problem reading TABS data!" S ORXSTOP=1 Q
- ;
- ; Define DIR input requirements:
- S DIR(0)="NO^1:"_(ORXCNT-1)_":0"
- ;
- ; Call DIR for user choice:
- W !! ; Spacing for screen display.
- D ^DIR
- ;
- ; Check user response:
- I '$L($G(Y)) S ORXSTOP=1 Q ; Punt if Y not assigned.
- I Y="" S ORXSTOP=1 Q ; Punt if Y is null.
- I Y="^" S ORXSTOP=1 Q ; Punt if Y is "^" character.
- I Y<1 S ORXSTOP=1 Q ; Punt if Y is less than one.
- I Y>(ORXCNT-1) S ORXSTOP=1 Q ; Punt if Y isn't within range.
- S (ORXTCNT,ORXTAB)=Y ; Otherwise, get entry and go.
- ;
- Q
- ;
- PARAMS(ORXPAR) ; Retrieve selected tab's current parameter values.
- ;
- S ORXTAB=$P(ORXPARS(ORXPAR),U) ; Tab name from user display.
- S ORXTNM=ORXTAB ; Comparison value holder.
- S ORXSETS=$P(ORXPARS(ORXPAR),U,2) ; Settings info.
- S ORXTAB=$$EXCX ; Display name differences.
- S ORXPAR="ORCH CONTEXT "_ORXTAB ; Construct formal param name.
- S ORXPNAM=ORXPAR ; Store for saving changes.
- ;
- ; Get current parameter values from Parameters file:
- S ORXCUR=""
- S ORXCUR=$$GET^XPAR("ALL",ORXPAR)
- ;
- Q
- ;
- EXCX() ; Deal with exceptions in spelling.
- ;
- I ORXTAB="D/C SUMMARIES" S ORXTAB="SUMMRIES" ; Shorter spelling.
- I ORXTAB="IMAGING" S ORXTAB="XRAYS" ; IMAGING is XRAYS.
- I ORXTAB="INPATIENT LABS" S ORXTAB="INPT LABS" ; Shorter spelling.
- I ORXTAB="OUTPATIENT LABS" S ORXTAB="OUTPT LABS" ; Shorter spelling.
- ;
- Q ORXTAB
- ;
- ;
- ; NOTES ON ENTRIES FOR THE FOLLOWING "TABS" TAG:
- ; Each TABS entry MUST have a corresponding PROMPTS entry in
- ; PROMPTS^ORXTABS, in the same order and with matching first
- ; pieces. There MUST ALSO be a tag in ORXTABS2, to get user
- ; input, which matches the actual name of the parameter in the
- ; Parameter Definition [^XTV(8989.51,] file. For example,
- ; the NOTES entry in TABS below is the last word of the "ORCH
- ; CONTEXT NOTES" entry in the Parameter Definition file. If
- ; the first piece listed in the TABS tag below differs from the
- ; actual Parameter Definition file entry - as is the case for
- ; XRAYS, which is the IMAGING entry below - add code in the EXCX
- ; tag above to deal with it. The third "^" piece in each TABS
- ; entry represents the positions in the parameter string entry
- ; itself, i.e. in the Parameters [^XTV(8989.5,] file, where
- ; each individual value is stored, in the order listed in the
- ; second "^" piece of the TABS entry. IMPORTANT: Keep all "BEG"
- ; and "END" pairs together consecutively - with "BEG" first, and
- ; all "STATUS" and "AUTHOR" pairs together - with "STATUS" first.
- ;
- TABS ; Data strings for parameters/preferences.
- ;;CONSULTS^BEG;END;STATUS;SERVICE^1;2;3;4
- ;;INPATIENT LABS^BEG;END;TYPE^1;2;3
- ;;OUTPATIENT LABS^BEG;END;TYPE^1;2;3
- ;;MEDS^BEG;END;OUTPT^1;2;3
- ;;NOTES^BEG;END;STATUS;AUTHOR;OCCLIM;SUBJECT^1;2;3;4;5;6
- ;;ORDERS^BEG;END;STATUS;DISPGRP;FORMAT^1;2;3;4;5
- ;;PROBLEMS^STATUS;COMMENTS^3;4
- ;;REPORTS^BEG;END;MAX^1;2;5
- ;;D/C SUMMARIES^BEG;END;STATUS;AUTHOR^1;2;3;4
- ;;IMAGING^BEG;END;MAX^1;2;5
- ;
- Q
- ;
- ; NOTES ON ENTRIES FOR "PROMPTS" TAG:
- ; Each PROMPTS entry below needs a corresponding TABS entry
- ; in TABS^ORXTABS, must be listed in the same order, and with
- ; a matching number of pieces.
- ;
- PROMPTS ; 24 char-max Prompts - MUST match TABS^ORXTABS entries/piece counts!
- ;;CONSULTS^Begin Date;End Date;Status;Service
- ;;INPATIENT LABS^Begin Date;End Date;Type
- ;;OUTPATIENT LABS^Begin Date;End Date;Type
- ;;MEDS^Begin Date;End Date;Outpatient or Inpatient Meds Default Display
- ;;NOTES^Begin Date;End Date;Status;Author;Occurrence Limit;Show/Hide Subject
- ;;ORDERS^Begin Date;End Date;Status;Service/Section;Format
- ;;PROBLEMS^Status;Comments
- ;;REPORTS^Begin Date;End Date;Maximum
- ;;D/C SUMMARIES^Begin Date;End Date;Status;Author
- ;;IMAGING^Begin Date;End Date;Maximum
- ;
- Q
- ;
- ORXTABS ; SLC/PKS - Edit tab parameters preferences. [10/17/00 2:44pm]
- +1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,47,84**;Dec 17, 1997
- +2 ;
- +3 ; Main control routine is herein for Tab Preferences Editing.
- +4 ; Works with routines ORXTABS1 and ORXTABS2. ORXTABS1 contains
- +5 ; additional control tags that work in conjunction with the
- +6 ; control code at the top of this routine, in order to keep this
- +7 ; one below 10K size maximum. ORXTABS2 contains tags to handle
- +8 ; individual preference edit/input, making calls to ORXTABS3,
- +9 ; ORXTABS4, etc., where code for individual dialogues reside.
- +10 ;
- +11 QUIT
- +12 ;
- EN ; Entry point - called by option [ORX PARAM TAB PREF].
- +1 ;
- +2 ; Variables used:
- +3 ;
- +4 ; DIR,X,Y = FM user input variables.
- +5 ; ORXANY = Flag for number of changes.
- +6 ; ORXCDIS = Display holder for counter display.
- +7 ; ORXCHC = User's choice of parameter value to edit.
- +8 ; ORXCNT = Loop counter; re-used in various tags.
- +9 ; ORXCUR = Existing settings for a parameter.
- +10 ; ORXERR = Error array used in call to XPAR.
- +11 ; ORXNEW = New value entered by user.
- +12 ; ORXNOW = Cuttent setting of a parameter piece value.
- +13 ; ORXNUM = Array count holder.
- +14 ; ORXPAR = Working variable for parameter definitions, etc.
- +15 ; ORXPARS = Becomes array of parameters from TABS tag.
- +16 ; ORXPCS = Array of formal parameter string's piece settings.
- +17 ; ORXPDIR = Display prompt piece (first piece).
- +18 ; ORXPDIS = Holder for prompt piece of each value.
- +19 ; ORXPNAM = Stores name of current parameter definition.
- +20 ; ORXPRO = Current prompt.
- +21 ; ORXPSTR = String of prompts.
- +22 ; ORXSETS = Setting(s) pieces for a parameter.
- +23 ; ORXSTOP = Flag to stop editing.
- +24 ; ORXTAB = Becomes current tab, as exists in last part of formal
- +25 ; parameter definition string.
- +26 ; ORXTAG = Current data tag.
- +27 ; ORXTCNT = Current tab line counter.
- +28 ; ORXTNM = First piece of current tab from text entry.
- +29 ; ORXVAL = Value holder.
- +30 ;
- +31 NEW 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
- +32 ;
- +33 ; Preset flag before starting.
- SET ORXSTOP=0
- +34 ;
- +35 ; Establish control loop for entire editing process.
- +36 FOR
- IF ORXSTOP
- QUIT
- Begin DoDot:1
- +37 ; ORXSTOP here = list problem.
- DO BLDLIST
- IF ORXSTOP
- QUIT
- +38 ; ORXSTOP here = user punted.
- DO CHOOSE
- IF ORXSTOP
- QUIT
- +39 ; ORXTAB set by CHOOSE tag.
- DO PARAMS(ORXTAB)
- +40 ; User editing.
- DO EDIT^ORXTABS1
- +41 ;
- +42 ; ORXANY will be set by EACH, SOME, or ALL calls in ORXTABS1:
- +43 ; If changes made, save?
- IF ORXANY
- DO SAVE^ORXTABS1
- +44 ; Assure loop restart.
- SET ORXSTOP=0
- End DoDot:1
- +45 ;
- +46 QUIT
- +47 ;
- BLDLIST ; Get list of tabs with editable parameters for display.
- +1 ;
- +2 ; Clean out array each time.
- KILL ORXPARS
- +3 ; Data tag herein.
- SET ORXTAG="TABS"
- +4 ; Initialize counter.
- SET ORXCNT=0
- +5 ; Get each tag's entry.
- FOR
- Begin DoDot:1
- +6 ; Increment counter.
- SET ORXCNT=ORXCNT+1
- +7 SET ORXPARS(ORXCNT)=$PIECE($TEXT(@ORXTAG+ORXCNT),";;",2)
- End DoDot:1
- IF ORXPARS(ORXCNT)=""
- QUIT
- +8 ;
- +9 ; Check for no parameters listed or problem with reading data:
- +10 IF ORXCNT<2
- SET ORXSTOP=1
- +11 ;
- +12 QUIT
- +13 ;
- CHOOSE ; Display tabs, allow user to choose.
- +1 ;
- +2 ; Clear, reset DIR variables:
- +3 KILL DIR,X,Y
- +4 SET DIR("A")=" Select tab for preferences editing"
- +5 SET DIR("?")=" Select by entry of item number:"
- +6 ;
- +7 ; Assign array [DIR("A")] items for display:
- +8 SET ORXCNT=0
- +9 SET ORXVAL=""
- +10 FOR
- Begin DoDot:1
- +11 ; Increment counter.
- SET ORXCNT=ORXCNT+1
- +12 ; Get first piece of string.
- SET ORXVAL=$PIECE($GET(ORXPARS(ORXCNT)),U)
- +13 ;
- +14 ; Assign the actual display line:
- +15 SET ORXCDIS=ORXCNT
- +16 ; Right justify to 2 places.
- SET ORXCDIS=$$RJ^XLFSTR(ORXCDIS,2)
- +17 IF (ORXVAL'="")
- SET DIR("A",ORXCNT)=" "_ORXCDIS_" "_ORXVAL
- End DoDot:1
- IF ORXVAL=""
- QUIT
- +18 ;
- +19 ; Check for errors:
- +20 IF ORXCNT<2
- WRITE !!," Problem reading TABS data!"
- SET ORXSTOP=1
- QUIT
- +21 ;
- +22 ; Define DIR input requirements:
- +23 SET DIR(0)="NO^1:"_(ORXCNT-1)_":0"
- +24 ;
- +25 ; Call DIR for user choice:
- +26 ; Spacing for screen display.
- WRITE !!
- +27 DO ^DIR
- +28 ;
- +29 ; Check user response:
- +30 ; Punt if Y not assigned.
- IF '$LENGTH($GET(Y))
- SET ORXSTOP=1
- QUIT
- +31 ; Punt if Y is null.
- IF Y=""
- SET ORXSTOP=1
- QUIT
- +32 ; Punt if Y is "^" character.
- IF Y="^"
- SET ORXSTOP=1
- QUIT
- +33 ; Punt if Y is less than one.
- IF Y<1
- SET ORXSTOP=1
- QUIT
- +34 ; Punt if Y isn't within range.
- IF Y>(ORXCNT-1)
- SET ORXSTOP=1
- QUIT
- +35 ; Otherwise, get entry and go.
- SET (ORXTCNT,ORXTAB)=Y
- +36 ;
- +37 QUIT
- +38 ;
- PARAMS(ORXPAR) ; Retrieve selected tab's current parameter values.
- +1 ;
- +2 ; Tab name from user display.
- SET ORXTAB=$PIECE(ORXPARS(ORXPAR),U)
- +3 ; Comparison value holder.
- SET ORXTNM=ORXTAB
- +4 ; Settings info.
- SET ORXSETS=$PIECE(ORXPARS(ORXPAR),U,2)
- +5 ; Display name differences.
- SET ORXTAB=$$EXCX
- +6 ; Construct formal param name.
- SET ORXPAR="ORCH CONTEXT "_ORXTAB
- +7 ; Store for saving changes.
- SET ORXPNAM=ORXPAR
- +8 ;
- +9 ; Get current parameter values from Parameters file:
- +10 SET ORXCUR=""
- +11 SET ORXCUR=$$GET^XPAR("ALL",ORXPAR)
- +12 ;
- +13 QUIT
- +14 ;
- EXCX() ; Deal with exceptions in spelling.
- +1 ;
- +2 ; Shorter spelling.
- IF ORXTAB="D/C SUMMARIES"
- SET ORXTAB="SUMMRIES"
- +3 ; IMAGING is XRAYS.
- IF ORXTAB="IMAGING"
- SET ORXTAB="XRAYS"
- +4 ; Shorter spelling.
- IF ORXTAB="INPATIENT LABS"
- SET ORXTAB="INPT LABS"
- +5 ; Shorter spelling.
- IF ORXTAB="OUTPATIENT LABS"
- SET ORXTAB="OUTPT LABS"
- +6 ;
- +7 QUIT ORXTAB
- +8 ;
- +9 ;
- +10 ; NOTES ON ENTRIES FOR THE FOLLOWING "TABS" TAG:
- +11 ; Each TABS entry MUST have a corresponding PROMPTS entry in
- +12 ; PROMPTS^ORXTABS, in the same order and with matching first
- +13 ; pieces. There MUST ALSO be a tag in ORXTABS2, to get user
- +14 ; input, which matches the actual name of the parameter in the
- +15 ; Parameter Definition [^XTV(8989.51,] file. For example,
- +16 ; the NOTES entry in TABS below is the last word of the "ORCH
- +17 ; CONTEXT NOTES" entry in the Parameter Definition file. If
- +18 ; the first piece listed in the TABS tag below differs from the
- +19 ; actual Parameter Definition file entry - as is the case for
- +20 ; XRAYS, which is the IMAGING entry below - add code in the EXCX
- +21 ; tag above to deal with it. The third "^" piece in each TABS
- +22 ; entry represents the positions in the parameter string entry
- +23 ; itself, i.e. in the Parameters [^XTV(8989.5,] file, where
- +24 ; each individual value is stored, in the order listed in the
- +25 ; second "^" piece of the TABS entry. IMPORTANT: Keep all "BEG"
- +26 ; and "END" pairs together consecutively - with "BEG" first, and
- +27 ; all "STATUS" and "AUTHOR" pairs together - with "STATUS" first.
- +28 ;
- TABS ; Data strings for parameters/preferences.
- +1 ;;CONSULTS^BEG;END;STATUS;SERVICE^1;2;3;4
- +2 ;;INPATIENT LABS^BEG;END;TYPE^1;2;3
- +3 ;;OUTPATIENT LABS^BEG;END;TYPE^1;2;3
- +4 ;;MEDS^BEG;END;OUTPT^1;2;3
- +5 ;;NOTES^BEG;END;STATUS;AUTHOR;OCCLIM;SUBJECT^1;2;3;4;5;6
- +6 ;;ORDERS^BEG;END;STATUS;DISPGRP;FORMAT^1;2;3;4;5
- +7 ;;PROBLEMS^STATUS;COMMENTS^3;4
- +8 ;;REPORTS^BEG;END;MAX^1;2;5
- +9 ;;D/C SUMMARIES^BEG;END;STATUS;AUTHOR^1;2;3;4
- +10 ;;IMAGING^BEG;END;MAX^1;2;5
- +11 ;
- +12 QUIT
- +13 ;
- +14 ; NOTES ON ENTRIES FOR "PROMPTS" TAG:
- +15 ; Each PROMPTS entry below needs a corresponding TABS entry
- +16 ; in TABS^ORXTABS, must be listed in the same order, and with
- +17 ; a matching number of pieces.
- +18 ;
- PROMPTS ; 24 char-max Prompts - MUST match TABS^ORXTABS entries/piece counts!
- +1 ;;CONSULTS^Begin Date;End Date;Status;Service
- +2 ;;INPATIENT LABS^Begin Date;End Date;Type
- +3 ;;OUTPATIENT LABS^Begin Date;End Date;Type
- +4 ;;MEDS^Begin Date;End Date;Outpatient or Inpatient Meds Default Display
- +5 ;;NOTES^Begin Date;End Date;Status;Author;Occurrence Limit;Show/Hide Subject
- +6 ;;ORDERS^Begin Date;End Date;Status;Service/Section;Format
- +7 ;;PROBLEMS^Status;Comments
- +8 ;;REPORTS^Begin Date;End Date;Maximum
- +9 ;;D/C SUMMARIES^Begin Date;End Date;Status;Author
- +10 ;;IMAGING^Begin Date;End Date;Maximum
- +11 ;
- +12 QUIT
- +13 ;