1 | PSUPR3 ;BIR/PDW - EXTRACTION FROM FILE 58.81 ;12 AUG 1999
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;DBIAs
|
---|
4 | ; Reference to file #58.81 supported by DBIA 2520
|
---|
5 | ; Reference to file #50 supported by DBIA 221
|
---|
6 | ; Reference to file #51.5 supported by DBIA 1931
|
---|
7 | ; Reference to file #58.8 supported by DBIA 2519
|
---|
8 | ; Reference to file #59 supported by DBIA 2510
|
---|
9 | ; Reference to file #42 supported by DBIA 2440
|
---|
10 | ; Reference to file #40.8 supported by DBIA 2438
|
---|
11 | ; Reference to file #59.5 supported by DBIA 2499
|
---|
12 | ;
|
---|
13 | EN ;EP from PSUPR0
|
---|
14 | S PSUEDT=PSUEDT\1+.24
|
---|
15 | ; setup ^XTMP node
|
---|
16 | S:'$D(PSUPRJOB) PSUPRJOB=$J
|
---|
17 | S:'$D(PSUPRSUB) PSUPRSUB="PSUPR_"_PSUPRJOB
|
---|
18 | I '$D(^XTMP(PSUPRSUB)) D
|
---|
19 | . S ^XTMP(PSUPRSUB,0)=""
|
---|
20 | . S X1=DT,X2=6 D C^%DTC
|
---|
21 | . S ^XTMP(PSUPRSUB,0)=X_"^"_DT_"^"_" PBMS Procurement Extraction3"
|
---|
22 | SCANDT ; 3.2.6.31 scan Transaction date time
|
---|
23 | S PSUDT=PSUSDT
|
---|
24 | ; going after ^PSD(58.81,"AF",PSUDT,PSULOC,PSUTYP,PSUTRDA)
|
---|
25 | ;
|
---|
26 | F S PSUDT=$O(^PSD(58.81,"AF",PSUDT)) Q:PSUDT'>0 Q:PSUDT>PSUEDT D LOC
|
---|
27 | Q
|
---|
28 | ;
|
---|
29 | LOC ;EP scan thru locations
|
---|
30 | ;
|
---|
31 | S PSULOC="" F S PSULOC=$O(^PSD(58.81,"AF",PSUDT,PSULOC)) Q:PSULOC="" D TYPE
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | TYPE ;EP Scan Thru Types
|
---|
35 | ;
|
---|
36 | S PSUTYP="" F S PSUTYP=$O(^PSD(58.81,"AF",PSUDT,PSULOC,PSUTYP)) Q:PSUTYP="" D TRAN
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | TRAN ;EP Scan Thru Transactions
|
---|
40 | ;
|
---|
41 | S PSUTRDA=0 F S PSUTRDA=$O(^PSD(58.81,"AF",PSUDT,PSULOC,PSUTYP,PSUTRDA)) Q:PSUTRDA'>0 D TRANDA
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | TRANDA ;EP work a transaction
|
---|
45 | ;
|
---|
46 | N PSUTR
|
---|
47 | D GETS^PSUTL(58.81,PSUTRDA,".01;1;2;3;4;5;8;12;71;106;107","PSUTR","I")
|
---|
48 | D MOVEI^PSUTL("PSUTR")
|
---|
49 | S PSUDTDA=PSUTR(3)
|
---|
50 | ; 3.2.6.3.2-3.4
|
---|
51 | Q:(PSUTR(1)'=1)
|
---|
52 | I '$D(PSUFLSFG) D
|
---|
53 | .I $L(PSUTR(8)),'$L($G(PSUTR(71))) Q
|
---|
54 | I $D(PSUFLSFG) D
|
---|
55 | .I PSUTR(107)'="" Q
|
---|
56 | Q:$L(PSUTR(106))
|
---|
57 | ;
|
---|
58 | ; setup file 50 fields
|
---|
59 | S PSUDRDA=PSUTR(4)
|
---|
60 | N PSUDRUG
|
---|
61 | D GETS^PSUTL(50,PSUDRDA,".01;2;12;13;14.5;15;20;21;22;25;31","PSUDRUG","I")
|
---|
62 | D MOVEI^PSUTL("PSUDRUG")
|
---|
63 | ;
|
---|
64 | ; further process file 50 fields
|
---|
65 | S:'$L(PSUDRUG(.01)) PSUDRUG(.01)="Unknown Generic Name" ; Generic Name
|
---|
66 | S:'$L(PSUDRUG(21)) PSUDRUG(21)="Unknown VA Product Name" ; VA Product Name
|
---|
67 | S:'$L(PSUDRUG(31)) PSUDRUG(31)="No NDC" ; NDC
|
---|
68 | S PSUDRUG(12)=$$VALI^PSUTL(51.5,PSUDRUG(12),.01) ; Order Unit
|
---|
69 | ;
|
---|
70 | ; setup division 3.2.3.6.3.5
|
---|
71 | N PSULOC
|
---|
72 | S PSULOC=PSUTR(2)
|
---|
73 | ; Get division from file 58.8, file 59.7 fileds 90.02,90.03
|
---|
74 | S PSUDIV="",PSUDIVI="H"
|
---|
75 | S PSUINV="",PSUINV(4)=PSULOC
|
---|
76 | D DIV^PSUPR2
|
---|
77 | CONT ;
|
---|
78 | I $L(PSUDIV) S PSUDIVI=""
|
---|
79 | E S PSUDIV=PSUSNDR
|
---|
80 | ;
|
---|
81 | ; Assemble Record
|
---|
82 | S PSUREC=$$RECORD()
|
---|
83 | ; Store Record
|
---|
84 | S PSULC=+$O(^XTMP(PSUPRSUB,"RECORDS",PSUDIV,""),-1)
|
---|
85 | S PSULC=PSULC+1
|
---|
86 | S ^XTMP(PSUPRSUB,"RECORDS",PSUDIV,PSULC)=PSUREC
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | ; assemble record
|
---|
90 | RECORD() ;EP Assemble record for storage
|
---|
91 | ; 3.2.11.38
|
---|
92 | N PSUR
|
---|
93 | S PSUR(2)=PSUDIV
|
---|
94 | S PSUR(3)=PSUDIVI
|
---|
95 | S PSUR(4)=PSUDTDA\1
|
---|
96 | S PSUR(5)=PSUDRUG(21)
|
---|
97 | S PSUR(6)=PSUDRUG(2)
|
---|
98 | S PSUR(7)=PSUDRUG(.01)
|
---|
99 | S PSUR(9)=PSUDRUG(31)
|
---|
100 | S PSUR(12)=PSUDRUG(14.5)
|
---|
101 | S PSUR(13)=$$VAL^PSUTL(50,PSUDRDA,12)
|
---|
102 | S PSUR(16)=PSUDRUG(15)
|
---|
103 | S PSUR(17)=PSUTR(5)
|
---|
104 | S PSUR(18)=PSUDRUG(13)
|
---|
105 | I PSUDRUG(15) S PSUR(360)=PSUDRUG(13)*(PSUTR(5)/PSUDRUG(15))
|
---|
106 | E S PSUR(360)=""
|
---|
107 | S PSUR(19)=$J(PSUR(360),12,2)
|
---|
108 | K PSUR(360)
|
---|
109 | S PSUR(20)=PSUTR(12)
|
---|
110 | S PSUR(21)=PSUTR(71)
|
---|
111 | S PSUR(22)=""
|
---|
112 | S I=0 F S I=$O(PSUR(I)) Q:I'>0 S PSUR(I)=$TR(PSUR(I),"^","'")
|
---|
113 | S I=0 F S I=$O(PSUR(I)) Q:I'>0 S $P(PSUR,"^",I)=PSUR(I)
|
---|
114 | S PSUR=PSUR_"^"
|
---|
115 | Q PSUR
|
---|