[613] | 1 | PSUOP1 ;BIR/CFL - PSU PBM Outpatient Pharmacy Data Collection for Version 6.0 ;25 AUG 1998
|
---|
| 2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
| 3 | ;
|
---|
| 4 | ;DBIAs
|
---|
| 5 | ; Reference to ^PSRX( file #52 supported by DBIA(s) 465, 2512, 2513
|
---|
| 6 | EN ;Entry to data collection
|
---|
| 7 | K ^TMP($J)
|
---|
| 8 | D CMOPARY,ADLOOP
|
---|
| 9 | Q
|
---|
| 10 | ADLOOP ;Loop through the AD cross reference
|
---|
| 11 | S X1=PSUSDT,X2=-31
|
---|
| 12 | D C^%DTC K %,%H,%T
|
---|
| 13 | S PSUFDT=X
|
---|
| 14 | F S PSUFDT=$O(^PSRX("AD",PSUFDT)) Q:PSUFDT=""!(PSUFDT\1>PSUEDT) D
|
---|
| 15 | .S PSURXIEN=""
|
---|
| 16 | .F S PSURXIEN=$O(^PSRX("AD",PSUFDT,PSURXIEN)) Q:PSURXIEN="" D
|
---|
| 17 | ..S PSUFIL=""
|
---|
| 18 | ..F S PSUFIL=$O(^PSRX("AD",PSUFDT,PSURXIEN,PSUFIL)) Q:PSUFIL="" D
|
---|
| 19 | ...Q:'$D(^PSRX(PSURXIEN,0))
|
---|
| 20 | ...K PSUTYP,PSUOP
|
---|
| 21 | ...S PSUFLN=PSUFIL
|
---|
| 22 | ...D COMVAR
|
---|
| 23 | ...S PSUCMOP="N"
|
---|
| 24 | ...;
|
---|
| 25 | ...; check for CMOP data
|
---|
| 26 | ...I $D(^PSRX(PSURXIEN,4,0)) D ARLOOP
|
---|
| 27 | ...I PSUCMOP="Y" Q ; record filed in subroutine
|
---|
| 28 | ...I (PSUFDT\1<PSUSDT) Q
|
---|
| 29 | ...S PSUTYP=$S(PSUFLN=0:"N",1:"R")
|
---|
| 30 | ...D GETDATA
|
---|
| 31 | ...D SETREC^PSUOP3
|
---|
| 32 | ..I $D(^PSRX(PSURXIEN,"P",0)),'$D(^XTMP(PSUOPSUB,"RXIEN",PSURXIEN)) D ADPLOOP
|
---|
| 33 | K ^TMP($J)
|
---|
| 34 | Q
|
---|
| 35 | ARLOOP ;Check to see if CMOP Data exists for the reporting period
|
---|
| 36 | I $D(^TMP($J,PSURXIEN,PSUFLN)) D
|
---|
| 37 | .S PSUCMOP="Y"
|
---|
| 38 | .S PSUTYP=$S(PSUFLN=0:"N",1:"R")
|
---|
| 39 | .D GETDATA
|
---|
| 40 | .I (PSURELDT="")!(PSURELDT<PSUSDT)!(PSURELDT>PSUEDT) Q
|
---|
| 41 | .D SETREC^PSUOP3
|
---|
| 42 | Q
|
---|
| 43 | ADPLOOP ;Get data for partial fills
|
---|
| 44 | S PSUPFN=0
|
---|
| 45 | F S PSUPFN=$O(^PSRX(PSURXIEN,"P",PSUPFN)) Q:'PSUPFN D
|
---|
| 46 | .S PSUCMOP="N"
|
---|
| 47 | .D COMVAR
|
---|
| 48 | .S PSUTYP="P"
|
---|
| 49 | .D GETPART
|
---|
| 50 | .Q:((PSUFD<PSUSDT)!(PSUFD>PSUEDT))
|
---|
| 51 | .D SETREC^PSUOP3
|
---|
| 52 | Q
|
---|
| 53 | GETDATA ;Get the data for New Fills, Refills and Partial fills
|
---|
| 54 | I PSUTYP="N" D
|
---|
| 55 | .S PSUFD=PSUOP(22)
|
---|
| 56 | .S PSUDS=PSUOP(8)
|
---|
| 57 | .S PSUQTY=+PSUOP(7)
|
---|
| 58 | .S PSUDRCT=PSUOP(17)
|
---|
| 59 | .S PSURELDT=PSUOP(31)
|
---|
| 60 | .I PSURELDT'="" S PSURELDT=PSURELDT\1
|
---|
| 61 | .S PSUPRID=PSUOP(4)
|
---|
| 62 | .S PSUMW=PSUOP(11)
|
---|
| 63 | .S PSUDIVP=PSUOP(20)
|
---|
| 64 | .S PSUNDC=""
|
---|
| 65 | .I PSUCMOP="Y" D
|
---|
| 66 | ..S PSUNDC=$$VALI^PSUTL(52.01,"PSURXIEN,PSUFLN",4)
|
---|
| 67 | .S PSUNDC=$S(PSUNDC="":PSUOP(27),PSUNDC="":PSUDRUG(31),1:"No NDC")
|
---|
| 68 | .D PROVDR^PSUOP3
|
---|
| 69 | ;Get data for Refills
|
---|
| 70 | I PSUTYP="R" D K REC
|
---|
| 71 | .D GETS^PSUTL(52.1,"PSURXIEN,PSUFLN",".01;1;1.1;1.2;2;8;15;17","PSUREFIL","I")
|
---|
| 72 | .D MOVEI^PSUTL("PSUREFIL")
|
---|
| 73 | .S PSUFD=PSUREFIL(.01)
|
---|
| 74 | .S PSUPRID=PSUREFIL(15)
|
---|
| 75 | .S PSUMW=PSUREFIL(2)
|
---|
| 76 | .S PSUDIVP=PSUREFIL(8)
|
---|
| 77 | .S PSUDS=PSUREFIL(1.1)
|
---|
| 78 | .S PSUQTY=+PSUREFIL(1)
|
---|
| 79 | .S PSUDRCT=PSUREFIL(1.2)
|
---|
| 80 | .S PSURELDT=PSUREFIL(17)
|
---|
| 81 | .I PSURELDT'="" S PSURELDT=PSURELDT\1
|
---|
| 82 | .S PSURXP=PSUOP(3)
|
---|
| 83 | .S PSUDR=PSUOP(6)
|
---|
| 84 | .S PSUNDC=""
|
---|
| 85 | .I PSUCMOP="Y" D
|
---|
| 86 | ..S PSUNDC=$$VALI^PSUTL(52.01,"PSURXIEN,PSUFLN",4)
|
---|
| 87 | .I PSUNDC="" S PSUNDC=$$VALI^PSUTL(52.1,"PSURXIEN,PSUFLN",11)
|
---|
| 88 | .I PSUNDC="" S PSUNDC=$S(PSUDRUG(31)'="":PSUDRUG(31),1:"No NDC")
|
---|
| 89 | .D PROVDR^PSUOP3
|
---|
| 90 | Q
|
---|
| 91 | GETPART ;Get data for Partial Fills
|
---|
| 92 | K PSUPART
|
---|
| 93 | D GETS^PSUTL(52.2,"PSURXIEN,PSUPFN",".01;.02;.04;.041;.042;.09;6;8","PSUPART","I")
|
---|
| 94 | D MOVEI^PSUTL("PSUPART")
|
---|
| 95 | S PSUFD=PSUPART(.01)
|
---|
| 96 | S PSUPRID=PSUPART(6)
|
---|
| 97 | S PSUMW=PSUPART(.02)
|
---|
| 98 | S PSUDIVP=PSUPART(.09)
|
---|
| 99 | S PSUDS=PSUPART(.041)
|
---|
| 100 | S PSUQTY=+PSUPART(.04)
|
---|
| 101 | S PSUDRCT=PSUPART(.042)
|
---|
| 102 | S PSURELDT=PSUPART(8)
|
---|
| 103 | I PSURELDT'="" S PSURELDT=PSURELDT\1
|
---|
| 104 | S PSUNDC=$$VALI^PSUTL(52.2,"PSURXIEN,PSUFLN",1)
|
---|
| 105 | I PSUNDC="" S PSUNDC=$S(PSUDRUG(31)'="":PSUDRUG(31),1:"No NDC")
|
---|
| 106 | D PROVDR^PSUOP3 ;Get shared variables
|
---|
| 107 | Q
|
---|
| 108 | COMVAR ;Get the common variables
|
---|
| 109 | D GETS^PSUTL(52,PSURXIEN,".01;2;3;4;6;7;8;11;17;20;22;27;31","PSUOP","I")
|
---|
| 110 | D MOVEI^PSUTL("PSUOP")
|
---|
| 111 | S PSURXN=PSUOP(.01)
|
---|
| 112 | S DFN=PSUOP(2) D PID^VADPT
|
---|
| 113 | S PSUSSN=$TR(VA("PID"),"^-","")
|
---|
| 114 | S PSUWPC="" ;Patient counseling only exists for version 7.0
|
---|
| 115 | S PSUDR=PSUOP(6)
|
---|
| 116 | S PSURXP=PSUOP(3)
|
---|
| 117 | ;S PSUSIG=PSUOP(10)
|
---|
| 118 | D GETDRUG^PSUOP3
|
---|
| 119 | Q
|
---|
| 120 | CMOPARY ;Loop through the "AR" cross reference and build CMOP array
|
---|
| 121 | S X1=PSUSDT,X2=-1
|
---|
| 122 | D C^%DTC K %,%H,%T
|
---|
| 123 | S PSUCDT=X
|
---|
| 124 | F S PSUCDT=$O(^PSRX("AR",PSUCDT)) Q:'PSUCDT D
|
---|
| 125 | .S PSUCRX=""
|
---|
| 126 | .F S PSUCRX=$O(^PSRX("AR",PSUCDT,PSUCRX)) Q:PSUCRX="" D
|
---|
| 127 | ..S PSUCLN=""
|
---|
| 128 | ..F S PSUCLN=$O(^PSRX("AR",PSUCDT,PSUCRX,PSUCLN)) Q:PSUCLN="" D
|
---|
| 129 | ...S ^TMP($J,PSUCRX,PSUCLN)=""
|
---|
| 130 | Q
|
---|