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 ;