- A1VSLP ;Albany FO/GTS - VistA Package Sizing Manager; 7-JUL-2016
- ;;1.0;VistA Package Sizing;;Oct 10, 2016;Build 25
- EN ; -- main entry point for A1VS PKG MGR PARAM DISPLAY
- D EN^VALM("A1VS PKG MGR PARAM DISPLAY")
- Q
- ;
- HDR ; -- header code
- NEW DEFDIR,SPCPAD,DIRHEAD
- SET SPCPAD=""
- SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- SET VALMHDR(1)=" VistA Package Size Analysis Manager - Parameter Display"
- SET VALMHDR(2)=" Version: "_$$VERNUM^A1VSLM()_" Build: "_$$BLDNUM^A1VSLM()
- SET DIRHEAD="Default Directory: "_DEFDIR
- SET $P(SPCPAD," ",(80-$L(DIRHEAD))/2)=""
- SET VALMHDR(3)=SPCPAD_DIRHEAD
- SET SPCPAD=""
- SET DIRHEAD="Parameter file: "_A1VPSPRM
- SET $P(SPCPAD," ",(80-$L(DIRHEAD))/2)=""
- SET VALMHDR(4)=SPCPAD_DIRHEAD
- QUIT
- ;
- BUILD ; - Build local and global display arrays
- NEW DEFDIR,CAPNODE
- DO KILL ;Kill all processing & data arrays and video attributes & control arrays
- SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- DO OPEN^%ZISH("XTMP",DEFDIR,A1VPSPRM,"R")
- U IO
- SET (CAPNODE,VALMCNT)=0
- FOR S LINEITEM="" READ LINEITEM:5 Q:$$STATUS^%ZISH DO
- . IF LINEITEM]"" DO
- .. DO SCAPARY(LINEITEM,.CAPNODE) ;Creates ^TMP("A1VS-PARAM-CAP",$J) array
- .. DO SPLITADD^A1VSLAPI(.VALMCNT,LINEITEM,1)
- .. DO LOADTMP(LINEITEM) ;Store LineItem into ^TMP global & Index
- D CLOSE^%ZISH("XTMP")
- QUIT
- ;
- INIT ; -- init variables and list array
- IF (+$G(FIRSTITM)>0),($G(LASTITM)>0) DO
- . NEW A1TMPLNN
- . SET A1TMPLNN=$$SELXTMP^A1VSLAPI(FIRSTITM,LASTITM,5)
- . IF +A1TMPLNN>0 DO
- .. SET A1VPSPRM=$P($G(^TMP("A1VS PACKAGE MGR",$J,A1TMPLNN,0)),A1TMPLNN-5_") ",2)
- .. IF A1VPSPRM]"" DO BUILD
- .. IF A1VPSPRM']"" SET VALMQUIT=""
- . IF A1TMPLNN=-1 DO EXIT^A1VSLP S VALMQUIT=""
- QUIT
- ;
- HELP ; -- help code
- SET X="?" D DISP^XQORM1
- ;SET VALMBCK="R"
- Q
- ;
- EXIT ; -- exit code
- DO KILL
- Q
- ;
- EXPND ; -- expand code
- Q
- ;
- REFRESH ; -- refresh display
- DO BUILD
- SET VALMBCK="R"
- QUIT
- ;
- MSG(TEXT) ; -- set default message
- QUIT
- ;
- KILL ; - Cleanup local and global display arrays
- DO CLEAN^VALM10 ;Kill data and video control arrays
- DO KILL^VALM10() ;Kill Video attributes
- DO CLNTMPGB
- KILL ^TMP("A1VS PKG MAN PARM DISP",$JOB)
- KILL DIR,X,Y,DTOUT,DIRUT,DUOUT
- QUIT
- ;
- ;APIs ;TO DO: GTS - Further develop these APIs so LINEITEM is the most current/edited package parameter data
- LOADTMP(LINEITEM) ;Store LineItem into ^TMP global
- ;Input : LINEITEM - A single Package lineitem from XTMPSIZE.DAT
- ;
- ;Output: ^TMP array in the following form:
- ; ^TMP("{package name}","{primary prefix}")=LINEITEM [Package line from XTMPSIZE.DAT]
- ; ^TMP("{package name}","{primary prefix}","ADDPFX","{added prefix}")=""
- ; ^TMP("{package name}","{primary prefix}","BEGINFILE")=file number [Start file #]
- ; ^TMP("{package name}","{primary prefix}","ENDFILE")=file number [Ending file #]
- ; ^TMP("{package name}","{primary prefix}","FNUM",{file#})="" [File # from FILE NUMBER multiple]
- ; ^TMP("{package name}","{primary prefix}","FLERNG","{file range 1}")="" [File # range from LOW-HIGH RANGE multiple]
- ; ^TMP("{package name}","{primary prefix}","PARENT")=Package [PARENT PACKAGE field]
- ; ^TMP("{package name}","{primary prefix}","REMPFX","{removed prefix}")=""
- ;
- ;IF +$G(CLEANONE)'>0 SET CLEANONE=0
- SET PKGNAME=$P(LINEITEM,"^")
- SET PKGPFX=$P(LINEITEM,"^",2)
- ;
- ;Load package components into ^TMP Global (loop)
- SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX)=LINEITEM ;Define Data node
- ;
- ;Define File Range array nodes
- SET FILELIST=$P(LINEITEM,"^",8)
- SET PCENUM=0
- IF FILELIST'="" DO
- . FOR SET PCENUM=PCENUM+1 SET FLERNG=$P(FILELIST,"|",PCENUM) QUIT:FLERNG']"" DO
- .. SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"FLERNG",FLERNG)=""
- .. DO FILNDX(FLERNG,PKGNAME) ;Set ^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""
- IF FILELIST="" DO
- . NEW BEG,END
- . SET BEG=$P(LINEITEM,"^",3)
- . SET END=$P(LINEITEM,"^",4)
- . IF BEG]"",END]"" DO FILNDX(BEG_"-"_END,PKGNAME) ;Set ^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""
- ;
- ;Define Start/End File number array nodes
- SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"BEGFILE")=$P(LINEITEM,"^",3)
- SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"ENDFILE")=$P(LINEITEM,"^",4)
- ;
- ;Define File Number array nodes
- SET FILELIST=$P(LINEITEM,"^",7)
- SET PCENUM=0
- FOR SET PCENUM=PCENUM+1 SET FNUM=$P(FILELIST,"|",PCENUM) QUIT:FNUM']"" DO
- . SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"FNUM",FNUM)=""
- ;
- ;Define Additional & Excepted Prefix Array nodes
- SET APFXLST=$P(LINEITEM,"^",5)
- SET RPFXLST=$P(LINEITEM,"^",6)
- SET PCENUM=0
- FOR SET PCENUM=PCENUM+1 SET APFX=($P(APFXLST,"|",PCENUM)) QUIT:APFX']"" DO
- . SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"ADDPFX",APFX)="" ;Additional Namespace
- . DO PFXIDX(APFX,PKGNAME,APFXLST_"^"_RPFXLST) ;Set ^TMP("A1VS-PFXIDX",$J,,<namespace prefix>,<package name>)=""
- DO:PKGPFX]"" PFXIDX(PKGPFX,PKGNAME,APFXLST_"^"_RPFXLST) ;Set ^TMP("A1VS-PFXIDX",$J,<namespace prefix>,<package name>)="" [Primary Prefix]
- ;
- SET PCENUM=0
- FOR SET PCENUM=PCENUM+1 SET RPFX=($P(RPFXLST,"|",PCENUM)) QUIT:RPFX']"" DO
- . SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"REMPFX",RPFX)="" ;Excepted Namespace
- ;
- ;Define Parent array node
- SET ^TMP("A1VS-PKGEDIT",$J,PKGNAME,PKGPFX,"PARENT")=$P(LINEITEM,"^",9)
- ;
- QUIT
- ;
- ;
- ;"A1VS-FRIDX" USAGE NOTE: Extract file range subscript from "FLERNG" nodes one-by-one
- ; Retrieve Begin/End Range values from "FLERNG"
- ; @QSUBSCRIPT "FRIDX" nodes retrieving Begin File #
- ; if RNGEND < "FLERNG" node begin...QUIT check
- ; if RNGBEG > "FLERNG" node end...QUIT check
- ;
- ; If RNGBEG '< "FLERNG" begin node, check for package name
- ; if not package name, create a File overlap error node indicating "FLERNG" package, overlapping files and RNG package
- ; If RNGEND '> "FLERNG" end node, check for package name
- ; if not package name, create a File overlap error node indicating "FLERNG" package, overlapping files and RNG package
- ;
- FILNDX(FLRNGE,PKGNAME) ; Set File Number Index [^TMP("A1VS-FRIDX",$J)]
- ;Input: FLRNGE - File Range
- ; PKGNAME - Package name
- ;
- ;Output : File Range Node [^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""]
- ;
- NEW BEGFNUM,ENDFNUM
- SET BEGFNUM=$P(FLRNGE,"-")
- SET ENDFNUM=$P(FLRNGE,"-",2)
- SET ^TMP("A1VS-FRIDX",$J,BEGFNUM,ENDFNUM,PKGNAME)=""
- QUIT
- ;
- ;
- ;"A1VS-PFXIDX" USAGE NOTE: Loop ^TMP("A1VS-PKGEDIT",$J,<pkg name>,<prefix>)
- ; Place <prefix> in a local prefix array
- ; Extract Primary Prefix (4th subscript) and added Prefixes from "ADDPFX" (6th subscript) one-by-one and pass to CHKPRX
- ; Loop ^TMP("A1VS-PFXIDX",$J,<prefix>,<package name>)
- ; If <package name> in Array subscript doesn't equal "package name"...
- ; create a File overlap error node indicating "ADDPFX" package, overlapping prefix and "PFXIDX" package
- ;
- PFXIDX(PKGPFX,PKGNAME,PFXLST) ;Set ^TMP("A1VS-PKGEDIT",$J,"PFXIDX",<namespace prefix>,<package name>)=""
- SET PFXLST=$G(PFXLST)
- SET ^TMP("A1VS-PFXIDX",$J,PKGPFX,PKGNAME)=PFXLST
- QUIT
- ;
- SCAPARY(LINEITEM,CAPNODE) ; Set single line Array & caption display array for action processing
- NEW PARMDAT,PKG
- SET CAPNODE=CAPNODE+1
- ;SET ^TMP("A1VS-PARAM-LINE",$J,CAPNODE)=LINEITEM ; Set Parameter LineItem array
- ;
- ;Set Caption Display Array
- SET PKG=$P(LINEITEM,"^")
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG)=LINEITEM
- SET PARMDAT=$P(LINEITEM,"^")
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,1,"Package Name")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",2)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,2,"Primary Prefix")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",3)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,3,"*Lowest File#")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",4)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,4,"*Highest File#")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",5)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,5,"Additional Prefixes")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",6)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,6,"Excepted Prefixes")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",7)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,7,"File Numbers")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",8)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,8,"File Ranges")=PARMDAT
- SET PARMDAT=$P(LINEITEM,"^",9)
- SET ^TMP("A1VS-PARAM-CAP",$J,PKG,9,"Parent Package")=PARMDAT
- QUIT
- ;
- CLNTMPGB ;Kill temporary globals
- KILL ^TMP("A1VS-PKGEDIT",$J),^TMP("A1VS-ERROR",$J),^TMP("A1VS-FRIDX",$J),^TMP("A1VS-PFXIDX",$J)
- KILL ^TMP("A1VS-PARAM-CAP",$J) ;,^TMP("A1VS-PARAM-LINE",$J)
- QUIT
- ;
- PRMFLIST() ;List parameter files for selection
- NEW DEFDIR,FILENME,FILELIST,LSTRSLT,SELARY,ITEMNUM
- SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- SET FILENME("XTMPSIZE*")=""
- SET LSTRSLT=$$LIST^%ZISH(DEFDIR,"FILENME","FILELIST")
- IF LSTRSLT DO
- .; Move XTMPSIZE files to SELARY
- .SET ITEMNUM=0
- .SET FILENME=""
- .FOR SET FILENME=$O(FILELIST(FILENME)) Q:FILENME="" SET ITEMNUM=ITEMNUM+1 SET SELARY(ITEMNUM)=FILENME
- .;
- .IF ITEMNUM>1 DO
- .. DO LISTOUT^A1VSLAPI(.SELARY) ;List Parameter files for selection
- .. SET XVAL=+$$SELPKG(ITEMNUM,.SELARY)
- .. ;
- ..IF (+$G(XVAL)>0)&(+$G(XVAL)<(ITEMNUM+1)) SET FILENME=SELARY(XVAL) W " ",FILENME
- ;
- IF ITEMNUM'>1 DO JUSTPAWS^A1VSLAPI(" There are no XTMPSIZE files for comparison!")
- QUIT FILENME
- ;
- SELPKG(ITEMNUM,SELARY) ; Select Package to Edit from ^TMP("A1VS PKG MGR PARAM CAP",$J)
- ; INPUT: SELARY - Array of packages
- ; ITEMNUM - Number of items in SELARY
- ;
- ; OUTPUT: PKGNME - Name of selected package
- ;
- NEW DIR,DIRUT,DTOUT,DUOUT,X,Y ;,PKGNME
- ;SET PKGNME=""
- SET DIR("A")="Select File: "
- SET DIR(0)="NAO^1:"_ITEMNUM_"^K:(X'?.N) X"
- ;SET DIR("PRE")="K:'$D(SELARY("_+$G(X)_")) X"
- SET DIR("?",1)=" Select item # for the desired parameter file from the list."
- SET DIR("?")=" [Enter'^' to exit]"
- SET DIR("??")="^DO LISTOUT^A1VSLAPI(.SELARY)"
- DO ^DIR
- ;IF $P(X,"^",1)="+1" SET LASTSPKG=X
- ;;IF '$D(DIRUT) SET PKGNME=SELARY(Y)
- QUIT Y
- ;
- ;
- PARMMAP ; Map of Parameter data elements
- ;
- ;Parameter List data map from Package file:
- ;------------------------------------------
- ; ^ pce 1 : Package Name
- ; [Source: NAME (#.01)]
- ; ^ pce 2 : Primary Prefix
- ; [Source: PREFIX (#1)]
- ; ^ pce 3 : *Lowest File #
- ; [Source: *LOWEST FILE NUMBER (#10.6)]
- ; ^ pce 4 : *Highest File #
- ; [Source: *HIGHEST FILE NUMBER (#11)]
- ; ^ pce 5 : Pipe character (|) delimited list of Additional Prefixes
- ; [Source: ADDITIONAL PREFIXES multiple (#14)]
- ; ^ pce 6 : Pipe character (|) delimited list of Excepted Prefixes
- ; [Source: EXCLUDED NAME SPACE multiple (#919)]
- ; ^ pce 7 : Pipe character (|) delimited list of File entries
- ; [Source: FILE NUMBER multiple (#15001)]
- ; ^ pce 8 : Pipe character (|) delimited list of File Range entries
- ; [Source: LOW-HIGH RANGE multiple (#15001.1)]
- ; ^ pce 9 : Parent Package
- ; [Source: PARENT PACKAGE field (#15003)]
- ;
- ;$END
- ;
- ;PROTOCOL entry points
- ;
- PKGERR ; -- Package Parameter Errors
- ; -- Protocol: A1VS PKG MGR PARAM ERR DISP ACTION
- DO EN^A1VSLPER
- DO REFRESH
- DO MSG
- QUIT
- ;
- PARAMRPT ; -- Package Parameter Caption list
- ; -- Protocol: A1VS PKG MGR PARAM DISP CAPTION ACTION
- DO EN^A1VSLPDC
- DO REFRESH
- DO MSG
- QUIT
- ;
- PARAMAP ; -- Display Data Map for Parameter File
- ; -- Protocol: A1VS PKG MGR PARAM DATA MAP HELP ACTION
- NEW HLPTEXT,LNENUM
- DO FULL^VALM1
- FOR LNENUM=1:1 SET HLPTEXT=$P($TEXT(PARMMAP+LNENUM),";",2) Q:HLPTEXT="$END" W !,HLPTEXT
- DO JUSTPAWS^A1VSLAPI
- ;
- DO REFRESH
- DO MSG
- QUIT
- ;
- PARAMCMP ; -- Package Parameter Comparison report
- ; -- Protocol: A1VS PKG MGR PARAM COMPARE ACTION
- NEW CMPRFNME
- DO FULL^VALM1
- SET CMPRFNME=$$PRMFLIST^A1VSLP() ;Select a File to compare
- IF CMPRFNME["XTMPSIZE" DO
- . DO EN^A1VSLPC(CMPRFNME)
- IF CMPRFNME'["XTMPSIZE" DO JUSTPAWS^A1VSLAPI("Comparison XTMPSIZE.DAT file NOT selected!")
- DO REFRESH
- DO MSG
- QUIT
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HA1VSLP 12070 printed Feb 18, 2025@23:05:07 Page 2
- A1VSLP ;Albany FO/GTS - VistA Package Sizing Manager; 7-JUL-2016
- +1 ;;1.0;VistA Package Sizing;;Oct 10, 2016;Build 25
- EN ; -- main entry point for A1VS PKG MGR PARAM DISPLAY
- +1 DO EN^VALM("A1VS PKG MGR PARAM DISPLAY")
- +2 QUIT
- +3 ;
- HDR ; -- header code
- +1 NEW DEFDIR,SPCPAD,DIRHEAD
- +2 SET SPCPAD=""
- +3 SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- +4 SET VALMHDR(1)=" VistA Package Size Analysis Manager - Parameter Display"
- +5 SET VALMHDR(2)=" Version: "_$$VERNUM^A1VSLM()_" Build: "_$$BLDNUM^A1VSLM()
- +6 SET DIRHEAD="Default Directory: "_DEFDIR
- +7 SET $PIECE(SPCPAD," ",(80-$LENGTH(DIRHEAD))/2)=""
- +8 SET VALMHDR(3)=SPCPAD_DIRHEAD
- +9 SET SPCPAD=""
- +10 SET DIRHEAD="Parameter file: "_A1VPSPRM
- +11 SET $PIECE(SPCPAD," ",(80-$LENGTH(DIRHEAD))/2)=""
- +12 SET VALMHDR(4)=SPCPAD_DIRHEAD
- +13 QUIT
- +14 ;
- BUILD ; - Build local and global display arrays
- +1 NEW DEFDIR,CAPNODE
- +2 ;Kill all processing & data arrays and video attributes & control arrays
- DO KILL
- +3 SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- +4 DO OPEN^%ZISH("XTMP",DEFDIR,A1VPSPRM,"R")
- +5 USE IO
- +6 SET (CAPNODE,VALMCNT)=0
- +7 FOR
- SET LINEITEM=""
- READ LINEITEM:5
- if $$STATUS^%ZISH
- QUIT
- Begin DoDot:1
- +8 IF LINEITEM]""
- Begin DoDot:2
- +9 ;Creates ^TMP("A1VS-PARAM-CAP",$J) array
- DO SCAPARY(LINEITEM,.CAPNODE)
- +10 DO SPLITADD^A1VSLAPI(.VALMCNT,LINEITEM,1)
- +11 ;Store LineItem into ^TMP global & Index
- DO LOADTMP(LINEITEM)
- End DoDot:2
- End DoDot:1
- +12 DO CLOSE^%ZISH("XTMP")
- +13 QUIT
- +14 ;
- INIT ; -- init variables and list array
- +1 IF (+$GET(FIRSTITM)>0)
- IF ($GET(LASTITM)>0)
- Begin DoDot:1
- +2 NEW A1TMPLNN
- +3 SET A1TMPLNN=$$SELXTMP^A1VSLAPI(FIRSTITM,LASTITM,5)
- +4 IF +A1TMPLNN>0
- Begin DoDot:2
- +5 SET A1VPSPRM=$PIECE($GET(^TMP("A1VS PACKAGE MGR",$JOB,A1TMPLNN,0)),A1TMPLNN-5_") ",2)
- +6 IF A1VPSPRM]""
- DO BUILD
- +7 IF A1VPSPRM']""
- SET VALMQUIT=""
- End DoDot:2
- +8 IF A1TMPLNN=-1
- DO EXIT^A1VSLP
- SET VALMQUIT=""
- End DoDot:1
- +9 QUIT
- +10 ;
- HELP ; -- help code
- +1 SET X="?"
- DO DISP^XQORM1
- +2 ;SET VALMBCK="R"
- +3 QUIT
- +4 ;
- EXIT ; -- exit code
- +1 DO KILL
- +2 QUIT
- +3 ;
- EXPND ; -- expand code
- +1 QUIT
- +2 ;
- REFRESH ; -- refresh display
- +1 DO BUILD
- +2 SET VALMBCK="R"
- +3 QUIT
- +4 ;
- MSG(TEXT) ; -- set default message
- +1 QUIT
- +2 ;
- KILL ; - Cleanup local and global display arrays
- +1 ;Kill data and video control arrays
- DO CLEAN^VALM10
- +2 ;Kill Video attributes
- DO KILL^VALM10()
- +3 DO CLNTMPGB
- +4 KILL ^TMP("A1VS PKG MAN PARM DISP",$JOB)
- +5 KILL DIR,X,Y,DTOUT,DIRUT,DUOUT
- +6 QUIT
- +7 ;
- +8 ;APIs ;TO DO: GTS - Further develop these APIs so LINEITEM is the most current/edited package parameter data
- LOADTMP(LINEITEM) ;Store LineItem into ^TMP global
- +1 ;Input : LINEITEM - A single Package lineitem from XTMPSIZE.DAT
- +2 ;
- +3 ;Output: ^TMP array in the following form:
- +4 ; ^TMP("{package name}","{primary prefix}")=LINEITEM [Package line from XTMPSIZE.DAT]
- +5 ; ^TMP("{package name}","{primary prefix}","ADDPFX","{added prefix}")=""
- +6 ; ^TMP("{package name}","{primary prefix}","BEGINFILE")=file number [Start file #]
- +7 ; ^TMP("{package name}","{primary prefix}","ENDFILE")=file number [Ending file #]
- +8 ; ^TMP("{package name}","{primary prefix}","FNUM",{file#})="" [File # from FILE NUMBER multiple]
- +9 ; ^TMP("{package name}","{primary prefix}","FLERNG","{file range 1}")="" [File # range from LOW-HIGH RANGE multiple]
- +10 ; ^TMP("{package name}","{primary prefix}","PARENT")=Package [PARENT PACKAGE field]
- +11 ; ^TMP("{package name}","{primary prefix}","REMPFX","{removed prefix}")=""
- +12 ;
- +13 ;IF +$G(CLEANONE)'>0 SET CLEANONE=0
- +14 SET PKGNAME=$PIECE(LINEITEM,"^")
- +15 SET PKGPFX=$PIECE(LINEITEM,"^",2)
- +16 ;
- +17 ;Load package components into ^TMP Global (loop)
- +18 ;Define Data node
- SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX)=LINEITEM
- +19 ;
- +20 ;Define File Range array nodes
- +21 SET FILELIST=$PIECE(LINEITEM,"^",8)
- +22 SET PCENUM=0
- +23 IF FILELIST'=""
- Begin DoDot:1
- +24 FOR
- SET PCENUM=PCENUM+1
- SET FLERNG=$PIECE(FILELIST,"|",PCENUM)
- if FLERNG']""
- QUIT
- Begin DoDot:2
- +25 SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"FLERNG",FLERNG)=""
- +26 ;Set ^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""
- DO FILNDX(FLERNG,PKGNAME)
- End DoDot:2
- End DoDot:1
- +27 IF FILELIST=""
- Begin DoDot:1
- +28 NEW BEG,END
- +29 SET BEG=$PIECE(LINEITEM,"^",3)
- +30 SET END=$PIECE(LINEITEM,"^",4)
- +31 ;Set ^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""
- IF BEG]""
- IF END]""
- DO FILNDX(BEG_"-"_END,PKGNAME)
- End DoDot:1
- +32 ;
- +33 ;Define Start/End File number array nodes
- +34 SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"BEGFILE")=$PIECE(LINEITEM,"^",3)
- +35 SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"ENDFILE")=$PIECE(LINEITEM,"^",4)
- +36 ;
- +37 ;Define File Number array nodes
- +38 SET FILELIST=$PIECE(LINEITEM,"^",7)
- +39 SET PCENUM=0
- +40 FOR
- SET PCENUM=PCENUM+1
- SET FNUM=$PIECE(FILELIST,"|",PCENUM)
- if FNUM']""
- QUIT
- Begin DoDot:1
- +41 SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"FNUM",FNUM)=""
- End DoDot:1
- +42 ;
- +43 ;Define Additional & Excepted Prefix Array nodes
- +44 SET APFXLST=$PIECE(LINEITEM,"^",5)
- +45 SET RPFXLST=$PIECE(LINEITEM,"^",6)
- +46 SET PCENUM=0
- +47 FOR
- SET PCENUM=PCENUM+1
- SET APFX=($PIECE(APFXLST,"|",PCENUM))
- if APFX']""
- QUIT
- Begin DoDot:1
- +48 ;Additional Namespace
- SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"ADDPFX",APFX)=""
- +49 ;Set ^TMP("A1VS-PFXIDX",$J,,<namespace prefix>,<package name>)=""
- DO PFXIDX(APFX,PKGNAME,APFXLST_"^"_RPFXLST)
- End DoDot:1
- +50 ;Set ^TMP("A1VS-PFXIDX",$J,<namespace prefix>,<package name>)="" [Primary Prefix]
- if PKGPFX]""
- DO PFXIDX(PKGPFX,PKGNAME,APFXLST_"^"_RPFXLST)
- +51 ;
- +52 SET PCENUM=0
- +53 FOR
- SET PCENUM=PCENUM+1
- SET RPFX=($PIECE(RPFXLST,"|",PCENUM))
- if RPFX']""
- QUIT
- Begin DoDot:1
- +54 ;Excepted Namespace
- SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"REMPFX",RPFX)=""
- End DoDot:1
- +55 ;
- +56 ;Define Parent array node
- +57 SET ^TMP("A1VS-PKGEDIT",$JOB,PKGNAME,PKGPFX,"PARENT")=$PIECE(LINEITEM,"^",9)
- +58 ;
- +59 QUIT
- +60 ;
- +61 ;
- +62 ;"A1VS-FRIDX" USAGE NOTE: Extract file range subscript from "FLERNG" nodes one-by-one
- +63 ; Retrieve Begin/End Range values from "FLERNG"
- +64 ; @QSUBSCRIPT "FRIDX" nodes retrieving Begin File #
- +65 ; if RNGEND < "FLERNG" node begin...QUIT check
- +66 ; if RNGBEG > "FLERNG" node end...QUIT check
- +67 ;
- +68 ; If RNGBEG '< "FLERNG" begin node, check for package name
- +69 ; if not package name, create a File overlap error node indicating "FLERNG" package, overlapping files and RNG package
- +70 ; If RNGEND '> "FLERNG" end node, check for package name
- +71 ; if not package name, create a File overlap error node indicating "FLERNG" package, overlapping files and RNG package
- +72 ;
- FILNDX(FLRNGE,PKGNAME) ; Set File Number Index [^TMP("A1VS-FRIDX",$J)]
- +1 ;Input: FLRNGE - File Range
- +2 ; PKGNAME - Package name
- +3 ;
- +4 ;Output : File Range Node [^TMP("A1VS-FRIDX",$J,<begin file #>,<end file #>,<package name>)=""]
- +5 ;
- +6 NEW BEGFNUM,ENDFNUM
- +7 SET BEGFNUM=$PIECE(FLRNGE,"-")
- +8 SET ENDFNUM=$PIECE(FLRNGE,"-",2)
- +9 SET ^TMP("A1VS-FRIDX",$JOB,BEGFNUM,ENDFNUM,PKGNAME)=""
- +10 QUIT
- +11 ;
- +12 ;
- +13 ;"A1VS-PFXIDX" USAGE NOTE: Loop ^TMP("A1VS-PKGEDIT",$J,<pkg name>,<prefix>)
- +14 ; Place <prefix> in a local prefix array
- +15 ; Extract Primary Prefix (4th subscript) and added Prefixes from "ADDPFX" (6th subscript) one-by-one and pass to CHKPRX
- +16 ; Loop ^TMP("A1VS-PFXIDX",$J,<prefix>,<package name>)
- +17 ; If <package name> in Array subscript doesn't equal "package name"...
- +18 ; create a File overlap error node indicating "ADDPFX" package, overlapping prefix and "PFXIDX" package
- +19 ;
- PFXIDX(PKGPFX,PKGNAME,PFXLST) ;Set ^TMP("A1VS-PKGEDIT",$J,"PFXIDX",<namespace prefix>,<package name>)=""
- +1 SET PFXLST=$GET(PFXLST)
- +2 SET ^TMP("A1VS-PFXIDX",$JOB,PKGPFX,PKGNAME)=PFXLST
- +3 QUIT
- +4 ;
- SCAPARY(LINEITEM,CAPNODE) ; Set single line Array & caption display array for action processing
- +1 NEW PARMDAT,PKG
- +2 SET CAPNODE=CAPNODE+1
- +3 ;SET ^TMP("A1VS-PARAM-LINE",$J,CAPNODE)=LINEITEM ; Set Parameter LineItem array
- +4 ;
- +5 ;Set Caption Display Array
- +6 SET PKG=$PIECE(LINEITEM,"^")
- +7 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG)=LINEITEM
- +8 SET PARMDAT=$PIECE(LINEITEM,"^")
- +9 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,1,"Package Name")=PARMDAT
- +10 SET PARMDAT=$PIECE(LINEITEM,"^",2)
- +11 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,2,"Primary Prefix")=PARMDAT
- +12 SET PARMDAT=$PIECE(LINEITEM,"^",3)
- +13 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,3,"*Lowest File#")=PARMDAT
- +14 SET PARMDAT=$PIECE(LINEITEM,"^",4)
- +15 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,4,"*Highest File#")=PARMDAT
- +16 SET PARMDAT=$PIECE(LINEITEM,"^",5)
- +17 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,5,"Additional Prefixes")=PARMDAT
- +18 SET PARMDAT=$PIECE(LINEITEM,"^",6)
- +19 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,6,"Excepted Prefixes")=PARMDAT
- +20 SET PARMDAT=$PIECE(LINEITEM,"^",7)
- +21 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,7,"File Numbers")=PARMDAT
- +22 SET PARMDAT=$PIECE(LINEITEM,"^",8)
- +23 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,8,"File Ranges")=PARMDAT
- +24 SET PARMDAT=$PIECE(LINEITEM,"^",9)
- +25 SET ^TMP("A1VS-PARAM-CAP",$JOB,PKG,9,"Parent Package")=PARMDAT
- +26 QUIT
- +27 ;
- CLNTMPGB ;Kill temporary globals
- +1 KILL ^TMP("A1VS-PKGEDIT",$JOB),^TMP("A1VS-ERROR",$JOB),^TMP("A1VS-FRIDX",$JOB),^TMP("A1VS-PFXIDX",$JOB)
- +2 ;,^TMP("A1VS-PARAM-LINE",$J)
- KILL ^TMP("A1VS-PARAM-CAP",$JOB)
- +3 QUIT
- +4 ;
- PRMFLIST() ;List parameter files for selection
- +1 NEW DEFDIR,FILENME,FILELIST,LSTRSLT,SELARY,ITEMNUM
- +2 SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
- +3 SET FILENME("XTMPSIZE*")=""
- +4 SET LSTRSLT=$$LIST^%ZISH(DEFDIR,"FILENME","FILELIST")
- +5 IF LSTRSLT
- Begin DoDot:1
- +6 ; Move XTMPSIZE files to SELARY
- +7 SET ITEMNUM=0
- +8 SET FILENME=""
- +9 FOR
- SET FILENME=$ORDER(FILELIST(FILENME))
- if FILENME=""
- QUIT
- SET ITEMNUM=ITEMNUM+1
- SET SELARY(ITEMNUM)=FILENME
- +10 ;
- +11 IF ITEMNUM>1
- Begin DoDot:2
- +12 ;List Parameter files for selection
- DO LISTOUT^A1VSLAPI(.SELARY)
- +13 SET XVAL=+$$SELPKG(ITEMNUM,.SELARY)
- +14 ;
- +15 IF (+$GET(XVAL)>0)&(+$GET(XVAL)<(ITEMNUM+1))
- SET FILENME=SELARY(XVAL)
- WRITE " ",FILENME
- End DoDot:2
- End DoDot:1
- +16 ;
- +17 IF ITEMNUM'>1
- DO JUSTPAWS^A1VSLAPI(" There are no XTMPSIZE files for comparison!")
- +18 QUIT FILENME
- +19 ;
- SELPKG(ITEMNUM,SELARY) ; Select Package to Edit from ^TMP("A1VS PKG MGR PARAM CAP",$J)
- +1 ; INPUT: SELARY - Array of packages
- +2 ; ITEMNUM - Number of items in SELARY
- +3 ;
- +4 ; OUTPUT: PKGNME - Name of selected package
- +5 ;
- +6 ;,PKGNME
- NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
- +7 ;SET PKGNME=""
- +8 SET DIR("A")="Select File: "
- +9 SET DIR(0)="NAO^1:"_ITEMNUM_"^K:(X'?.N) X"
- +10 ;SET DIR("PRE")="K:'$D(SELARY("_+$G(X)_")) X"
- +11 SET DIR("?",1)=" Select item # for the desired parameter file from the list."
- +12 SET DIR("?")=" [Enter'^' to exit]"
- +13 SET DIR("??")="^DO LISTOUT^A1VSLAPI(.SELARY)"
- +14 DO ^DIR
- +15 ;IF $P(X,"^",1)="+1" SET LASTSPKG=X
- +16 ;;IF '$D(DIRUT) SET PKGNME=SELARY(Y)
- +17 QUIT Y
- +18 ;
- +19 ;
- PARMMAP ; Map of Parameter data elements
- +1 ;
- +2 ;Parameter List data map from Package file:
- +3 ;------------------------------------------
- +4 ; ^ pce 1 : Package Name
- +5 ; [Source: NAME (#.01)]
- +6 ; ^ pce 2 : Primary Prefix
- +7 ; [Source: PREFIX (#1)]
- +8 ; ^ pce 3 : *Lowest File #
- +9 ; [Source: *LOWEST FILE NUMBER (#10.6)]
- +10 ; ^ pce 4 : *Highest File #
- +11 ; [Source: *HIGHEST FILE NUMBER (#11)]
- +12 ; ^ pce 5 : Pipe character (|) delimited list of Additional Prefixes
- +13 ; [Source: ADDITIONAL PREFIXES multiple (#14)]
- +14 ; ^ pce 6 : Pipe character (|) delimited list of Excepted Prefixes
- +15 ; [Source: EXCLUDED NAME SPACE multiple (#919)]
- +16 ; ^ pce 7 : Pipe character (|) delimited list of File entries
- +17 ; [Source: FILE NUMBER multiple (#15001)]
- +18 ; ^ pce 8 : Pipe character (|) delimited list of File Range entries
- +19 ; [Source: LOW-HIGH RANGE multiple (#15001.1)]
- +20 ; ^ pce 9 : Parent Package
- +21 ; [Source: PARENT PACKAGE field (#15003)]
- +22 ;
- +23 ;$END
- +24 ;
- +25 ;PROTOCOL entry points
- +26 ;
- PKGERR ; -- Package Parameter Errors
- +1 ; -- Protocol: A1VS PKG MGR PARAM ERR DISP ACTION
- +2 DO EN^A1VSLPER
- +3 DO REFRESH
- +4 DO MSG
- +5 QUIT
- +6 ;
- PARAMRPT ; -- Package Parameter Caption list
- +1 ; -- Protocol: A1VS PKG MGR PARAM DISP CAPTION ACTION
- +2 DO EN^A1VSLPDC
- +3 DO REFRESH
- +4 DO MSG
- +5 QUIT
- +6 ;
- PARAMAP ; -- Display Data Map for Parameter File
- +1 ; -- Protocol: A1VS PKG MGR PARAM DATA MAP HELP ACTION
- +2 NEW HLPTEXT,LNENUM
- +3 DO FULL^VALM1
- +4 FOR LNENUM=1:1
- SET HLPTEXT=$PIECE($TEXT(PARMMAP+LNENUM),";",2)
- if HLPTEXT="$END"
- QUIT
- WRITE !,HLPTEXT
- +5 DO JUSTPAWS^A1VSLAPI
- +6 ;
- +7 DO REFRESH
- +8 DO MSG
- +9 QUIT
- +10 ;
- PARAMCMP ; -- Package Parameter Comparison report
- +1 ; -- Protocol: A1VS PKG MGR PARAM COMPARE ACTION
- +2 NEW CMPRFNME
- +3 DO FULL^VALM1
- +4 ;Select a File to compare
- SET CMPRFNME=$$PRMFLIST^A1VSLP()
- +5 IF CMPRFNME["XTMPSIZE"
- Begin DoDot:1
- +6 DO EN^A1VSLPC(CMPRFNME)
- End DoDot:1
- +7 IF CMPRFNME'["XTMPSIZE"
- DO JUSTPAWS^A1VSLAPI("Comparison XTMPSIZE.DAT file NOT selected!")
- +8 DO REFRESH
- +9 DO MSG
- +10 QUIT