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