1 | PSAVER1 ;BIR/JMB-Verify Invoices - CONT'D ;7/23/97
|
---|
2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**33,60,65**; 10/24/97;Build 2
|
---|
3 | ;This routine allows the user to edit processed invoices by selecting
|
---|
4 | ;the invoice's line item number. If there are no errors after editing
|
---|
5 | ;the line item is verified.
|
---|
6 | ;
|
---|
7 | ;References to global ^DIC(51.5 are covered by IA #1931
|
---|
8 | ;References to global ^PSDRUG( are covered by IA #2095
|
---|
9 | ;
|
---|
10 | EDIT W @IOF,!?18,"<<< EDIT INVOICES TO BE VERIFIED SCREEN >>>",!!?2,"Choose the invoices from the list you want to edit.",!,PSASLN
|
---|
11 | S (PSA,PSACNT,PSASTOP)=0,PSATMP="" F S PSA=+$O(PSAEDIT(PSA)) Q:'PSA D Q:PSASTOP
|
---|
12 | .I $Y+5>IOSL D HEADER Q:PSASTOP
|
---|
13 | .S PSAIEN=$P(PSAEDIT(PSA),"^"),PSAIEN1=$P(PSAEDIT(PSA),"^",2),PSAORD=$P(^PSD(58.811,PSAIEN,0),"^")
|
---|
14 | .S PSAINV=$P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^"),PSAINVDT=+$P(^(0),"^",2),PSACNT=PSACNT+1
|
---|
15 | .W !?2,PSA_".",?6,"Order#: "_PSAORD_" Invoice#: "_PSAINV_" Invoice Date: "_$$FMTE^XLFDT(PSAINVDT)
|
---|
16 | K PSASTOP W !,PSASLN
|
---|
17 | S DIR(0)="LO^1:"_PSACNT,DIR("A")="Select invoices to edit",DIR("?",1)="Enter the number to the left of the invoice",DIR("?")="data to be verified or a range of numbers.",DIR("??")="^D SELHELP^PSAVER"
|
---|
18 | W ! D ^DIR K DIR Q:$G(DIRUT)
|
---|
19 | S PSASEL=Y
|
---|
20 | ;
|
---|
21 | SEL ;Select line items to be edit
|
---|
22 | K PSAVBKG S PSATMP=""
|
---|
23 | F PSAPC=1:1 S PSA=$P(PSASEL,",",PSAPC) Q:'PSA D CORR Q:PSAOUT
|
---|
24 | I $O(PSAVBKG(0)) D
|
---|
25 | .K ZTSAVE S ZTDESC="Drug Acct. - Verify Prime Vendor Invoices",ZTIO="",ZTDTH=$H,ZTRTN="^PSAVER6",ZTSAVE("PSAVBKG(")="" D ^%ZTLOAD
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | HEADER ;Header with screen hold
|
---|
29 | S PSASS=21-$Y F PSAKK=1:1:PSASS W !
|
---|
30 | S DIR(0)="E" D ^DIR K DIR I $G(DIRUT) S PSASTOP=1 Q
|
---|
31 | W @IOF,!?18,"<<< EDIT INVOICES TO BE VERIFIED SCREEN >>>",!!,PSASLN
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | CORR N PSASEL1 S PSASEL1=PSASEL N PSASEL ;;<*65 RJS
|
---|
35 | S PSAIEN=$P(PSAEDIT(PSA),"^"),PSAIEN1=$P(PSAEDIT(PSA),"^",2),PSASEL=PSA ;;*65 RJS>
|
---|
36 | S PSAMSG="" D VERLOCK^PSAVER4 ; <== PSA*3*60 (RJS-VMP)
|
---|
37 | I $L(PSAMSG) D Q
|
---|
38 | .D HDR W !,?5,PSAMSG,! S DIR(0)="E" D ^DIR K DIR S PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1
|
---|
39 | S PSAIN=^PSD(58.811,PSAIEN,1,PSAIEN1,0),PSAINV=$P(^(0),"^"),PSAINVDT=$P(^(0),"^",2),PSAORD=$P(^PSD(58.811,PSAIEN,0),"^")
|
---|
40 | D HDR,RECD^PSAVER2 D:PSAOUT
|
---|
41 | .I PSAOUT D VERUNLCK^PSAVER4 W !,"** The invoice's status has not been changed to Verified!"
|
---|
42 | I $G(PSAOUT)!$G(DUOUT) S PSAOUT=0,PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1 Q
|
---|
43 | S PSALOC=+$P(PSAIN,"^",5),PSAMV=+$P(PSAIN,"^",12)
|
---|
44 | I PSALOC!($P(PSAIN,"^",8)="S")!($P(PSAIN,"^",8)="N") D Q:PSAOUT
|
---|
45 | .D SITES^PSAUTL1 S PSALOCN=$S($G(PSALOC)'>0:"UNKNOWN",1:$P(^PSD(58.8,PSALOC,0),"^"))_PSACOMB
|
---|
46 | .W:$L(PSALOCN)>76 !!,$P(PSALOCN,"(IP)",1)_"(IP)",!?17,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<77 !!,PSALOCN
|
---|
47 | .S DR=4 D PHARM^PSAVER2
|
---|
48 | I PSAMV!($P(PSAIN,"^",8)="S")!($P(PSAIN,"^",8)="A") W !!,$P($G(^PSD(58.8,PSAMV,0)),"^") S DR=13 D PHARM^PSAVER2
|
---|
49 | I X="" D VERUNLCK^PSAVER4 W !,"** The invoice's status has not been changed to Verified!" S PSAOUT=0,PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1 Q
|
---|
50 | ;
|
---|
51 | LINES F W ! S DIC="^PSD(58.811,"_PSAIEN_",1,"_PSAIEN1_",1,",DA(2)=PSAIEN,DA(1)=PSAIEN1,DIC(0)="QAEMZ",DIC("A")="Select Line#: " D ^DIC K DIC D Q:PSAOUT
|
---|
52 | .I $G(DTOUT)!($G(DUOUT))!(Y<1) S PSAOUT=1 Q
|
---|
53 | .S PSALINE=+Y,PSALINEN=$P(Y,"^",2)
|
---|
54 | .I '$D(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0)) W !,"Invalid line number." Q
|
---|
55 | .S PSADATA=^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0),PSASUP=0
|
---|
56 | .S PSANDC=$P(PSADATA,"^",11),PSAVSN=$P(PSADATA,"^",12),PSALOC=$S(+$P(PSADATA,"^",10):+$P(PSAIN,"^",12),1:+$P(PSAIN,"^",5))
|
---|
57 | VIEW .D HDR,VERDISP^PSAUTL4 W PSASLN,!
|
---|
58 | .W "1. Drug",!,"2. Quantity Received",!,"3. Order Unit",!,"4. Dispense Units per Order Unit",! S PSACHO=4
|
---|
59 | .I $P($G(^PSD(58.8,PSALOC,0)),"^",14) W "5. Stock Level",!,"6. Reorder Level",! S PSACHO=6
|
---|
60 | .S DIR(0)="LO^1:"_PSACHO,DIR("A")="Edit fields",DIR("?")="Enter the number(s) of the data to be edited" S DIR("??")="^D DDQOR^PSAVER3"
|
---|
61 | .D ^DIR K DIR I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
62 | .Q:Y="" S PSAFLDS=Y,PSASET=0 D HDR,VERDISP^PSAUTL4 W PSASLN
|
---|
63 | FIELDS .F PSAPCF=1:1 S PSAFLD=$P(PSAFLDS,",",PSAPCF) Q:'PSAFLD!(PSAOUT) D
|
---|
64 | ..I PSAFLD=1 D ASKDRUG^PSAVER2 Q
|
---|
65 | ..I PSAFLD=2 D QTY^PSAVER2 Q
|
---|
66 | ..I PSAFLD=3 D OU^PSAVER2 Q
|
---|
67 | ..I PSAFLD=4,'PSASET S PSA50IEN=PSADRG D DUOU^PSAVER2 Q
|
---|
68 | ..I PSAFLD=5 D STOCK^PSAVER2 Q
|
---|
69 | ..I PSAFLD=6 D REORDER^PSAVER2
|
---|
70 | ;<== PSA*3*60 (RJS-VMP)
|
---|
71 | ;Determines if the invoice's status should be changed to verified. If
|
---|
72 | ;so, the status is changed and the new drugs to the location is listed.
|
---|
73 | W ! S DIR(0)="Y",DIR("A")="Do you want to change the invoice's status to Verified",DIR("?",1)="Enter YES to change the invoice's status to Verified.",DIR("?")="Enter NO to keep the invoice's status as Processed."
|
---|
74 | S DIR("??")="^D CHGYN^PSAVER1" D ^DIR K DIR ;D:'Y VERUNLCK^PSAVER4
|
---|
75 | I $G(DIRUT)!('Y) D VERUNLCK^PSAVER4 W !,"** The invoice's status has not been changed to Verified!" S (PSAOUT,PSACHG)=0,PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1 Q
|
---|
76 | S PSACHG=Y,PSAVBKG(PSAIEN,PSAIEN1)=""
|
---|
77 | ;==> PSA*3*60 (RJS-VMP)
|
---|
78 | ;Looks to see if all line items are processed.
|
---|
79 | PROCESS S (PSACS,PSAERR,PSALINE,PSALINES,PSALNCNT,PSALNSU,PSAOUT,PSASUP)=0
|
---|
80 | S PSAIN=$G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),PSAORD=$P($G(^PSD(58.811,PSAIEN,0)),"^")
|
---|
81 | F S PSALINE=$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE)) Q:'PSALINE!(PSAOUT) D
|
---|
82 | .S PSADATA=^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0),PSALNERR=0,PSALNCNT=PSALNCNT+1
|
---|
83 | .D SETLINE^PSAVER3 I PSAOUT D VERUNLCK^PSAVER4 W !,"** The invoice's status has not been changed to Verified!" S (PSAOUT,PSACHG)=0,PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1 Q
|
---|
84 | .S:'+$G(PSALNERR) PSALINES=PSALINES+1 S PSADATA=^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0)
|
---|
85 | .S:+$P(PSADATA,"^",10) PSACS=PSACS+1
|
---|
86 | ;
|
---|
87 | CHECK I PSALNCNT'=PSALINES D Q
|
---|
88 | .K PSAHOLD(PSALOC,PSAIEN,PSAIEN1) W !!,"** The invoice has not been placed in a Verified status!"
|
---|
89 | .D END^PSAPROC D:+$G(PSAERR) PRINT^PSAVER3
|
---|
90 | .D VERUNLCK^PSAVER4 S PSASEL=PSASEL1 K PSALOCK(PSA),PSASEL1,PSAVBKG(PSAIEN,PSAIEN1) Q ;;<*65 RJS>
|
---|
91 | I +PSALNCNT,PSALNCNT=PSACS D
|
---|
92 | .S $P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^",8)="A" W !,"All drugs on the invoice are marked as a controlled substance."
|
---|
93 | .D:'+$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),"^",12) MASTER^PSAVER5
|
---|
94 | I PSACS,PSALNCNT'=PSACS S $P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^",8)="S" D:'$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),"^",5) GETLOC^PSAVER5
|
---|
95 | I 'PSACS S $P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^",8)="N" D:'$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),"^",5) GETLOC^PSAVER5
|
---|
96 | I +PSALNCNT,PSALNCNT=PSALINES D Q
|
---|
97 | .D CHG
|
---|
98 | .I PSALNCNT=PSASUP S $P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^",13)=1 Q
|
---|
99 | .S $P(^PSD(58.811,PSAIEN,1,PSAIEN1,0),"^",13)=0
|
---|
100 | D END^PSAPROC D:+$G(PSAERR) PRINT^PSAVER3
|
---|
101 | Q
|
---|
102 | ;<== PSA*3*60 (RJS-VMP)
|
---|
103 | CHG D STATUS^PSAVER3,NEWDRUG
|
---|
104 | W !!,"The invoice status has been changed to Verified!"
|
---|
105 | D END^PSAPROC
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | NEWDRUG ;If this invoice will add new drugs to location/vault, store in an
|
---|
109 | ;array the location/vault and drug name to be printed later.
|
---|
110 | K PSALND,PSALN0,PSALNP,PSALNV
|
---|
111 | S PSALINE=0,PSAPHARM=+$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),"^",5),PSAMV=$P($G(^(0)),"^",12)
|
---|
112 | Q:'PSALOC
|
---|
113 | F S PSALINE=$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE)) Q:'PSALINE D
|
---|
114 | .S PSALN0=+$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0)),"^",2),PSALOC=$S($P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,0)),"^",10):PSAMV,1:PSAPHARM)
|
---|
115 | .I $O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,1,"D",0)) D
|
---|
116 | ..S PSADJ=$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,1,"D",0))
|
---|
117 | ..Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSALINE,1,PSADJ,0))
|
---|
118 | ..S PSALNP=+$P(PSADJ,"^",2),PSALNV=+$P(PSADJ,"^",6)
|
---|
119 | .S PSADD=$S($G(PSALNV):PSALNV,$G(PSALNP):PSALNP,PSALN0:PSALN0,1:0)
|
---|
120 | .I PSADD,'$D(^PSD(58.8,PSALOC,1,PSADD,0)) S PSANEWD(PSALOC,$S($P($G(^PSDRUG(PSADD,0)),"^")'="":$P($G(^PSDRUG(PSADD,0)),"^"),1:"UNKNOWN"))=PSADD
|
---|
121 | Q
|
---|
122 | ;
|
---|
123 | HDR ;Header for screen that displays invoice data to be edited.
|
---|
124 | W @IOF,!?18,"<<< EDIT INVOICES TO BE VERIFIED SCREEN >>>"
|
---|
125 | W !!,"Order#: "_PSAORD_" Invoice#: "_PSAINV_" Invoice Date: "_$$FMTE^XLFDT(PSAINVDT),!,PSASLN,!
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | CHGYN ;Extended help for 'Do you want to change the invoice's status to Verified'
|
---|
129 | W !?5,"Enter YES if the invoice is completely correct. You will not be able",!?5,"to edit it again."
|
---|
130 | W !!?5,"Enter NO if you need to edit the invoice again. You can edit it again",!?5,"by selecting the Verify Orders option."
|
---|
131 | Q
|
---|