1 | PSUPR1 ;BIR/PDW - Data Gathering for PBMS PR file 442 ;12 AUG 1999
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;DBIAs
|
---|
4 | ; Reference to file #442 supported by DBIA 1020
|
---|
5 | ; Reference to file #445.01 supported by DBIA 1021
|
---|
6 | ; Reference to file #420.5 supported by DBIA 1022
|
---|
7 | ; Reference to file #410 supported by DBIA 2345,2409
|
---|
8 | ; Reference to file #440 supported by DBIA 2606
|
---|
9 | ; Reference to file #4.3 supported by DBIA 10091
|
---|
10 | ; Reference to file #50 supported by DBIA 221
|
---|
11 | ;
|
---|
12 | EN ;EP Entry Point
|
---|
13 | S PSUEDT=PSUEDT\1+.24
|
---|
14 | S PSUPRSDT=PSUSDT
|
---|
15 | S PSUPREDT=PSUEDT
|
---|
16 | ; setup ^XTMP node
|
---|
17 | S:'$D(PSUPRJOB) PSUPRJOB=$J
|
---|
18 | S:'$D(PSUPRSUB) PSUPRSUB="PSUPR_"_PSUPRJOB
|
---|
19 | I '$D(^XTMP(PSUPRSUB)) D
|
---|
20 | . S ^XTMP(PSUPRSUB,"RECORDS",0)=""
|
---|
21 | . S X1=DT,X2=6 D C^%DTC
|
---|
22 | . S ^XTMP(PSUPRSUB,0)=X_"^"_DT_"^ PBMS Procurement Extraction"
|
---|
23 | START ;EP
|
---|
24 | N PSUDT,PSUDA
|
---|
25 | S PSURC=0 ; record counter
|
---|
26 | S PSUDT=PSUPRSDT
|
---|
27 | F S PSUDT=$O(^PRC(442,"AB",PSUDT)) Q:PSUDT'>0 Q:PSUDT>PSUPREDT D PODATE
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | PODATE ;EP Process a PO DATE
|
---|
31 | N PSUPODA
|
---|
32 | ; File 442 can not be linked to division so div=sender
|
---|
33 | ; and indicator = "H"
|
---|
34 | S X=$P($G(^XMB(1,1,"XUS")),U,17)
|
---|
35 | S PSUDIV=PSUSNDR,PSUDIVI="H"
|
---|
36 | ; Loop POs within date
|
---|
37 | S PSUPODA=0
|
---|
38 | F S PSUPODA=$O(^PRC(442,"AB",PSUDT,PSUPODA)) Q:'PSUPODA D PO
|
---|
39 | Q
|
---|
40 | ;
|
---|
41 | PO ;EP Process a PO
|
---|
42 | N PSUPO,PSUCC
|
---|
43 | S PSUCC=$$VALI^PSUTL(442,PSUPODA,2) ; cost center
|
---|
44 | I PSUCC'=822400,PSUCC'=828100 Q ; not pharmacy related
|
---|
45 | S PSUSS=$$VALI^PSUTL(442,PSUPODA,.5) ; supply status
|
---|
46 | I PSUSS>14,PSUSS<45
|
---|
47 | E Q ; not within status range
|
---|
48 | ; load po information
|
---|
49 | D GETS^PSUTL(442,PSUPODA,".01;.1;1;2;5","PSUPO","I")
|
---|
50 | D MOVEI^PSUTL("PSUPO")
|
---|
51 | ;
|
---|
52 | ; further process po information
|
---|
53 | S PSUPO(5)=$$VALI^PSUTL(440,PSUPO(5),.01) ; Vendor name
|
---|
54 | ;
|
---|
55 | ; load item information
|
---|
56 | K ^TMP($J,"PSUMIT")
|
---|
57 | D GETM^PSUTL(442,PSUPODA,"40*^1;1.5;3;3.1;5;9.3;10;11","^TMP($J,""PSUMIT"")","IN")
|
---|
58 | D MOVEMI^PSUTL("^TMP($J,""PSUMIT"")")
|
---|
59 | ;
|
---|
60 | ; loop items
|
---|
61 | S PSUITDA=0
|
---|
62 | F S PSUITDA=$O(^TMP($J,"PSUMIT",PSUITDA)) Q:PSUITDA'>0 D ITEM
|
---|
63 | Q
|
---|
64 | ;
|
---|
65 | ITEM ;EP Process one item
|
---|
66 | N PSUIT,PSUDRDA
|
---|
67 | M PSUIT=^TMP($J,"PSUMIT",PSUITDA)
|
---|
68 | ;
|
---|
69 | ; Get Drug
|
---|
70 | S PSUIT(1.5)=+$G(PSUIT(1.5))
|
---|
71 | S PSUDRDA=$O(^PSDRUG("AB",PSUIT(1.5),0))
|
---|
72 | N PSUARSUB,PSUARJOB S PSUARSUB=PSUPRSUB,PSUARJOB=PSUPRJOB
|
---|
73 | I PSUDRDA D DRUG^PSUAR2(PSUDRDA) ; setup drug profile
|
---|
74 | ;
|
---|
75 | ; process dispense unit 445 & conversion factor 3.2.6.1.5
|
---|
76 | S X=+$G(PSUIT(10)),X=+$$VALI^PSUTL(410,X,4)
|
---|
77 | ; disp unit
|
---|
78 | S PSUIT("DU")=$$VALI^PSUTL(445.01,"X,PSUIT(1.5)",50)
|
---|
79 | ; disp unit conver factor
|
---|
80 | S PSUIT("DUCV")=$$VALI^PSUTL(445.01,"X,PSUIT(1.5)",51)
|
---|
81 | ; unit of purchase
|
---|
82 | S PSUIT("UOP")=$$VALI^PSUTL(420.5,+$G(PSUIT(3)),.01)
|
---|
83 | ;
|
---|
84 | ; further process fields
|
---|
85 | S:'$L($G(PSUIT(9.3))) PSUIT(9.3)="No NDC"
|
---|
86 | ;
|
---|
87 | ;
|
---|
88 | REC ;EP Assemble record
|
---|
89 | K PSUR
|
---|
90 | S PSUG="^XTMP(PSUPRSUB,""PSUDRUG_DET"",PSUDRDA)" ; drug reference
|
---|
91 | S PSUR(2)=$G(PSUDIV)
|
---|
92 | S PSUR(3)=$G(PSUDIVI)
|
---|
93 | S PSUR(4)=$G(PSUPO(.1))
|
---|
94 | I PSUDRDA D
|
---|
95 | . S PSUR(5)=@PSUG@(21)
|
---|
96 | . S PSUR(7)=@PSUG@(.01)
|
---|
97 | . S PSUR(12)=@PSUG@(14.5)
|
---|
98 | . S PSUR(6)=@PSUG@(2)
|
---|
99 | I 'PSUDRDA D
|
---|
100 | . S PSUR(5)="Unknown VA Product Name"
|
---|
101 | . S PSUR(7)="Unknown Generic Name"
|
---|
102 | S PSUR(8)=$G(PSUIT(1,1))_$G(PSUIT(1,2)) S:'$L(PSUR(8)) PSUR(8)="No description listed"
|
---|
103 | F S X=$E(PSUR(8)) Q:X'=" " S PSUR(8)=$E(PSUR(8),2,999)
|
---|
104 | S PSUR(8)=$E(PSUR(8),1,50)
|
---|
105 | S PSUR(9)=$G(PSUIT(9.3))
|
---|
106 | S PSUR(12)=$G(PSUIT("DU"))
|
---|
107 | S PSUR(13)=$G(PSUIT("UOP"))
|
---|
108 | S PSUR(14)=$G(PSUIT(3.1))
|
---|
109 | S PSUR(15)=PSUIT("DU")
|
---|
110 | S PSUR(16)=PSUIT("DUCV")
|
---|
111 | S PSUR(17)=$G(PSUIT(11))
|
---|
112 | S PSUR(18)=$G(PSUIT(5))
|
---|
113 | S PSUR(19)=$G(PSUIT(11))*$G(PSUIT(5))
|
---|
114 | S PSUR(20)=PSUPO(5)
|
---|
115 | S PSUR(22)=PSUPO(1)
|
---|
116 | S PSUR=""
|
---|
117 | S I=0 F S I=$O(PSUR(I)) Q:I'>0 S PSUR(I)=$TR(PSUR(I),"^","'")
|
---|
118 | S I=0 F S I=$O(PSUR(I)) Q:I'>0 S $P(PSUR,"^",I)=PSUR(I)
|
---|
119 | S PSUR=PSUR_"^"
|
---|
120 | ; Store Records under PSUSNDR default division
|
---|
121 | S PSURC=PSURC+1,^XTMP(PSUPRSUB,"RECORDS",PSUSNDR,PSURC)=$E(PSUR,1,240) I $L(PSUR)>240 S ^(PSURC,1)=$E(PSUR,241,999)
|
---|
122 | Q
|
---|