1 | PSOCPIBF ;BIR/EJW-Clean up to bill unbilled CMOP copays ;01/14/02
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**93**;DEC 1997
|
---|
3 | ;External reference to ^XUSEC supported by DBIA 10076
|
---|
4 | ;External reference to ^XPD(9.7, supported by DBIA 2197
|
---|
5 | S ZTDTH=""
|
---|
6 | I $D(ZTQUEUED) S ZTDTH=$H
|
---|
7 | I ZTDTH="" D
|
---|
8 | .W !,"The background job to clean up unbilled, released CMOP prescription fills must"
|
---|
9 | .W !,"be queued to run and complete before 02/01/2002 when tracking for the "
|
---|
10 | .W !,"annual copay cap begins."
|
---|
11 | .W !!,"If no start date/time is entered when prompted, the background job will be "
|
---|
12 | .W !,"queued to run NOW."
|
---|
13 | .W !
|
---|
14 | .D PATCHDT
|
---|
15 | .D CHKSITE
|
---|
16 | .D GETDATE
|
---|
17 | .D BMES^XPDUTL("Queuing background job to reprocess unbilled copay CMOP Prescription fills...")
|
---|
18 | S ZTRTN="EN^PSOCPIBF",ZTIO="",ZTDESC="Background job to bill CMOP unbilled copays" D ^%ZTLOAD K ZTDTH,ZTRTN,ZTIO,ZTDESC
|
---|
19 | W:$D(ZTSK)&('$D(ZTQUEUED)) !!,"Task Queued !",!
|
---|
20 | Q
|
---|
21 | EN ;
|
---|
22 | N PSODATE,RXP,PSOTEXT,YY,PSOCNT,PSOSTART,PSOEND,PSOSTOP
|
---|
23 | S PSOCNT=0
|
---|
24 | S PSOSTOP=0
|
---|
25 | D NOW^%DTC S Y=% D DD^%DT S PSOSTART=Y
|
---|
26 | I '$G(DT) S DT=$$DT^XLFDT
|
---|
27 | I DT>3020201 S PSOSTOP=1 D MAIL Q ; TOO LATE TO RUN CLEAN-UP
|
---|
28 | S PSOINST=$O(^XPD(9.7,"B","PSX*2.0*35","")) I PSOINST'="" S PSODATE=$P($G(^XPD(9.7,PSOINST,1)),"^",3)
|
---|
29 | I $G(PSODATE)'="" S PSODATE=PSODATE-1
|
---|
30 | I $G(PSODATE)="" S PSODATE=3011011 ; DAY BEFORE PSX*2*35 WAS INSTALLED ANYWHERE
|
---|
31 | F S PSODATE=$O(^PSRX("AR",PSODATE)) Q:'PSODATE S RXP="" F S RXP=$O(^PSRX("AR",PSODATE,RXP)) Q:'RXP S YY="" F S YY=$O(^PSRX("AR",PSODATE,RXP,YY)) Q:YY="" Q:PSOSTOP D
|
---|
32 | .S PSOIB=+$P($G(^PSRX(RXP,"IB")),"^") I 'PSOIB Q ; NOT MARKED AS A COPAY RX
|
---|
33 | . ; IF NO IB NUMBER FOR THIS FILL, SET UP VARIABLES AND CALL CP^PSOCP. IF THERE IS AN IB NUMBER AFTER THIS CALL, COUNT IT FOR SUMMARY MAIL MSG
|
---|
34 | .I 'YY D Q
|
---|
35 | ..I $P(^PSRX(RXP,"IB"),"^",2)'="" Q
|
---|
36 | ..D NOW^%DTC I %>3020201 S PSOSTOP=1 Q ; STOP IF REACH DATE OF COPAY RATE CHANGE
|
---|
37 | ..D SITE
|
---|
38 | ..I PSODATE>3011231 D CP^PSOCP
|
---|
39 | ..I PSODATE<3020101 D CP^PSOCPIBC ; BEFORE NEW EXEMPTION CHECKS WENT INTO EFFECT
|
---|
40 | ..I $P(^PSRX(RXP,"IB"),"^",2)'="" S PSOCNT=PSOCNT+1
|
---|
41 | .I $P($G(^PSRX(RXP,1,YY,"IB")),"^",1)="" D
|
---|
42 | ..D NOW^%DTC I %>3020201 S PSOSTOP=1 Q ; STOP IF REACH DATE OF COPAY RATE CHANGE
|
---|
43 | ..D SITE
|
---|
44 | ..I PSODATE>3011231 D CP^PSOCP
|
---|
45 | ..I PSODATE<3020101 D CP^PSOCPIBC ; BEFORE NEW EXEMPTION CHECKS WENT INTO EFFECT
|
---|
46 | ..I $P($G(^PSRX(RXP,1,YY,"IB")),"^",1)'="" S PSOCNT=PSOCNT+1
|
---|
47 | MAIL ;
|
---|
48 | D NOW^%DTC S Y=% D DD^%DT S PSOEND=Y
|
---|
49 | I $G(DUZ) S XMY(DUZ)=""
|
---|
50 | S XMDUZ="Outpatient Pharmacy",XMSUB="Outpatient Pharmacy Copay Clean-up"
|
---|
51 | F PSOCXPDA=0:0 S PSOCXPDA=$O(^XUSEC("PSO COPAY",PSOCXPDA)) Q:'PSOCXPDA S XMY(PSOCXPDA)=""
|
---|
52 | I $O(XMY(""))="" Q ; no recipients for mail message
|
---|
53 | S PSOTEXT(1)="The Rx copay clean up job for the Outpatient Pharmacy patch (PSO*7*93)"
|
---|
54 | S PSOTEXT(2)="started "_PSOSTART_" and completed "_PSOEND_"."
|
---|
55 | I PSOCNT>0 S PSOTEXT(3)="Released unbilled copay Rxs have now been reprocessed."
|
---|
56 | I PSOCNT>0 S PSOTEXT(4)="There were "_PSOCNT_" Rx fills successfully billed."
|
---|
57 | I PSOCNT=0 S PSOTEXT(3)="No released unbilled copay Rxs were found to reprocess."
|
---|
58 | I PSOSTOP D
|
---|
59 | .S PSOTEXT(5)=""
|
---|
60 | .S PSOTEXT(6)="PROCESSING CANNOT CONTINUE BEYOND JAN. 31,2002 BECAUSE OF COPAY RATE CHANGE."
|
---|
61 | .I $G(PSODATE)'="" S Y=PSODATE D DD^%DT S PSOTEXT(7)="AT TIME JOB TERMINATED, RELEASE DATE BEING PROCESSED WAS "_Y
|
---|
62 | S XMTEXT="PSOTEXT(" N DIFROM D ^XMD K XMDUZ,XMTEXT,XMSUB
|
---|
63 | S:$D(ZTQUEUED) ZTREQ="@"
|
---|
64 | Q
|
---|
65 | ;
|
---|
66 | GETDATE ; GET DATE/TIME OF WHEN BACKGROUND JOB SHOULD BE RUN
|
---|
67 | S ZTDTH=""
|
---|
68 | S NOW=0
|
---|
69 | D NOW^%DTC S (Y,TODAY)=% D DD^%DT
|
---|
70 | W !!,"Background job must be queued to start by "_$S(Y<3020131:"Jan 30, 2002 or before.",1:"Jan 31, 2002.")
|
---|
71 | I Y>3020131 S ZTDTH=Y Q ; LET JOB RUN IF IT'S FEB 1,2002 OR LATER. THE MAILMAN MESSAGE WILL SHOW THAT NO CLEAN UP WAS DONE
|
---|
72 | W !!,"At the following prompt, enter a starting date/time after ",Y,!,"and before "_$S(Y<3020131:"Jan 31, 2002",1:"Feb 1, 2002")," or enter NOW to queue the job immediately."
|
---|
73 | W !,"If this prompting is during patch installation, you will not see what you type."
|
---|
74 | W ! K %DT D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("A")="Queue copay clean-up Job to run Date/Time: "
|
---|
75 | D ^%DT K %DT I $D(DTOUT)!(Y<0) W "Task will be queued to run NOW" S ZTDTH=$H,NOW=1
|
---|
76 | I 'NOW I Y>0,$P(Y,".")>3020130 I TODAY<3020131 W !!,"Must queue background job to start on Jan. 30 or before." G GETDATE
|
---|
77 | I 'NOW,Y>0 D
|
---|
78 | .S SAVEY=Y
|
---|
79 | .D DD^%DT
|
---|
80 | .S X=Y
|
---|
81 | .S Y=SAVEY
|
---|
82 | ASK W !!,"Task will be queued to run "_$S(NOW:"NOW",1:X)_" Is that correct? :"
|
---|
83 | R XX:300 S:'$T XX="Y" I XX'="Y",XX'="y",XX'="N",XX'="n" W " Enter Y or N" G ASK
|
---|
84 | I XX'="Y",XX'="y" G GETDATE
|
---|
85 | I Y>0,ZTDTH="" S ZTDTH=Y
|
---|
86 | I ZTDTH="" S ZTDTH=$H
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | SITE ; SET UP VARIABLES NEEDED BY BILLING
|
---|
90 | S PSOSITE=$S(YY=0:$P(^PSRX(RXP,2),"^",9),1:$P($G(^PSRX(RXP,1,YY,0)),"^",9))
|
---|
91 | I PSOSITE="" Q
|
---|
92 | S PSOPAR=$G(^PS(59,PSOSITE,1))
|
---|
93 | S PSOSITE7=$P($G(^PS(59,PSOSITE,"IB")),"^")
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | PATCHDT ; SHOW USER WHEN CMOP PATCH WAS FIRST INSTALLED
|
---|
97 | S PSOFIRST="Oct 12, 2001" ; DEFAULT FOR WHEN FIRST SITE INSTALLED THE PATCH
|
---|
98 | S PSOINST=$O(^XPD(9.7,"B","PSX*2.0*35","")) I PSOINST'="" S Y=$P($G(^XPD(9.7,PSOINST,1)),"^",3) D DD^%DT S PSOFIRST=Y
|
---|
99 | W !,"CMOP patch PSX*2*35 was first installed at your facility on ",PSOFIRST
|
---|
100 | Q
|
---|
101 | ;
|
---|
102 | CHKSITE ; SEE IF ANY DIVISIONS HAD THE PROBLEM
|
---|
103 | S PROBTEXT="'BARCODES ON ACTION PROFILES'"
|
---|
104 | N SITE,PROB
|
---|
105 | S PROB=0
|
---|
106 | S SITE="" F S SITE=$O(^PS(59,SITE)) Q:SITE="" I '$P($G(^PS(59,SITE,1)),"^",1) D S PROB=1 Q
|
---|
107 | .W !!,"The Outpatient Site (File #59) parameter, "_PROBTEXT
|
---|
108 | .W !,"for one or more outpatient sites is either not defined or set to 'No'."
|
---|
109 | .W !,"All copay eligible, released CMOP prescription fills from those outpatient"
|
---|
110 | .W !,"sites would not have been billed since the installation of PSX*2*35."
|
---|
111 | .W !!,"NOTE: If the estimated number of CMOP prescriptions involved is high based"
|
---|
112 | .W !,"on when the patch was first installed and the number of outpatient sites "
|
---|
113 | .W !,"involved, you may want to disable journaling for Integrated Billing and"
|
---|
114 | .W !,"Accounts Receivable globals ^IB and ^PRCA while the clean up job"
|
---|
115 | .W !,"is running."
|
---|
116 | W !!,"When the background job is complete, a MailMan message will be sent to the"
|
---|
117 | W !,"installer indicating how many copay eligible CMOP prescription fills were "
|
---|
118 | W !,"successfully billed."
|
---|
119 | I PROB Q
|
---|
120 | W !!,"All "_PROBTEXT_" are set to 'YES' for all divisions."
|
---|
121 | W !,"The MailMan message at the end should indicate that no fills were found to"
|
---|
122 | W !,"reprocess. (i.e. All released CMOP fills have already been billed.)"
|
---|
123 | Q
|
---|
124 | ;
|
---|