[613] | 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
|
---|