| 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
 | 
|---|