PSUDEM3 ;BIR/DAM - ICD9 codes for Outpatient Encounter Extract ; 20 DEC 2001
;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
;
;DBIA's
; Reference to file 80 supported by DBIA 10082
; Reference to file 9000010.18 supported by DBIA 3560
;
EN ;EN Called from PSUDEM2
D ICD
D CLEAN
Q
;
ICD ;Find all ICD9 pointers associated with Patient pointer
;
N PSUICD
S PSUC1=0
F S PSUC1=$O(^AUPNVCPT("C",PSUPT,PSUC1)) Q:PSUC1="" D ;V CPT IEN
.I $P($G(^AUPNVCPT(PSUC1,0)),U,3)=$G(PSUVIEN) D ;V CPT IEN=Visit IEN
..S PSUICD=$P($G(^AUPNVCPT(PSUC1,0)),U,5) D ICD1 ;ICD9 Ptr
..S PSUCPT=$P($G(^AUPNVCPT(PSUC1,0)),U,1) D EN^PSUDEM6 ;grab CPT codes
I '$D(^AUPNVCPT("C",PSUPT)) S PSUCPT="" D EN^PSUDEM6
D FIN
Q
;
ICD1 ;Find ICD9 codes from pointers and place in an array
;
;
N PSUID2
I PSUICD S PSUID2=$P($G(^ICD9(PSUICD,0)),U) D
.I $D(PSUID2) S ^XTMP("PSU_"_PSUJOB,"PSUTMP1",PSUVIEN,PSUID2)="" ;ICD9 codes set into array
;
Q
;
FIN ;$O through array, and set codes into the Outpatient Visit
;Encounter global, ^XTMP("PSU_"_PSUJOB,"PSUOPV"
;
;
S PSUIDF=0
S I=8
F S PSUIDF=$O(^XTMP("PSU_"_PSUJOB,"PSUTMP1",PSUVIEN,PSUIDF)) Q:'PSUIDF Q:I=17 D
.S $P(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN),U,I)=PSUIDF
.S I=I+1
;
F N=8:1:16 I '$P($G(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN)),U,N) D
.S $P(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN),U,N)=""
Q
;
CLEAN ;Delete all ^XTMP("PSU_"_PSUJOB,"PSUOPV" entries that do not have associated
;ICD9 or CPT codes.
;
S PSUCL=0
F S PSUCL=$O(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL)) Q:'PSUCL D
.I $P(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL),U,7)="" D
..I $P(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL),U,17)="" K ^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL)
Q
PSUDEM3 ;BIR/DAM - ICD9 codes for Outpatient Encounter Extract ; 20 DEC 2001
+1 ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
+2 ;
+3 ;DBIA's
+4 ; Reference to file 80 supported by DBIA 10082
+5 ; Reference to file 9000010.18 supported by DBIA 3560
+6 ;
EN ;EN Called from PSUDEM2
+1 DO ICD
+2 DO CLEAN
+3 QUIT
+4 ;
ICD ;Find all ICD9 pointers associated with Patient pointer
+1 ;
+2 NEW PSUICD
+3 SET PSUC1=0
+4 ;V CPT IEN
FOR
SET PSUC1=$ORDER(^AUPNVCPT("C",PSUPT,PSUC1))
IF PSUC1=""
QUIT
Begin DoDot:1
+5 ;V CPT IEN=Visit IEN
IF $PIECE($GET(^AUPNVCPT(PSUC1,0)),U,3)=$GET(PSUVIEN)
Begin DoDot:2
+6 ;ICD9 Ptr
SET PSUICD=$PIECE($GET(^AUPNVCPT(PSUC1,0)),U,5)
DO ICD1
+7 ;grab CPT codes
SET PSUCPT=$PIECE($GET(^AUPNVCPT(PSUC1,0)),U,1)
DO EN^PSUDEM6
End DoDot:2
End DoDot:1
+8 IF '$DATA(^AUPNVCPT("C",PSUPT))
SET PSUCPT=""
DO EN^PSUDEM6
+9 DO FIN
+10 QUIT
+11 ;
ICD1 ;Find ICD9 codes from pointers and place in an array
+1 ;
+2 ;
+3 NEW PSUID2
+4 IF PSUICD
SET PSUID2=$PIECE($GET(^ICD9(PSUICD,0)),U)
Begin DoDot:1
+5 ;ICD9 codes set into array
IF $DATA(PSUID2)
SET ^XTMP("PSU_"_PSUJOB,"PSUTMP1",PSUVIEN,PSUID2)=""
End DoDot:1
+6 ;
+7 QUIT
+8 ;
FIN ;$O through array, and set codes into the Outpatient Visit
+1 ;Encounter global, ^XTMP("PSU_"_PSUJOB,"PSUOPV"
+2 ;
+3 ;
+4 SET PSUIDF=0
+5 SET I=8
+6 FOR
SET PSUIDF=$ORDER(^XTMP("PSU_"_PSUJOB,"PSUTMP1",PSUVIEN,PSUIDF))
IF 'PSUIDF
QUIT
IF I=17
QUIT
Begin DoDot:1
+7 SET $PIECE(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN),U,I)=PSUIDF
+8 SET I=I+1
End DoDot:1
+9 ;
+10 FOR N=8:1:16
IF '$PIECE($GET(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN)),U,N)
Begin DoDot:1
+11 SET $PIECE(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUVIEN),U,N)=""
End DoDot:1
+12 QUIT
+13 ;
CLEAN ;Delete all ^XTMP("PSU_"_PSUJOB,"PSUOPV" entries that do not have associated
+1 ;ICD9 or CPT codes.
+2 ;
+3 SET PSUCL=0
+4 FOR
SET PSUCL=$ORDER(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL))
IF 'PSUCL
QUIT
Begin DoDot:1
+5 IF $PIECE(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL),U,7)=""
Begin DoDot:2
+6 IF $PIECE(^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL),U,17)=""
KILL ^XTMP("PSU_"_PSUJOB,"PSUOPV",PSUCL)
End DoDot:2
End DoDot:1
+7 QUIT