[613] | 1 | PSUAR2 ;BIR/PDW - ASSEMBLE AR/WS RECORDS FOR TRANSMISSION ;10 JUL 1999
|
---|
| 2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
| 3 | ; DBIA(s)
|
---|
| 4 | ; Reference to file #50 supported by DBIA 221
|
---|
| 5 | ;
|
---|
| 6 | EN ;EP Build ("RECORDS") from scan of ^XTMP(PSUARSUB,"DIV_DRUG",Drug,Div)=Total
|
---|
| 7 | S PSUDRDA=0,PSULC=0,PSUDIVDA=0
|
---|
| 8 | K ^XTMP(PSUARSUB,"RECORDS")
|
---|
| 9 | K ^XTMP(PSUARSUB,"DRUG_TOTAL")
|
---|
| 10 | F S PSUDIVDA=$O(^XTMP(PSUARSUB,"DIV_DRUG",PSUDIVDA)) Q:PSUDIVDA="" D DRUGSCAN
|
---|
| 11 | Q
|
---|
| 12 | ;
|
---|
| 13 | DRUGSCAN ;EP Scan for Drugs within division
|
---|
| 14 | S PSUDDRDA=0,PSULC=0 ;**1
|
---|
| 15 | F S PSUDRDA=$O(^XTMP(PSUARSUB,"DIV_DRUG",PSUDIVDA,PSUDRDA)) Q:PSUDRDA'>0 S PSUTOT=^(PSUDRDA) D
|
---|
| 16 | . S PSULC=PSULC+1
|
---|
| 17 | . S ^XTMP(PSUARSUB,"RECORDS",PSUDIVDA,PSULC)=$$RECORD(PSUDRDA,PSUDIVDA,PSUTOT)
|
---|
| 18 | . S X=$G(^XTMP(PSUARSUB,"DRUG_TOTAL",PSUDRDA))
|
---|
| 19 | . S ^XTMP(PSUARSUB,"DRUG_TOTAL",PSUDRDA)=X+PSUTOT
|
---|
| 20 | Q
|
---|
| 21 | ;
|
---|
| 22 | RECORD(PSUDRDA,PSUDIV,PSUTOT) ;EP Return record assembled
|
---|
| 23 | ;
|
---|
| 24 | ; @x@(Fld) holds the appropriate field values from the drug file 50
|
---|
| 25 | ;
|
---|
| 26 | N PSU,PSUP,PSUSEND,PSUDIVH
|
---|
| 27 | I '$D(^XTMP(PSUARSUB,"PSUDRUG_DET",PSUDRDA)) D DRUG(PSUDRDA)
|
---|
| 28 | S X="^XTMP(PSUARSUB,""PSUDRUG_DET"",PSUDRDA)"
|
---|
| 29 | ; piece = value @X@(field from file 50)
|
---|
| 30 | ; Process for sender being division or site
|
---|
| 31 | S PSUSEND=PSUDIV,PSUDIVH=""
|
---|
| 32 | I PSUDIV["_0H" S PSUSEND=$G(PSUSNDR),PSUDIVH="H"
|
---|
| 33 | S PSU(2)=PSUSEND
|
---|
| 34 | S PSU(3)=PSUDIVH
|
---|
| 35 | S PSU(4)=$G(PSUMON)
|
---|
| 36 | S PSU(5)=@X@(21)
|
---|
| 37 | S PSU(6)=@X@(2)
|
---|
| 38 | S PSU(7)=@X@(31)
|
---|
| 39 | S PSU(8)=@X@(.01)
|
---|
| 40 | S PSU(9)=@X@(51)
|
---|
| 41 | S PSU(10)=@X@(99999.17) ;indicator for National Formulary
|
---|
| 42 | S PSU(11)=@X@(99999.18) ;Indicator for National Formulary Restriction
|
---|
| 43 | S PSU(12)=@X@(14.5)
|
---|
| 44 | S PSU(13)=@X@(16)
|
---|
| 45 | S PSU(14)=@X@(301)
|
---|
| 46 | S PSU(15)=@X@(302)
|
---|
| 47 | S PSU(16)=$G(PSUTOT)
|
---|
| 48 | S PSU(17)=@X@(52)
|
---|
| 49 | S PSU(18)=@X@(3)
|
---|
| 50 | S PSU(19)=$G(PSUTDSP(PSUDIVDA,PSUDRDA)) ;Quantity Dispensed
|
---|
| 51 | S PSU(20)=$G(PSUTRET(PSUDIVDA,PSUDRDA)) ;Quantity Returned
|
---|
| 52 | S PSUP=0
|
---|
| 53 | F S PSUP=$O(PSU(PSUP)) Q:PSUP'>0 S PSU(PSUP)=$TR(PSU(PSUP),"^","'")
|
---|
| 54 | S PSUP=0
|
---|
| 55 | F S PSUP=$O(PSU(PSUP)) Q:PSUP'>0 S $P(PSU,"^",PSUP)=PSU(PSUP)
|
---|
| 56 | S PSU=PSU_"^"
|
---|
| 57 | Q PSU
|
---|
| 58 | ;
|
---|
| 59 | DRUG(PSUDRDA) ;EP assemble from file 50+ needed fields
|
---|
| 60 | ; PSUDRDA is da for the DRUG in file 50 from (58.52,.01)
|
---|
| 61 | ; Store the fields in ^XTMP(PSUARSUB,"PSUDRUG_DET",PSUDDA,Field)=value
|
---|
| 62 | N PSUDRUG,PSUNDF
|
---|
| 63 | D GETS^PSUTL(50,PSUDRDA,".01;2;14.5;15;16;20;21;22;25;31;51;301;302;52;3","PSUDRUG","I")
|
---|
| 64 | ; Move PSUDRUG(Field,"I") value to PSUDRUG(Field) nodes
|
---|
| 65 | D MOVEI^PSUTL("PSUDRUG")
|
---|
| 66 | ;
|
---|
| 67 | PROCESS ;Further process field values into their final values
|
---|
| 68 | ;
|
---|
| 69 | S PSUDRUG(51)=$$VAL^PSUTL(50,PSUDRDA,51)
|
---|
| 70 | I PSUDRUG(31)="" S PSUDRUG(31)="No NDC"
|
---|
| 71 | I PSUDRUG(21)="" S PSUDRUG(21)="Unknown VA Product Name"
|
---|
| 72 | I PSUDRUG(.01)="" S PSUDRUG(.01)="Unknown Generic Name"
|
---|
| 73 | S X=+PSUDRUG(301)
|
---|
| 74 | S PSUDRUG(301)=$S(X=0:"03 or 04",X=1:"06 or 07",2:"17",3:"22",1:X)
|
---|
| 75 | I PSUDRUG(52) S PSUDRUG(52)="N/F"
|
---|
| 76 | ;
|
---|
| 77 | ; Process VA DRUG CLASS
|
---|
| 78 | ; Test for new NDF software s PSUNDF=1 if yes
|
---|
| 79 | S PSUNDF=0
|
---|
| 80 | I $$VERSION^XPDUTL("PSN")'<4 S PSUNDF=1
|
---|
| 81 | ;
|
---|
| 82 | ; Process for National Formulary Indicator & Restrictions
|
---|
| 83 | ; Put into node 99999.17 for file(50.68,17)
|
---|
| 84 | ; Put into node 99999.18 for file(50.68,18)
|
---|
| 85 | ; test to see if file 50.68 exists (comes in with V4 of NDF)
|
---|
| 86 | S PSUDRUG(99999.17)=""
|
---|
| 87 | S PSUDRUG(99999.18)=""
|
---|
| 88 | I 'PSUNDF G STORE
|
---|
| 89 | ; Process for National Formulary Indicator from VA Product Name file
|
---|
| 90 | S PSUVPNDA=PSUDRUG(22)
|
---|
| 91 | I PSUNDF S PSUDRUG(99999.17)=$$FORMI^PSNAPIS(PSUDRUG(20),PSUDRUG(22))
|
---|
| 92 | ; Process for National Formulary Restriction
|
---|
| 93 | I PSUNDF S PSUDRUG(99999.18)=$$FORMR^PSNAPIS(PSUDRUG(20),PSUDRUG(22))
|
---|
| 94 | K PSUNFR
|
---|
| 95 | ;
|
---|
| 96 | STORE ;Store the processed values into ^TMP
|
---|
| 97 | M ^XTMP(PSUARSUB,"PSUDRUG_DET",PSUDRDA)=PSUDRUG
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | REC ;EP Move PSUAR_RECORDS to PSUAREC)
|
---|
| 101 | M ^XTMP(PSUARSUB,"PSUAREC")=^XTMP(PSUARSUB,"RECORDS",$J)
|
---|
| 102 | Q
|
---|