BPMXFIX ;IHS/OIT/NKD - CLEANUP UTILITY DRIVER - 6/26/12 ;
;;1.0;IHS PATIENT MERGE;**2**;MAR 01, 2010;Build 1
;IHS/OIT/NKD 6/13/2012 Correct bad 3P claim data
; Correct invalid HRN data
; Batch issue cleanup
;
EN1 ;EP
; IF CALLED FROM MENU [BPM AUDIT] SET VARIABLE TO PRINT TO SCREEN
S BPMMENU=1
D RSLT($TR($J(" ",80)," ","*"))
D RSLT($TR($J(" ",10)," ","*")_" This utility should only be run during off-peak hours. "_$TR($J(" ",10)," ","*"))
D RSLT($TR($J(" ",10)," ","*")_" Users must ensure the following before continuing: "_$TR($J(" ",10)," ","*"))
D RSLT($TR($J(" ",10)," ","*")_" 1) No patient merge process are running or scheduled. "_$TR($J(" ",10)," ","*"))
D RSLT($TR($J(" ",10)," ","*")_" 2) Data entry on merged patients has been halted. "_$TR($J(" ",10)," ","*"))
D RSLT($TR($J(" ",10)," ","*")_" 3) Screen output is being logged for review. "_$TR($J(" ",10)," ","*"))
D RSLT($TR($J(" ",80)," ","*"))
S DIR("A")="Proceed"
S DIR("B")="NO"
S DIR(0)="Y"
D ^DIR
Q:'Y
K DIR,X,Y
EN ;EP
; MAIN EP FROM KIDS, PRINTS TO INSTALL LOG FILE
N I,BPMT
D TIME("Cleanup Utility",1)
D BUILD
F I=1:1 S BPMT=$P($T(RTNS+I),";;",2) Q:BPMT["$$END" D
. D TIME($P(BPMT,";",1),1)
. D @$P(BPMT,";",2)
. D TIME($P(BPMT,";",1),2)
D TIME("Cleanup Utility",2)
Q
;
FIXAUPN ;
;----- IHS/OIT/NKD BPM*1.0*2 Remove blank HRNs from all Patients
N BPMP,BPMPL,BPMCNT,BPMDOT
S (BPMCNT,BPMDOT,BPMP)=0
F S BPMP=$O(^AUPNPAT(BPMP)) Q:BPMP'=+BPMP D
. S BPMDOT=BPMDOT+1 I '(BPMDOT#10000) W "."
. Q:'$D(^AUPNPAT(BPMP,41))
. S BPMPL=0 F S BPMPL=$O(^AUPNPAT(BPMP,41,BPMPL)) Q:BPMPL'=+BPMPL D
. . Q:$L($P($G(^AUPNPAT(BPMP,41,BPMPL,0)),"^",2))>0
. . D HDR(BPMP,BPMPL)
. . K ^AUPNPAT(BPMP,41,BPMPL,0)
. . S BPMCNT=BPMCNT+1
D RSLT^BPMXFIX(" *** Total Found: "_BPMCNT_" ***")
Q
;
BUILD ;
;----- IHS/OIT/NKD BPM*1.0*2 Build TMP global for utility processing
;
N XIEN,OIEN,BPMFR,BPMTO
K ^TMP("BPM")
S XIEN=0
F S XIEN=$O(^XDRM(XIEN)) Q:+XIEN'=XIEN D
. S BPMFR=$P($P(^XDRM(XIEN,0),"^",1),";"),BPMTO=$P($P(^XDRM(XIEN,0),"^",2),";")
. I '$D(^DPT(BPMFR,-9)) D RSLT("PT NOT MERGED "_BPMFR) Q
. I $G(^DPT(BPMFR,-9))'=BPMTO D RSLT("POINTING TO WRONG PATIENT "_BPMFR) Q
. I $P($G(^DPT(BPMFR,0)),"^",1)["*" D RSLT("PREVIOUS VERSION OF MERGE SKIPPED "_BPMFR) Q
. I '$D(^TMP("BPM",$J,"FROM",BPMFR)) S ^TMP("BPM",$J,"FROM",BPMFR)=XIEN,^TMP("BPM",$J,XIEN,BPMFR,BPMTO)=XIEN
. E D
. . S OIEN=^TMP("BPM",$J,"FROM",BPMFR)
. . S ^TMP("BPM",$J,OIEN,BPMFR,BPMTO)=^TMP("BPM",$J,OIEN,BPMFR,BPMTO)_"^"_XIEN
. I '$D(^TMP("BPM",$J,"TO",BPMTO)) S ^TMP("BPM",$J,"TO",BPMTO)=BPMFR_$S($D(^TMP("BPM",$J,"TO",BPMFR)):"^"_^TMP("BPM",$J,"TO",BPMFR),1:"")
. E S:'(^TMP("BPM",$J,"TO",BPMTO)[BPMFR) ^TMP("BPM",$J,"TO",BPMTO)=^TMP("BPM",$J,"TO",BPMTO)_"^"_BPMFR_$S($D(^TMP("BPM",$J,"TO",BPMFR)):"^"_^TMP("BPM",$J,"TO",BPMFR),1:"")
Q
RSLT(%,BPMLINE) ;--- ISSUE MESSAGES DURING INSTALL/MENU
I $D(BPMMENU) D
.I $D(BPMLINE) W !!,%
.E W !,%
I '$D(BPMMENU) D
.I $D(BPMLINE) D BMES^XPDUTL(%)
.I '$D(BPMLINE) D MES^XPDUTL(%)
Q
;
TIME(BPMSTEP,TYPE) ;
; TIME MESSAGE DISPLAY
N STR
S STR="***** "_BPMSTEP_" "_$S(TYPE=1:"Start time: ",1:"End time: ")_$$HTE^XLFDT($H)_" *****"
I TYPE=1 D RSLT(STR,TYPE) Q
E D RSLT(STR)
Q
HDR(DFN,FAC,EIEN,HDR,ETXT,DTXT) ;EP
; HEADER MESSAGE DISPLAY
N MSG,MSG2,MSG3,MSG4
S MSG=$J("",3)_$S($D(DTXT):DTXT_" ",1:"")_"Patient IEN: "_DFN_$J("",9-$L(DFN))
S MSG2="HRN: "_$P($G(^AUTTLOC(FAC,0)),"^",7)_" "_$$HRN(FAC,DFN)_$J("",12-$L($$HRN(FAC,DFN)))
S MSG3=$S($D(EIEN):"Entry: "_EIEN,1:"")
S MSG4=$S($D(ETXT):ETXT_"(s): ",1:"")
I $L(MSG3)>0&$L(MSG4)>0 S MSG4=MSG4_EIEN,MSG3=""
S:'$D(HDR) HDR=1
D RSLT($S(HDR:MSG_MSG2,1:$J("",$L(MSG_MSG2)))_MSG3_MSG4)
Q
ENTRY(IEN,FROM,TXT) ;EP
; MERGED ENTRY MESSAGE DISPLAY
N BPMT
S BPMT=$J("",4)_"Merging "_$S($D(TXT):TXT,1:"Entry")_" #"_IEN
D RSLT(BPMT_$J("",42-$L(BPMT))_"From PT IEN: "_FROM)
Q
ENTRIES(BPMTMP) ;EP
; MERGED ENTRIES MESSAGE DISPLAY
N BPMT,I
S BPMT=$J("",4),I=0
F S I=$O(BPMTMP(I)) Q:$L(I)<1 D
. S BPMT=BPMT_I_$J("",12-$L(I))
. I $L(BPMT)>70 D RSLT(BPMT) S BPMT=$J("",4)
I $L(BPMT)>4 D RSLT(BPMT)
Q
HIST(DFN) ;EP
; FORWARD HISTORY OF MERGES FOR A PATIENT
Q:$L(DFN)<1 DFN
Q:'$D(^DPT(DFN,-9)) DFN
Q DFN_"^"_$$HIST(^DPT(DFN,-9))
LAST(DFN) ;EP
; LAST PATIENT IN A CHAIN OF MERGES
Q:$L(DFN)<1 DFN
Q:'$D(^DPT(DFN,-9)) DFN
Q $$LAST(^DPT(DFN,-9))
BILL(BPMDUZ2,BPMCI) ;EP
; RETURNS THE BILL # AND BILL PATIENT ASSOCIATED WITH A CLAIM
N BPMCB,BPMB
S BPMB=""
Q:'$D(^ABMDCLM(BPMDUZ2,BPMCI,65)) BPMB
S BPMCB=0 F S BPMCB=$O(^ABMDCLM(BPMDUZ2,BPMCI,65,BPMCB)) Q:(BPMCB'=+BPMCB)!($L(BPMB)>0) D
. Q:'$D(^ABMDBILL(BPMDUZ2,BPMCB,0))
. Q:BPMCI'=+$P(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",1)
. S BPMB=$P(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",5)_"^"_$P(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",1)
Q BPMB
VSIT(BPMDUZ2,BPMCI) ;EP
; RETURNS THE VISIT # AND VISIT PATIENT ASSOCIATED WITH A CLAIM
N BPMCV,BPMV
S BPMV=""
Q:'$D(^ABMDCLM(BPMDUZ2,BPMCI,11)) BPMV
S BPMCV=0 F S BPMCV=$O(^ABMDCLM(BPMDUZ2,BPMCI,11,BPMCV)) Q:(BPMCV'=+BPMCV)!($L(BPMV)>0) D
. Q:'$D(^AUPNVSIT(BPMCV,0))
. S BPMV=$P(^AUPNVSIT(BPMCV,0),"^",5)_"^"_BPMCV
Q BPMV
HRN(BPMDUZ2,BPMP) ;EP
; RETURNS THE HRN FOR A PATIENT
Q $P($G(^AUPNPAT(BPMP,41,BPMDUZ2,0)),"^",2)
MRG(BPMPAT,BPMDIR) ;EP
; RETURNS 1 IF THE PATIENT WAS PART OF A MERGE
Q:$L(BPMPAT)<1 1
Q $S($D(^TMP("BPM",$J,BPMDIR,BPMPAT)):1,1:0)
RTNS ;----- LIST OF CLEANUP ROUTINES - DISPLAY;LABEL^ROUTINE
;;Blank HRNs;FIXAUPN^BPMXFIX
;;iCare;BQI^BPMXFX1
;;Problem List;PRB^BPMXFX1
;;Word Processing;WP^BPMXFX2
;;Lab;LAB^BPMXFX1
;;3PB;TPB^BPMXFX1
;;PT Taxonomy;ATX^BPMXFX1
;;FILE #90050.02;I1^BPMXFX2
;;FILE #9000043;I2^BPMXFX2
;;FILE #9002274.3;I3^BPMXFX2
;;FILE #9002274.4;I4^BPMXFX2
;;FILE #100;V3^BPMXFX2
;;Deleted Visits;VST^BPMXFX1
;;EDR;EDR^BPMXFX1
;;MPI;MPI^BPMXFX1
;;$$END
BPMXFIX ;IHS/OIT/NKD - CLEANUP UTILITY DRIVER - 6/26/12 ;
+1 ;;1.0;IHS PATIENT MERGE;**2**;MAR 01, 2010;Build 1
+2 ;IHS/OIT/NKD 6/13/2012 Correct bad 3P claim data
+3 ; Correct invalid HRN data
+4 ; Batch issue cleanup
+5 ;
EN1 ;EP
+1 ; IF CALLED FROM MENU [BPM AUDIT] SET VARIABLE TO PRINT TO SCREEN
+2 SET BPMMENU=1
+3 DO RSLT($TRANSLATE($JUSTIFY(" ",80)," ","*"))
+4 DO RSLT($TRANSLATE($JUSTIFY(" ",10)," ","*")_" This utility should only be run during off-peak hours. "_$TRANSLATE($JUSTIFY(" ",10)," ","*"))
+5 DO RSLT($TRANSLATE($JUSTIFY(" ",10)," ","*")_" Users must ensure the following before continuing: "_$TRANSLATE($JUSTIFY(" ",10)," ","*"))
+6 DO RSLT($TRANSLATE($JUSTIFY(" ",10)," ","*")_" 1) No patient merge process are running or scheduled. "_$TRANSLATE($JUSTIFY(" ",10)," ","*"))
+7 DO RSLT($TRANSLATE($JUSTIFY(" ",10)," ","*")_" 2) Data entry on merged patients has been halted. "_$TRANSLATE($JUSTIFY(" ",10)," ","*"))
+8 DO RSLT($TRANSLATE($JUSTIFY(" ",10)," ","*")_" 3) Screen output is being logged for review. "_$TRANSLATE($JUSTIFY(" ",10)," ","*"))
+9 DO RSLT($TRANSLATE($JUSTIFY(" ",80)," ","*"))
+10 SET DIR("A")="Proceed"
+11 SET DIR("B")="NO"
+12 SET DIR(0)="Y"
+13 DO ^DIR
+14 IF 'Y
QUIT
+15 KILL DIR,X,Y
EN ;EP
+1 ; MAIN EP FROM KIDS, PRINTS TO INSTALL LOG FILE
+2 NEW I,BPMT
+3 DO TIME("Cleanup Utility",1)
+4 DO BUILD
+5 FOR I=1:1
SET BPMT=$PIECE($TEXT(RTNS+I),";;",2)
IF BPMT["$$END"
QUIT
Begin DoDot:1
+6 DO TIME($PIECE(BPMT,";",1),1)
+7 DO @$PIECE(BPMT,";",2)
+8 DO TIME($PIECE(BPMT,";",1),2)
End DoDot:1
+9 DO TIME("Cleanup Utility",2)
+10 QUIT
+11 ;
FIXAUPN ;
+1 ;----- IHS/OIT/NKD BPM*1.0*2 Remove blank HRNs from all Patients
+2 NEW BPMP,BPMPL,BPMCNT,BPMDOT
+3 SET (BPMCNT,BPMDOT,BPMP)=0
+4 FOR
SET BPMP=$ORDER(^AUPNPAT(BPMP))
IF BPMP'=+BPMP
QUIT
Begin DoDot:1
+5 SET BPMDOT=BPMDOT+1
IF '(BPMDOT#10000)
WRITE "."
+6 IF '$DATA(^AUPNPAT(BPMP,41))
QUIT
+7 SET BPMPL=0
FOR
SET BPMPL=$ORDER(^AUPNPAT(BPMP,41,BPMPL))
IF BPMPL'=+BPMPL
QUIT
Begin DoDot:2
+8 IF $LENGTH($PIECE($GET(^AUPNPAT(BPMP,41,BPMPL,0)),"^",2))>0
QUIT
+9 DO HDR(BPMP,BPMPL)
+10 KILL ^AUPNPAT(BPMP,41,BPMPL,0)
+11 SET BPMCNT=BPMCNT+1
End DoDot:2
End DoDot:1
+12 DO RSLT^BPMXFIX(" *** Total Found: "_BPMCNT_" ***")
+13 QUIT
+14 ;
BUILD ;
+1 ;----- IHS/OIT/NKD BPM*1.0*2 Build TMP global for utility processing
+2 ;
+3 NEW XIEN,OIEN,BPMFR,BPMTO
+4 KILL ^TMP("BPM")
+5 SET XIEN=0
+6 FOR
SET XIEN=$ORDER(^XDRM(XIEN))
IF +XIEN'=XIEN
QUIT
Begin DoDot:1
+7 SET BPMFR=$PIECE($PIECE(^XDRM(XIEN,0),"^",1),";")
SET BPMTO=$PIECE($PIECE(^XDRM(XIEN,0),"^",2),";")
+8 IF '$DATA(^DPT(BPMFR,-9))
DO RSLT("PT NOT MERGED "_BPMFR)
QUIT
+9 IF $GET(^DPT(BPMFR,-9))'=BPMTO
DO RSLT("POINTING TO WRONG PATIENT "_BPMFR)
QUIT
+10 IF $PIECE($GET(^DPT(BPMFR,0)),"^",1)["*"
DO RSLT("PREVIOUS VERSION OF MERGE SKIPPED "_BPMFR)
QUIT
+11 IF '$DATA(^TMP("BPM",$JOB,"FROM",BPMFR))
SET ^TMP("BPM",$JOB,"FROM",BPMFR)=XIEN
SET ^TMP("BPM",$JOB,XIEN,BPMFR,BPMTO)=XIEN
+12 IF '$TEST
Begin DoDot:2
+13 SET OIEN=^TMP("BPM",$JOB,"FROM",BPMFR)
+14 SET ^TMP("BPM",$JOB,OIEN,BPMFR,BPMTO)=^TMP("BPM",$JOB,OIEN,BPMFR,BPMTO)_"^"_XIEN
End DoDot:2
+15 IF '$DATA(^TMP("BPM",$JOB,"TO",BPMTO))
SET ^TMP("BPM",$JOB,"TO",BPMTO)=BPMFR_$SELECT($DATA(^TMP("BPM",$JOB,"TO",BPMFR)):"^"_^TMP("BPM",$JOB,"TO",BPMFR),1:"")
+16 IF '$TEST
IF '(^TMP("BPM",$JOB,"TO",BPMTO)[BPMFR)
SET ^TMP("BPM",$JOB,"TO",BPMTO)=^TMP("BPM",$JOB,"TO",BPMTO)_"^"_BPMFR_$SELECT($DATA(^TMP("BPM",$JOB,"TO",BPMFR)):"^"_^TMP("BPM",$JOB,"TO",BPMFR),1:"")
End DoDot:1
+17 QUIT
RSLT(%,BPMLINE) ;--- ISSUE MESSAGES DURING INSTALL/MENU
+1 IF $DATA(BPMMENU)
Begin DoDot:1
+2 IF $DATA(BPMLINE)
WRITE !!,%
+3 IF '$TEST
WRITE !,%
End DoDot:1
+4 IF '$DATA(BPMMENU)
Begin DoDot:1
+5 IF $DATA(BPMLINE)
DO BMES^XPDUTL(%)
+6 IF '$DATA(BPMLINE)
DO MES^XPDUTL(%)
End DoDot:1
+7 QUIT
+8 ;
TIME(BPMSTEP,TYPE) ;
+1 ; TIME MESSAGE DISPLAY
+2 NEW STR
+3 SET STR="***** "_BPMSTEP_" "_$SELECT(TYPE=1:"Start time: ",1:"End time: ")_$$HTE^XLFDT($HOROLOG)_" *****"
+4 IF TYPE=1
DO RSLT(STR,TYPE)
QUIT
+5 IF '$TEST
DO RSLT(STR)
+6 QUIT
HDR(DFN,FAC,EIEN,HDR,ETXT,DTXT) ;EP
+1 ; HEADER MESSAGE DISPLAY
+2 NEW MSG,MSG2,MSG3,MSG4
+3 SET MSG=$JUSTIFY("",3)_$SELECT($DATA(DTXT):DTXT_" ",1:"")_"Patient IEN: "_DFN_$JUSTIFY("",9-$LENGTH(DFN))
+4 SET MSG2="HRN: "_$PIECE($GET(^AUTTLOC(FAC,0)),"^",7)_" "_$$HRN(FAC,DFN)_$JUSTIFY("",12-$LENGTH($$HRN(FAC,DFN)))
+5 SET MSG3=$SELECT($DATA(EIEN):"Entry: "_EIEN,1:"")
+6 SET MSG4=$SELECT($DATA(ETXT):ETXT_"(s): ",1:"")
+7 IF $LENGTH(MSG3)>0&$LENGTH(MSG4)>0
SET MSG4=MSG4_EIEN
SET MSG3=""
+8 IF '$DATA(HDR)
SET HDR=1
+9 DO RSLT($SELECT(HDR:MSG_MSG2,1:$JUSTIFY("",$LENGTH(MSG_MSG2)))_MSG3_MSG4)
+10 QUIT
ENTRY(IEN,FROM,TXT) ;EP
+1 ; MERGED ENTRY MESSAGE DISPLAY
+2 NEW BPMT
+3 SET BPMT=$JUSTIFY("",4)_"Merging "_$SELECT($DATA(TXT):TXT,1:"Entry")_" #"_IEN
+4 DO RSLT(BPMT_$JUSTIFY("",42-$LENGTH(BPMT))_"From PT IEN: "_FROM)
+5 QUIT
ENTRIES(BPMTMP) ;EP
+1 ; MERGED ENTRIES MESSAGE DISPLAY
+2 NEW BPMT,I
+3 SET BPMT=$JUSTIFY("",4)
SET I=0
+4 FOR
SET I=$ORDER(BPMTMP(I))
IF $LENGTH(I)<1
QUIT
Begin DoDot:1
+5 SET BPMT=BPMT_I_$JUSTIFY("",12-$LENGTH(I))
+6 IF $LENGTH(BPMT)>70
DO RSLT(BPMT)
SET BPMT=$JUSTIFY("",4)
End DoDot:1
+7 IF $LENGTH(BPMT)>4
DO RSLT(BPMT)
+8 QUIT
HIST(DFN) ;EP
+1 ; FORWARD HISTORY OF MERGES FOR A PATIENT
+2 IF $LENGTH(DFN)<1
QUIT DFN
+3 IF '$DATA(^DPT(DFN,-9))
QUIT DFN
+4 QUIT DFN_"^"_$$HIST(^DPT(DFN,-9))
LAST(DFN) ;EP
+1 ; LAST PATIENT IN A CHAIN OF MERGES
+2 IF $LENGTH(DFN)<1
QUIT DFN
+3 IF '$DATA(^DPT(DFN,-9))
QUIT DFN
+4 QUIT $$LAST(^DPT(DFN,-9))
BILL(BPMDUZ2,BPMCI) ;EP
+1 ; RETURNS THE BILL # AND BILL PATIENT ASSOCIATED WITH A CLAIM
+2 NEW BPMCB,BPMB
+3 SET BPMB=""
+4 IF '$DATA(^ABMDCLM(BPMDUZ2,BPMCI,65))
QUIT BPMB
+5 SET BPMCB=0
FOR
SET BPMCB=$ORDER(^ABMDCLM(BPMDUZ2,BPMCI,65,BPMCB))
IF (BPMCB'=+BPMCB)!($LENGTH(BPMB)>0)
QUIT
Begin DoDot:1
+6 IF '$DATA(^ABMDBILL(BPMDUZ2,BPMCB,0))
QUIT
+7 IF BPMCI'=+$PIECE(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",1)
QUIT
+8 SET BPMB=$PIECE(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",5)_"^"_$PIECE(^ABMDBILL(BPMDUZ2,BPMCB,0),"^",1)
End DoDot:1
+9 QUIT BPMB
VSIT(BPMDUZ2,BPMCI) ;EP
+1 ; RETURNS THE VISIT # AND VISIT PATIENT ASSOCIATED WITH A CLAIM
+2 NEW BPMCV,BPMV
+3 SET BPMV=""
+4 IF '$DATA(^ABMDCLM(BPMDUZ2,BPMCI,11))
QUIT BPMV
+5 SET BPMCV=0
FOR
SET BPMCV=$ORDER(^ABMDCLM(BPMDUZ2,BPMCI,11,BPMCV))
IF (BPMCV'=+BPMCV)!($LENGTH(BPMV)>0)
QUIT
Begin DoDot:1
+6 IF '$DATA(^AUPNVSIT(BPMCV,0))
QUIT
+7 SET BPMV=$PIECE(^AUPNVSIT(BPMCV,0),"^",5)_"^"_BPMCV
End DoDot:1
+8 QUIT BPMV
HRN(BPMDUZ2,BPMP) ;EP
+1 ; RETURNS THE HRN FOR A PATIENT
+2 QUIT $PIECE($GET(^AUPNPAT(BPMP,41,BPMDUZ2,0)),"^",2)
MRG(BPMPAT,BPMDIR) ;EP
+1 ; RETURNS 1 IF THE PATIENT WAS PART OF A MERGE
+2 IF $LENGTH(BPMPAT)<1
QUIT 1
+3 QUIT $SELECT($DATA(^TMP("BPM",$JOB,BPMDIR,BPMPAT)):1,1:0)
RTNS ;----- LIST OF CLEANUP ROUTINES - DISPLAY;LABEL^ROUTINE
+1 ;;Blank HRNs;FIXAUPN^BPMXFIX
+2 ;;iCare;BQI^BPMXFX1
+3 ;;Problem List;PRB^BPMXFX1
+4 ;;Word Processing;WP^BPMXFX2
+5 ;;Lab;LAB^BPMXFX1
+6 ;;3PB;TPB^BPMXFX1
+7 ;;PT Taxonomy;ATX^BPMXFX1
+8 ;;FILE #90050.02;I1^BPMXFX2
+9 ;;FILE #9000043;I2^BPMXFX2
+10 ;;FILE #9002274.3;I3^BPMXFX2
+11 ;;FILE #9002274.4;I4^BPMXFX2
+12 ;;FILE #100;V3^BPMXFX2
+13 ;;Deleted Visits;VST^BPMXFX1
+14 ;;EDR;EDR^BPMXFX1
+15 ;;MPI;MPI^BPMXFX1
+16 ;;$$END