VistA-FOIAVistA/r/SPINAL_CORD_DYSFUNCTION-SPN/SPNPRTMT.m

107 lines
2.7 KiB
Mathematica

SPNPRTMT ;HIRMFO/WAA- Master Search Program ; 8/20/96
;;2.0;Spinal Cord Dysfunction;**3**;01/02/1997
;;
; This routine is the master search program
; It Will call all the needed search routines as needed
;EN1
; This entry point is the main sort and selection entry point
; The user will be asked to select a series of question then
; be allowed to select other fields to search by.
;
;EN2(D0)
; This entry point is the main filter routine. This program
; will pass all the patient with in the data base through the
; pre-select filter and only store those who mee all the critera
; that was asked for.
; Input:
; D0 = Patient DFN
; Output:
; FLAG = 1/0
; 1 patient meets the critera
; 0 patient fails the critera
;
;DEVICE
; This routine is a generic device selection dialog.
; Input:
; PROGRAM = The calling program
; TITLE = The Title of the print
; Output:
; SPNIO = Q
; If SPNIO is a Q then the user queued the print.
;
;CLOSE
; This routine will set the current device to top of form and close.
;
;STPCK
; This function is to see if the user terminated the print via
; taskman.
;
EN1 ; Main Search Entry Point
S SPNFILTR=$G(SPNFILTR,1)
Q:'SPNFILTR
S (SPNMAST,SPNLEXIT)=0
I '$D(^TMP($J,"SPNPRT","AUP")) S SPNMAST=1 D G:SPNLEXIT EXIT
.D EN1^SPNPRTUP
.Q
D EXIT2
D EN1^SPNPRTAU G:SPNLEXIT EXIT
D EN1^SPNPRTSR G:SPNLEXIT EXIT
Q
EN2(D0) ; Main filter routine
N ACTION,FLAG
S ACTION="",FLAG=1
F S ACTION=$O(^TMP($J,"SPNPRT",ACTION)) Q:ACTION="" D Q:'FLAG
. N SEQUENCE S SEQUENCE=0
. F S SEQUENCE=$O(^TMP($J,"SPNPRT",ACTION,SEQUENCE)) Q:SEQUENCE<1 D Q:'FLAG
.. N PASSFAIL
.. S PASSFAIL=$G(^TMP($J,"SPNPRT",ACTION,SEQUENCE,0))
.. Q:PASSFAIL=""
.. Q:$E(PASSFAIL,1,2)'="$$"
.. S PASSFAIL="S FLAG="_PASSFAIL
.. X PASSFAIL
.. Q
. Q
Q FLAG
DEVICE(PROGRAM,TITLE,ZTSAVE) ; Select device
N %ZIS,IOP
S SPNIO=""
S %ZIS="QM",%ZIS("A")="Select DEVICE: "
D ^%ZIS
I POP D Q
.S SPNLEXIT=1
.W !,"Print ",TITLE," has been aborted."
.Q
I $D(IO("Q")) D
.N ZTRTN
.S ZTRTN=PROGRAM,ZTDESC=TITLE
.S ZTSAVE("^TMP($J,"""_"SPNPRT"_""",")=""
.D ^%ZTLOAD
.I $D(ZTSK)[0 D Q
..W !,"Print ",TITLE," has been aborted."
..S SPNLEXIT=1
..Q
.W !,"Print ",TITLE," has been queued."
.W !,"The task number for the print job is ",ZTSK,"."
.S SPNIO="Q"
.Q
Q
CLOSE ;Close current print device
I 'SPNLEXIT W @IOF
W ! D ^%ZISC
I $D(ZTQUEUED) S ZTREQ="@"
D EXIT K SPNMAST
Q
STPCK() ; Taskman check
N ZTSTOP
S ZTSTOP=0
I $$S^%ZTLOAD D
.S ZTSTOP=1 K ZTREG W !?10,"*** OUTPUT STOPPED AT USER'S REQUEST ***"
.Q
Q ZTSTOP
;
EXIT ;KILL QUIT
I $G(SPNMAST) K ^TMP($J,"SPNPRT","AUP")
EXIT2 K ^TMP($J,"SPNPRT","AUTO")
K ^TMP($J,"SPNPRT","POST")
Q