1 | PSAPV ;BIR/JMB-Processor and Verifier ;9/6/97
|
---|
2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**15**; 10/24/97
|
---|
3 | ;This routine prints the order number, invoice number, invoice date,
|
---|
4 | ;processor's name, process date, verifier's name, and verification
|
---|
5 | ;date for a specified invoice date range.
|
---|
6 | ;
|
---|
7 | I '$D(^XUSEC("PSA ORDERS",DUZ)) W !,"You do not hold the key to enter the option." Q
|
---|
8 | I '$O(^PSD(58.811,"ADATE",0)) W !,"There are no invoices." G EXIT
|
---|
9 | S PSAOUT=0 D BDATE G:PSAOUT EXIT
|
---|
10 | DEVICE ;Asks device & queueing info
|
---|
11 | W !!,"The report must be sent to a printer that supports 132 columns.",!
|
---|
12 | DEV K IO("Q"),%ZIS,IOP,POP S %ZIS="Q",%ZIS("B")="",IOM=132
|
---|
13 | D ^%ZIS I POP W !,"NO DEVICE SELECTED OR OUTPUT PRINTED!" Q
|
---|
14 | ;I $E(IOST)["C"!($G(IOM)<132) W !,"The printout must be sent to a 132 column printer!",! G DEV
|
---|
15 | I $D(IO("Q")) D G EXIT
|
---|
16 | .N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK
|
---|
17 | .S ZTRTN="COMPILE^PSAPV",ZTDESC="Drug Acct. - Processor and Verifier Report"
|
---|
18 | .S:$D(PSABEG) ZTSAVE("PSABEG")="" S:$D(PSAEND) ZTSAVE("PSAEND")=""
|
---|
19 | .D ^%ZTLOAD
|
---|
20 | ;
|
---|
21 | COMPILE ;Compiles data
|
---|
22 | S PSAOUT=0,X1=PSABEG,X2=-1 D C^%DTC S PSADATE=X_.239999
|
---|
23 | F S PSADATE=+$O(^PSD(58.811,"ADATE",PSADATE)) Q:'PSADATE!(PSADATE>PSAEND)!(PSAOUT) D
|
---|
24 | .S PSAIEN=0 F S PSAIEN=+$O(^PSD(58.811,"ADATE",PSADATE,PSAIEN)) Q:'PSAIEN!(PSAOUT) D
|
---|
25 | ..Q:'$D(^PSD(58.811,PSAIEN,0)) S PSAORD=$P(^PSD(58.811,PSAIEN,0),"^"),PSAIEN1=0
|
---|
26 | ..F S PSAIEN1=+$O(^PSD(58.811,"ADATE",PSADATE,PSAIEN,PSAIEN1)) Q:'PSAIEN1!(PSAOUT) D
|
---|
27 | ...Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,0))
|
---|
28 | ...S PSAIN=^PSD(58.811,PSAIEN,1,PSAIEN1,0),PSAINV=$P(PSAIN,"^"),PSAINVDT=$P(PSAIN,"^",2),PSAPROC=+$P(PSAIN,"^",10),PSAVER=+$P(PSAIN,"^",11)
|
---|
29 | ...S PSAPROC=$S($P($G(^VA(200,PSAPROC,0)),"^")'="":$P($G(^VA(200,PSAPROC,0)),"^"),1:"")
|
---|
30 | ...S PSAVER=$S($P($G(^VA(200,PSAVER,0)),"^")'="":$P($G(^VA(200,PSAVER,0)),"^"),1:"")
|
---|
31 | ...S (PSALINE,PSAPROCD,PSAVERD)=0
|
---|
32 | ...Q:PSAPROC=""&(PSAVER="")
|
---|
33 | ...F S PSALINE=+$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE)) Q:'PSALINE!(PSAOUT) D
|
---|
34 | ....Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0))
|
---|
35 | ....S PSADATA=^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0) S:PSAPROCD<$P(PSADATA,"^",6) PSAPROCD=$P(PSADATA,"^",6) S:PSAVERD<$P(PSADATA,"^",8) PSAVERD=$P(PSADATA,"^",8)
|
---|
36 | ..S PSAINVDT=$S(+PSAINVDT:$E(PSAINVDT,4,5)_"/"_$E(PSAINVDT,6,7)_"/"_$E(PSAINVDT,2,3),1:"UNKNOWN")
|
---|
37 | ..S PSAPROCD=$S(+PSAPROCD&(PSAPROC'=""):$E(PSAPROCD,4,5)_"/"_$E(PSAPROCD,6,7)_"/"_$E(PSAPROCD,2,3),1:"")
|
---|
38 | ..S PSAVERD=$S(+PSAVERD&(PSAVER'=""):$E(PSAVERD,4,5)_"/"_$E(PSAVERD,6,7)_"/"_$E(PSAVERD,2,3),1:"")
|
---|
39 | ..S ^TMP("PSAPVR",$J,PSAORD,PSAINV)=PSAINVDT_"^"_PSAPROC_"^"_PSAPROCD_"^"_PSAVER_"^"_PSAVERD
|
---|
40 | ;
|
---|
41 | PRINT ;Print data
|
---|
42 | S Y=PSAEND D DD^%DT S PSAENDX=Y K X,Y,%DT
|
---|
43 | S Y=PSABEG D DD^%DT S PSABEGX=Y K X,Y,%DT
|
---|
44 | D NOW^%DTC S PSARUN=%,PSARUN=$E(PSARUN,4,5)_"/"_$E(PSARUN,6,7)_"/"_$E(PSARUN,2,3)_"@"_$E($P(PSARUN,".",2),1,2)_":"_$E($P(PSARUN,".",2),3,4)
|
---|
45 | S PSAPG=0,PSASLN="",$P(PSASLN,"-",123)="" K Y D HDR
|
---|
46 | S PSAORD="" F S PSAORD=$O(^TMP("PSAPVR",$J,PSAORD)) Q:PSAORD="" D
|
---|
47 | .I $Y+4>IOSL D HDR
|
---|
48 | .W !,"Order #: "_PSAORD,?24,"|",?36,"|",?68,"|",?80,"|",?112,"|"
|
---|
49 | .S PSAINV="" F S PSAINV=$O(^TMP("PSAPVR",$J,PSAORD,PSAINV)) Q:PSAINV="" D
|
---|
50 | ..S PSADATA=^TMP("PSAPVR",$J,PSAORD,PSAINV),PSAINVDT=$P(PSADATA,"^"),PSAPROC=$P(PSADATA,"^",2),PSAPROCD=$P(PSADATA,"^",3),PSAVER=$P(PSADATA,"^",4),PSAVERD=$P(PSADATA,"^",5)
|
---|
51 | ..W !,PSAINV,?24,"|",?26,PSAINVDT,?36,"|",?38,PSAPROC,?68,"|",?70,PSAPROCD,?80,"|",?82,PSAVER,?112,"|",?114,PSAVERD
|
---|
52 | .W !," | | | | |"
|
---|
53 | W !,PSASLN,!
|
---|
54 | ;
|
---|
55 | EXIT W @IOF
|
---|
56 | D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" K IO("Q"),^TMP("PSAPVR",$J)
|
---|
57 | K %,%ZIS,DTOUT,PSABEG,PSABEG,PSABEGX,PSADATA,PSADATE,PSAEND,PSAENDX,PSAIEN,PSAIEN1,PSAIN,PSAINV,PSAINVDT
|
---|
58 | K PSALINE,PSAORD,PSAOUT,PSAPG,PSAPROC,PSAPROCD,PSARUN,PSASLN,PSAVER,PSAVERD,X,X1,X2,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | BDATE ;Gets beginning and ending invoice dates
|
---|
62 | W ! S %DT="AEP",%DT("A")="Beginning Date: " D ^%DT
|
---|
63 | I +Y<1!($D(DTOUT))!(X["^")!(X']"") S PSAOUT=1 Q
|
---|
64 | I Y>DT K X,Y,%DT W !!,"Future dates are not permitted.",! K X,Y,%DT G BDATE
|
---|
65 | S PSABEG=+Y
|
---|
66 | EDATE W ! S %DT="AE",%DT("A")="Ending Date : " D ^%DT
|
---|
67 | I +Y<1!($D(DTOUT))!(X["^")!(X']"") S PSAOUT=1 Q
|
---|
68 | I Y<PSABEG K X,Y,%DT W !!,"Ending Date cannot be before the Start Date.",! K X,Y,%DT G EDATE
|
---|
69 | S PSAEND=+Y
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | HDR ;Report header
|
---|
73 | I $E(IOST)'="C",PSAPG W !,PSASLN,@IOF
|
---|
74 | S PSAPG=PSAPG+1
|
---|
75 | W !?46,"DRUG ACCOUNTABILITY/INVENTORY INTERFACE",?114,"PAGE "_PSAPG,!?51,"PROCESSOR AND VERIFIER REPORT"
|
---|
76 | I $E(IOST,1,2)="C-" W !,"RUN DATE: "_PSARUN,?52,PSABEGX_" - "_PSAENDX
|
---|
77 | E W !,?52,PSABEGX_" - "_PSAENDX
|
---|
78 | W !!?24,"| INVOICE",?36,"|",?68,"| DATE",?80,"|",?112,"| DATE"
|
---|
79 | W !,"INVOICE#",?24,"| DATE",?36,"| PROCESSOR",?68,"| PROCESSED",?80,"| VERIFIER",?112,"| VERIFIED"
|
---|
80 | W !,"========================|===========|===============================|===========|===============================|========="
|
---|
81 | Q
|
---|