[613] | 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
|
---|