1 | ORPRS07 ; slc/dcm - Managing multiple reportz ;6/10/97 15:43
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;;Dec 17, 1997
|
---|
3 | EN ;Entry point
|
---|
4 | N ORVP
|
---|
5 | D MAIN("")
|
---|
6 | Q
|
---|
7 | MAIN(ORVP) ; Controls branching
|
---|
8 | N DFN,DIC,GMTYP,I,ORANSI,ORDG,OREND,ORH,ORH2,ORPRES,ORSCPAT,ORSDG
|
---|
9 | N ORSHORT,ORSRI,ORSRPT,ORSSTOP,ORSSTRT,ORTIT,ORWHL,VAROOT,XQORSPEW,X,Y
|
---|
10 | N ORAGE,ORATTEND,ORDOB,ORL,ORNP,ORPD,ORPNM,ORPV,ORSEX,ORSSN,ORTS,ORWARD
|
---|
11 | N ORSDG,ORURMBD,ORX,ORCONT,OROPREF
|
---|
12 | I '+$G(ORVP) D P^ORPRS01 Q:$D(ORSCPAT)'>9
|
---|
13 | S ORANSI=0,XQORFLG("SH")=1
|
---|
14 | S (ORANSI,OREND,X)=0
|
---|
15 | I +$G(ORSCPAT)=1,+$G(ORSCPAT(1)) S ORVP=+$G(ORSCPAT(1))_";DPT(",Y=+ORVP D HOMO^ORUDPA
|
---|
16 | S DIC=101 S X="ORS REPORT MENU" D EN^XQOR
|
---|
17 | K VA200,VAERR,VAIN,VADM
|
---|
18 | Q
|
---|
19 | EXIT ; Queue output
|
---|
20 | N DUOUT,ORSRI,ORSRPT,ZTDESC,ZTRTN,ZTSAVE S OREND=+$G(OREND)
|
---|
21 | S ORSRI=0 F S ORSRI=$O(Y(ORSRI)) Q:ORSRI'>0 S ORSRPT=ORSRI,ORSRPT(ORSRI)=Y(ORSRI)
|
---|
22 | I $S($D(XQORPOP):1,$G(OREND)=1:1,$D(DUOUT):1,$D(DIROUT):1,'$D(ORSRPT):1,'$D(ORSCPAT)&'+$G(ORVP):1,1:0) Q
|
---|
23 | S (ZTSAVE("OR*"),ZTSAVE("GM*"),ZTSAVE("LR*"))="",IO("Q")=1
|
---|
24 | S ZTRTN="OUTPUT^ORPRS07",ZTDESC="Results Reporting" W ! D DEVICE
|
---|
25 | Q
|
---|
26 | OUTPUT ; Loops through ORSRPT( and queues each report
|
---|
27 | N DIROUT,DIRUT,ORH,ORH2,ORMETHOD,ORSEND,ORSHORT,ORSI,ORSJ,ORSRI,ORTIT,ORWHL,X
|
---|
28 | N XQORNOD,XQORSPEW,XY,ORSLTR,ORSPNM,ORDG,ORION S ORION=$G(ION)
|
---|
29 | I +$G(ORVP) D REPORT(ORVP) K OROLOC,ORSSTOP,ORSSTRT,VAROOT,VA,X1 Q
|
---|
30 | S ORSI=0 F S ORSI=$O(ORSCPAT(ORSI)) Q:ORSI'>0!($G(DIROUT))!($$S^%ZTLOAD) S:'$O(ORSCPAT(ORSI)) ORSEND=1 D
|
---|
31 | . S ORVP=+ORSCPAT(ORSI)_";DPT(",ORSPNM=$P(ORSCPAT(ORSI),U,2)
|
---|
32 | . D REPORT(ORVP)
|
---|
33 | K ORNO,ORSPG
|
---|
34 | Q
|
---|
35 | REPORT(ORVP) ; Loops through ORSRPT( and prints all reports for ea patient
|
---|
36 | N ORSJ,ORSSTFLG,XQORNOD
|
---|
37 | U IO
|
---|
38 | S ORSJ=0 F S ORSJ=$O(ORSRPT(ORSJ)) Q:ORSJ'>0!+$G(DIROUT)!$G(OREND) D
|
---|
39 | . S XQORNOD=$P(ORSRPT(ORSJ),U,2),ORMETHOD=$G(^ORD(101,+XQORNOD,101.05,20,1))
|
---|
40 | . I $D(ORSSTRT)>9,+XQORNOD S ORSSTRT=+$G(ORSSTRT(XQORNOD)),ORH=$P($G(ORSSTRT(XQORNOD)),U,2)
|
---|
41 | . I $D(ORSSTOP)>9,+XQORNOD S ORSSTOP=+$G(ORSSTOP(XQORNOD)),ORH2=$P($G(ORSSTOP(XQORNOD)),U,2)
|
---|
42 | . I $D(ORSDG(+XQORNOD)) S ORDG=$G(ORSDG(+XQORNOD))
|
---|
43 | . I $L(ORMETHOD) X ORMETHOD I $G(ION)'=ORION S IOP=ORION D ^%ZIS
|
---|
44 | . I +$G(ORSSTFLG) D STOP^ORPRS01 S ORSSTFLG=0
|
---|
45 | Q
|
---|
46 | DEVICE ; Device Handling/Output control
|
---|
47 | N IO,IOP,%ZIS
|
---|
48 | S %ZIS="Q",%ZIS("B")="HOME" D ^%ZIS Q:POP
|
---|
49 | I +$G(ORSRPT)>1,(IO'=IO(0)),'$D(IO("Q")) W !,"Printing of multiple reports requires queueing.",!
|
---|
50 | D @$S(+$G(ORSRPT)>1&(IO'=IO(0)):"QUE",$D(IO("Q")):"QUE",1:"NOQUE")
|
---|
51 | Q
|
---|
52 | QUE ; Set ZT parameters and tasks ZTRTN
|
---|
53 | N ZTIO K IO("Q")
|
---|
54 | S ZTIO=ION
|
---|
55 | D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Cancelled!")
|
---|
56 | K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE D ^%ZISC
|
---|
57 | Q
|
---|
58 | NOQUE ; Calls ZTRTN in interactive mode
|
---|
59 | I IO'=IO(0) U IO
|
---|
60 | D @ZTRTN
|
---|
61 | D ^%ZISC
|
---|
62 | Q
|
---|