1 | PSUDEM7 ;BIR/DAM - Inpatient PTF Record Extract ;20 DEC 2001
|
---|
2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
|
---|
3 | ;
|
---|
4 | ;DBIA's
|
---|
5 | ; Reference to file 2 supported by DBIA 10035
|
---|
6 | ; Reference to file 4.3 supported by DBIA 2496
|
---|
7 | ; Reference to file 45 supported by DBIA 3511
|
---|
8 | ;
|
---|
9 | EN ;EN
|
---|
10 | D DAT
|
---|
11 | D EN^PSUDEM8 ;Gather ICD9 codes
|
---|
12 | I '$D(^XTMP("PSU_"_PSUJOB,"PSUIPV")) D NODATA
|
---|
13 | D XMD
|
---|
14 | K ^XTMP("PSU_"_PSUJOB,"PSUIPV")
|
---|
15 | K ^XTMP("PSU_"_PSUJOB,"PSUXMD")
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | DAT ;Find discharge dates that fall within the extract date range
|
---|
19 | ;as well as discharge dates within the 30 days prior to day 1 of
|
---|
20 | ;of the extract date range.
|
---|
21 | ;
|
---|
22 | S PSUDD=0
|
---|
23 | F S PSUDD=$O(^DGPT("ADS",PSUDD)) Q:'PSUDD D
|
---|
24 | .S PSUDDT=$E(PSUDD,1,7)
|
---|
25 | .S X1=PSUSDT
|
---|
26 | .S X2=(-30)
|
---|
27 | .D C^%DTC
|
---|
28 | .S PSUSDT1=X ;Date 30 days prior to start date
|
---|
29 | .I (PSUDDT>PSUSDT1)!(PSUDDT=PSUSDT1)&(PSUDDT<PSUEDT)!(PSUDDT=PSUEDT) D
|
---|
30 | ..S ^XTMP("PSU_"_PSUJOB,"PSUDM",PSUDDT)=""
|
---|
31 | ..S PSUIEN=0
|
---|
32 | ..F S PSUIEN=$O(^DGPT("ADS",PSUDD,PSUIEN)) Q:'PSUIEN D
|
---|
33 | ...S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,5)=PSUDDT ;Discharge Date
|
---|
34 | ...N PSUDT
|
---|
35 | ...S PSUDT=$P($G(^DGPT(PSUIEN,0)),U,2)
|
---|
36 | ...S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,4)=$E(PSUDT,1,7) ;Admit date
|
---|
37 | ...D INST^PSUDEM1
|
---|
38 | ...S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,2)=PSUSIT ;SITE
|
---|
39 | ...S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,3)=PSUSIT_PSUIEN ;Unique PTF ID
|
---|
40 | ...D SSNICN
|
---|
41 | Q
|
---|
42 | ;
|
---|
43 | SSNICN ;Find patient Admission date, SSN and ICN for inpatient record
|
---|
44 | ;VMP - OIFO BAY PINES;ELR;PSU*3.0*24
|
---|
45 | ;
|
---|
46 | N PSUPT,PSUICN,PSUICN1
|
---|
47 | S PSUPT=$P($G(^DGPT(PSUIEN,0)),U) ;Pointer to patient file
|
---|
48 | ;
|
---|
49 | N PSUREC
|
---|
50 | I PSUPT D
|
---|
51 | .S PSUREC=$P($G(^DPT(PSUPT,0)),U,9) D REC D
|
---|
52 | ..S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,6)=PSUREC ;Pt SSN
|
---|
53 | .S PSUICN=$$GETICN^MPIF001(PSUPT) D
|
---|
54 | ..I PSUICN'[-1 D
|
---|
55 | ...S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUIEN),U,7)=PSUICN ;ICN
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | REC ;If "^" is contained in any record, replace it with (')
|
---|
59 | ;
|
---|
60 | I PSUREC["^" S PSUREC=$TR(PSUREC,"^","'")
|
---|
61 | Q
|
---|
62 | ;
|
---|
63 | NODATA ;Generate a 'No Data' message if there is no data in the extract
|
---|
64 | ;
|
---|
65 | S NONE=1
|
---|
66 | M PSUXMYH=PSUXMYS1
|
---|
67 | S PSUM=1
|
---|
68 | S ^XTMP("PSU_"_PSUJOB,"PSUXMD",PSUM,1)="No data to report"
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | XMD ;Format mailman message and send.
|
---|
72 | ;
|
---|
73 | S PSUAB=0,PSUPL=1
|
---|
74 | F S PSUAB=$O(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUAB)) Q:PSUAB="" D
|
---|
75 | .M ^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUPL)=^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUAB) ;Global numerical order
|
---|
76 | .S PSUPL=PSUPL+1
|
---|
77 | ;
|
---|
78 | NEW PSUMAX,PSULC,PSUTMC,PSUTLC,PSUMC
|
---|
79 | S PSUMAX=$$VAL^PSUTL(4.3,1,8.3)
|
---|
80 | S PSUMAX=$S(PSUMAX="":10000,PSUMAX>10000:10000,1:PSUMAX)
|
---|
81 | S PSUMC=1,PSUMLC=0
|
---|
82 | F PSULC=1:1 S X=$G(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSULC)) Q:X="" D
|
---|
83 | .S PSUMLC=PSUMLC+1
|
---|
84 | .I PSUMLC>PSUMAX S PSUMC=PSUMC+1,PSUMLC=0,PSULC=PSULC-1 Q ; + message
|
---|
85 | .I $L(X)<235 S ^XTMP("PSU_"_PSUJOB,"PSUXMD",PSUMC,PSUMLC)=X Q
|
---|
86 | .F I=235:-1:1 S Z=$E(X,I) Q:Z="^"
|
---|
87 | .S ^XTMP("PSU_"_PSUJOB,"PSUXMD",PSUMC,PSUMLC)=$E(X,1,I)
|
---|
88 | .S PSUMLC=PSUMLC+1
|
---|
89 | .S ^XTMP("PSU_"_PSUJOB,"PSUXMD",PSUMC,PSUMLC)="*"_$E(X,I+1,999)
|
---|
90 | ;
|
---|
91 | ; Count Lines sent
|
---|
92 | S PSUTLC=0
|
---|
93 | F PSUM=1:1:PSUMC S X=$O(^XTMP("PSU_"_PSUJOB,"PSUXMD",PSUM,""),-1),PSUTLC=PSUTLC+X
|
---|
94 | ;
|
---|
95 | F PSUM=1:1:PSUMC D PTF^PSUDEM5
|
---|
96 | D CONF
|
---|
97 | Q
|
---|
98 | CONF ;Construct globals for confirmation message
|
---|
99 | ;
|
---|
100 | ;D INST^PSUDEM1
|
---|
101 | I $G(NONE) S PSUTLC=0
|
---|
102 | N PSUDIVIS
|
---|
103 | ;S PSUDIVIS=$P(^XTMP("PSU_"_PSUJOB,"PSUSITE"),U,1)
|
---|
104 | S PSUDIVIS=PSUSNDR
|
---|
105 | S PSUSUB="PSU_"_PSUJOB
|
---|
106 | S ^XTMP(PSUSUB,"CONFIRM",PSUDIVIS,9,"M")=PSUMC
|
---|
107 | S ^XTMP(PSUSUB,"CONFIRM",PSUDIVIS,9,"L")=PSUTLC
|
---|
108 | Q
|
---|