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