PRPFMR1	;BAYPINES/MJE  DATA MIGRATION ROUTINE 1 ;05/15/03
	;;3.0;PATIENT FUNDS - MIGRATION 5.1;**16**;JUNE 1, 1989
	;ENTRY AT LINETAG ONLY
	Q
RPC(RESULTS,PARAM1,PARAM2)	;ENTRY POINT FOR VPFS RPC
	S PRPFSEG=PARAM1
	S PRPFJ=PARAM2
	I PRPFSEG>1 D SENDSEG Q
TEST	S PRPFOUT1=1
LEG	;LEGACY ENTRY POINT
	S:'$D(PRPFOUT1) PRPFOUT1=2
	K ^TMP("PRPF_EXTDATA")
	S (PRPFHLD1,PRPFHLD2,PRPFHLD3,PRPFHLD4,CNTREC,CNTPREC,CNTTOT,PFG,PFX,PFXX)=0
	S U="^"
	S PFSITE=$P($$SITE^VASITE(),"^",3)
	S:PFSITE="" PFSITE="###"
	S (CNTSEG,CNTXREC)=1
	F  S PRPFHLD1=$O(^PRPF(470,PRPFHLD1)) Q:'PRPFHLD1  D
	.S PFG=PFG+1 I PFG=100 W "." S PFG=0
	.S CNTPREC=CNTPREC+1
	.S PFNODE12=PFSITE
	.D:$G(^PRPF(470,PRPFHLD1,0))'="" COMPU
	.D NODE12
	.D:$G(^PRPF(470,PRPFHLD1,0))'="" NODE0
	.D:$G(^PRPF(470,PRPFHLD1,1))'="" NODE1
	.D:$G(^PRPF(470,PRPFHLD1,2))'="" NODE2
	.D:$O(^PRPF(470,PRPFHLD1,4,0))>0 NODE4
	.D:$O(^PRPF(470,PRPFHLD1,5,0))>0 NODE5
	.D:$O(^PRPF(470,PRPFHLD1,6,0))>0 NODE6
	.D:$O(^PRPF(470,PRPFHLD1,7,0))>0 NODE7
	.D:$O(^PRPF(470,PRPFHLD1,8,0))>0 NODE8
	D:PRPFOUT1=1
	.S CNTTOT=CNTTOT+CNTREC
	.S ^TMP("PRPF_EXTDATA",$J,0)=DTIME_U_DTIME_U_"DATA FOR PRPF MIGRATION"
	.S ^TMP("PRPF_EXTDATA",$J,1,0)="VPFS"_U_PFSITE_U_U_U_U_"0"_U_"A1"_U_CNTPREC_U_CNTTOT_U_$J
	.D NOW^%DTC S Y=% D DD^%DT
	.S $P(^TMP("PRPF_EXTDATA",$J,1,0),"^",3)="(VER#5.0) "_"RUN-DATE@TIME="_Y
	.S RESULTS=$NA(^TMP("PRPF_EXTDATA",$J,1))
	D:PRPFOUT1=2 OUT
	D KILLIT
	Q
SENDSEG	;SEND A SEGMENT OF DATA TO MIGRATION JAVA APP
	S RESULTS=$NA(^TMP("PRPF_EXTDATA",PRPFJ,PRPFSEG))
	Q
	;***************************************************************
COMPU	;
	S PFNAME=$P($G(^DPT(PRPFHLD1,0)),"^",1)
	S PFSSN=$P($G(^DPT(PRPFHLD1,0)),"^",9)
	I PFNAME="" I PFSSN'="" S PFNAME="NAME-MISSING-SSN#"_PFSSN
	I PFNAME="" I PFSSN="" S PFNAME="NAME-MISSING-NO-SSN-IEN#"_PRPFHLD1
	S PFSSN=$P($G(^DPT(PRPFHLD1,0)),"^",9)
	S PFDOB=$P($G(^DPT(PRPFHLD1,0)),"^",3)
	S PFWARD=$P($G(^DPT(PRPFHLD1,.1)),"^",1)
	S PFCLAIM=$P($G(^DPT(PRPFHLD1,.31)),"^",3)
	S PFADDR1=$P($G(^DPT(PRPFHLD1,.11)),"^",1)
	S PFADDR2=$P($G(^DPT(PRPFHLD1,.11)),"^",2)
	S PFADDR3=$P($G(^DPT(PRPFHLD1,.11)),"^",3)
	S PFCITY=$P($G(^DPT(PRPFHLD1,.11)),"^",4)
	S PFSTATE=$P($G(^DPT(PRPFHLD1,.11)),"^",5)
	S PFZIP=$P($G(^DPT(PRPFHLD1,.11)),"^",6)
	;S PFICN=$P($G(^DPT(PRPFHLD1,"MPI")),"^",1)
	S PFICN=$P($$GETICN^MPIF001(PRPFHLD1),"^")
	S:PFICN=-1 PFICN=""
	;S PFSITE=$$KSP^XUPARAM("INST")
	S PFAUTH=$P(^PRPF(470,PRPFHLD1,0),"^",13)
	I PFAUTH S PFAUTHRS=$P($G(^VA(200,PFAUTH,0)),"^",1)
	E  S PFAUTHRS=""
	Q
NODE0	S PFNODE0=^PRPF(470,PRPFHLD1,0)
	S CNTREC=CNTREC+1
	S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"D1"_U_PFNAME_U_PFSSN_U_PFDOB_U_PFWARD_U_PFCLAIM_U_PFADDR1_U_PFADDR2_U_PFADDR3_U_PFCITY_U_PFSTATE_U_PFZIP_U_PFAUTHRS_U_PFNODE12
	D SEG
	S CNTREC=CNTREC+1
	S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"D2"_U_PFNODE0
	D SEG
	Q
NODE1	S PFNODE1=^PRPF(470,PRPFHLD1,1)
	S CNTREC=CNTREC+1
	S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"B1"_U_PFNODE1
	D SEG
	Q
NODE2	S PFNODE2=^PRPF(470,PRPFHLD1,2)
	S CNTREC=CNTREC+1
	S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"B2"_U_PFNODE2
	D SEG
	Q
NODE4	S PRPFHLD2=0
	F  S PRPFHLD2=$O(^PRPF(470,PRPFHLD1,4,PRPFHLD2)) Q:'PRPFHLD2  D
	.S PFNODE4=^PRPF(470,PRPFHLD1,4,PRPFHLD2,0)
	.S PFNODE4D=$P(PFNODE4,"^",2)
	.I $D(^PRPF(470.1,$P(PFNODE4,"^",1),0)) D
	..S PFNODE4T=^PRPF(470.1,$P(PFNODE4,"^",1),0)
	..S PFCLERK=$P(PFNODE4T,"^",14)
	..I $P(PFNODE4T,"^",11) D
	...S $P(PFNODE4T,"^",11)=$P($G(^PRPF(470.2,$P(PFNODE4T,"^",11),0)),"^",1)
	..I PFCLERK S PFCLERKN=$P($G(^VA(200,PFCLERK,0)),"^",1)
	..E  S PFCLERKN=""
	..S $P(PFNODE4T,"^",14)=PFCLERKN
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"T1"_U_PFNODE4D_U_PFNODE4T
	..D SEG
	Q
NODE5	S (PRPFHLD2,PRPFHLD3,PRPFHLD4)=0
	F  S PRPFHLD2=$O(^PRPF(470,PRPFHLD1,5,PRPFHLD2)) Q:'PRPFHLD2  D
	.S PFNODE5=$G(^PRPF(470,PRPFHLD1,5,PRPFHLD2,0))
	.S CNTREC=CNTREC+1
	.S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"S1"_U_PFNODE5
	.D SEG
	.S PRPFHLD3=0
	.F  S PRPFHLD3=$O(^PRPF(470,PRPFHLD1,5,PRPFHLD2,1,PRPFHLD3)) Q:'PRPFHLD3  D
	..S PFNODE51=$G(^PRPF(470,PRPFHLD1,5,PRPFHLD2,1,PRPFHLD3,0))
	..S PRPFHLD4=0
	..I $O(^PRPF(470,PRPFHLD1,5,PRPFHLD2,1,PRPFHLD3,1,PRPFHLD4))'>0 D
	...S CNTREC=CNTREC+1
	...S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"S2"_U_PFNODE51_U
	...D SEG
	..F  S PRPFHLD4=$O(^PRPF(470,PRPFHLD1,5,PRPFHLD2,1,PRPFHLD3,1,PRPFHLD4)) Q:'PRPFHLD4  D
	...S PFNODE52=$G(^PRPF(470,PRPFHLD1,5,PRPFHLD2,1,PRPFHLD3,1,PRPFHLD4,0))
	...I $L(PFNODE52)<128 D
	....S CNTREC=CNTREC+1
	....S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"S2"_U_PFNODE51_U_PFNODE52
	....D SEG
	...I $L(PFNODE52)>127 D
	....S PFNODE53=$E(PFNODE52,128,256)
	....S PFNODE52=$E(PFNODE52,1,127)
	....S CNTREC=CNTREC+1
	....S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"S2"_U_PFNODE51_U_PFNODE52
	....D SEG
	....S CNTREC=CNTREC+1
	....S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"S3"_U_PFNODE51_U_PFNODE53
	....D SEG
	Q
NODE6	S PRPFHLD2=0
	F  S PRPFHLD2=$O(^PRPF(470,PRPFHLD1,6,PRPFHLD2)) Q:'PRPFHLD2  D
	.S PFNODE6=^PRPF(470,PRPFHLD1,6,PRPFHLD2,0)
	.S CNTREC=CNTREC+1
	.S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"I1"_U_PFNODE6
	.D SEG
	Q
NODE7	S PRPFHLD2=0
	F  S PRPFHLD2=$O(^PRPF(470,PRPFHLD1,7,PRPFHLD2)) Q:'PRPFHLD2  D
	.S PFNODE7=^PRPF(470,PRPFHLD1,7,PRPFHLD2,0)
	.I $L(PFNODE7)<128 D
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"R1"_U_PFNODE7
	..D SEG
	.I $L(PFNODE7)>127 D
	..S PFNODE71=$E(PFNODE7,128,256)
	..S PFNODE7=$E(PFNODE7,1,127)
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"R1"_U_PFNODE7
	..D SEG
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"R2"_U_PFNODE71
	..D SEG
	Q
NODE8	S PRPFHLD2=0
	F  S PRPFHLD2=$O(^PRPF(470,PRPFHLD1,8,PRPFHLD2)) Q:'PRPFHLD2  D
	.S PFNODE8=^PRPF(470,PRPFHLD1,8,PRPFHLD2,0)
	.I $L(PFNODE8)<128 D
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"X1"_U_PFNODE8
	..D SEG
	.I $L(PFNODE8)>127 D
	..S PFNODE81=$E(PFNODE8,128,256)
	..S PFNODE8=$E(PFNODE8,1,127)
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"X1"_U_PFNODE8
	..D SEG
	..S CNTREC=CNTREC+1
	..S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTXREC_U_"X2"_U_PFNODE81
	..D SEG
	Q
NODE12	;CHECK STATION ID
	I $D(^PRPF(470,PRPFHLD1,12)) I ^PRPF(470,PRPFHLD1,12)'="" D
	.S:$D(^DIC(4,$G(^PRPF(470,PRPFHLD1,12)),99)) PFNODE12=$P($G(^DIC(4,$G(^PRPF(470,PRPFHLD1,12)),99)),"^",1)
	.S:'$D(^DIC(4,$G(^PRPF(470,PRPFHLD1,12)),99)) PFNODE12=PFSITE
	S:'$D(^PRPF(470,PRPFHLD1,12)) PFNODE12=PFSITE
	S:PFNODE12="" PFNODE12=PFSITE
	;S CNTREC=CNTREC+1
	;S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_PFSSN_U_PFICN_U_CNTREC_U_"12"_U_PFNODE12
	;S ^TMP("PRPF_EXTDATA",$J,CNTSEG,CNTREC)="VPFS"_U_PFSITE_U_PRPFHLD1_U_U_U_CNTREC_U_"12"_U_PFNODE12
	;D SEG
	Q
SEG	;SET UP NEW SEGMENT NODE
	S CNTXREC=CNTXREC+1
	D:CNTREC=10000
	.S CNTSEG=CNTSEG+1
	.S CNTTOT=CNTTOT+CNTREC
	.S CNTREC=0
	Q
OUT	;WRITE OUT TO DEVICE
	S CNTTOT=CNTTOT+CNTREC
	W !
	W !,"Please enter the output device for the detail report or ""^"" to exit:"
	S %ZIS("B")="",%ZIS("HFSMODE")="W" D ^%ZIS K XION R X:2
	I POP K ^TMP("PRPF_EXTDATA") Q
	U IO
	W "VPFS"_U_PFSITE_U_U_U_U_"0"_U_"A1"_U_CNTPREC_U_CNTXREC
	F  S PFX=$O(^TMP("PRPF_EXTDATA",$J,PFX)) Q:PFX=""  D
	.F  S PFXX=$O(^TMP("PRPF_EXTDATA",$J,PFX,PFXX)) Q:PFXX=""  D
	..W !,^TMP("PRPF_EXTDATA",$J,PFX,PFXX)
	D ^%ZISC
	K ^TMP("PRPF_EXTDATA")
	Q
KILLIT	;KILL LOCAL VARIABLES
	K CNTPREC,CNTREC,CNTSEG,CNTTOT,CNTXREC,PARAMS,PFADDR1,PFADDR2,PFADDR3
	K PFAUTH,PFAUTHRS,PFCITY,PFCLAIM,PFCLERK,PFCLERKN,PFDOB,PFG
	K PFICN,PFNAME,PFNODE0,PFNODE1,PFNODE12,PFNODE2,PFNODE4,PFNODE4D
	K PFNODE4T,PFNODE5,PFNODE51,PFNODE52,PFNODE53,PFNODE6,PFNODE7
	K PFNODE71,PFNODE8,PFNODE81,PFSITE,PFSSN,PFSTATE,PFWARD,PFX
	K PFXX,PFZIP,POP,PRPFHLD1,PRPFHLD2,PRPFHLD3,PRPFHLD4,PRPFJ
	K PRPFOUT1,PRPFSEG,X
	Q
