REGCONVT ;CONVERT REG DATA TO TAPE [ 08/26/87 8:14 AM ]
;MODIFIED TO PROCESS MULTIPLE HEADERS ON DELETE RECORDS RFD&WLC 4-28-87
;TJF/DPSC
R !!,"ENTER PRINTER PORT, NULL = 70 ",PR S:PR="" PR=70
K DISP,OSET,FLIP,GDREC,FACNUM,FACCODE,FACNAME,^REGRG3
S BLKS="",HR="",CNTIN=0,RG3=0,CNTOUT=0,CNTERR=0,X="",Z=""
S RG12=0,FACSAVE="",FACSEQ="0001",ZR="000000"
F I=1:1:254 S BLKS=BLKS_" "
S %DT="",X="T" D ^%DT S DATE=Y
W !!,"MOUNT 1600 BPI TAPE ON DEVICE 48"
R !!,"REPLY ANY CHARACTER TO CONTINUE ",ANS#1
RGBL S GBL="AGTXDATA"
S GBLPTT="^"_GBL I '$D(@GBLPTT) W !,"GLOBAL 'AGTXDATA' DOES NOT EXIST, JOB TERMINATED" Q
S GBLPT="^"_GBL_"(Z)"
SETTIME S STRTTIME=$H
S Z=$O(@GBLPT) S INPUT=@GBLPT I INPUT["RG1" W !!,"HEADER RECORD MISSING, RUN TERMINATED" Q
S FACCODE=$P(INPUT,"^",1),FACNAME=$P(INPUT,"^",2)
S FACSAVE=FACCODE
S Z=$O(@GBLPT) S INPUT=@GBLPT_"^",AGN=""
I Z="" W !!,"NO DATA IN GLOBAL, RUN TERMINATED" Q
I $E(INPUT,1,3)="RG3" G KFLIP
I $E(INPUT,1,3)'="RG1" W !!,"FIRST RECORD INVALID, RUN TERMINATED" Q
KFLIP ;
K FLIP
OPNTAPE O 48:("EFU":176:310):3 E U 0 W !,"TAPE UNIT 48 NOT ON-LINE, READY DEVICE" Q
U 48 W *5
S %ZA=$ZA,%ZA=%ZA\4#2 I %ZA=1 U 0 W !!,"TAPE UNIT 48 NEEDS WRITE RING, JOB ABORTED" Q
D INT^%D
O PR U PR W #,?10,"R E G I S T R A T I O N C O N V E R S I O N E R R O R L I S T"," ",FACCODE," ",FACNAME," ",%DAT1
LPRC3 ;
S FACNUM=$P(INPUT,"^",3) D FIXNUM
I $E(INPUT,1,3)="RG3" S ^REGRG3(RG3)=INPUT S CNTIN=CNTIN+1,RG3=RG3+1 S Z=$O(@GBLPT) G:Z="" EOJ S INPUT=@GBLPT_"^" G LPRC3
G FLIPREC
FIXNUM S FL=6-$L(FACNUM)
S FACNUM=$E(ZR,1,FL)_FACNUM
Q
READ S Z=$O(@GBLPT) G:Z="" EOJ S HOLD=@GBLPT S INPUT="",AGN=""
S INPUT=HOLD
F J=1:1:$L(INPUT) I $E(INPUT,J)?1L S INPUT=$E(INPUT,1,J-1)_$C($A($E(INPUT,J))-32)_$E(INPUT,J+1,$L(INPUT))
I $E(INPUT,1,3)="RG3" S ^REGRG3(RG3)=INPUT S CNTIN=CNTIN+1,RG3=RG3+1 G READ
I $D(FLIP) I $E(INPUT,1,3)="RG1" S FACNUM=$P(INPUT,"^",3) D FIXNUM K FLIP,GDREC G FLIPREC
I $E(INPUT,1,3)="RG2" S FLIP="" G FLIPREC
WERR W !!,"RECORD SECUENCE ERROR, RECORD COUNT IS ",CNTIN," DATA RECORD IS ",!!,INPUT G READ
FLIPREC I $E(INPUT,1,3)="RG1" S DISP=0,OSET=0,OUTPUT=FACSEQ
E I $E(INPUT,1,3)="RG2" S DISP=20,OSET=176,OUTPUT=""
E W !!,"RECORD CODE INVALID, VALUE FOUND IS ",INPUT W !!,"RUN TERMINATED" Q
S CNTIN=CNTIN+1
S I=0
LOOKUP S I=I+1 S X=$P(INPUT,"^",I+1) G:$P($T(TABLE+DISP+I),";",5)["SUB" HOLD G:$P($T(TABLE+DISP+I),";",5)["END" EOD
I $P($T(TABLE+DISP+I),";",7)="S1" S HD="" S FL=6-$L(X) S HD=$E(ZR,1,FL)_X S X=HD,$P(INPUT,"^",I+1)=HD
I $P($T(TABLE+DISP+I),";",7)="S2" I $P(INPUT,"^",I+1)'="" I $P(INPUT,"^",I+2)="" W !!,FACNUM," MAILING ADDRESS STREET EXISTS, MAILING ADDRESS TOWN MUST EXIST",!,"DATA RECORD IS ",INPUT
I $P($T(TABLE+DISP+I),";",7)="S3" I $P(INPUT,"^",I+1)'="" I $P(INPUT,"^",I+2)="" W !!,FACNUM," MAILING ADDRESS TOWN EXISTS, MAILING ADDRESS STATE MUST EXIST",!,"DATA RECORD IS ",INPUT
I $L(X)>$P($T(TABLE+DISP+I),";",4) W !!,"WARNING - ",$P($T(TABLE+DISP+I),";",5)," IS TRUNCATED TO ",$P($T(TABLE+DISP+I),";",4)," POSITIONS, VALUE BEFORE TRUNCATION IS '",X,"'",!,INPUT D SKPIT G:AGN="X" READ G BYPSS
E S OUTPUT=OUTPUT_$P(INPUT,"^",I+1)
BYPSS ;
S OUTPUT=OUTPUT_$E(BLKS,1,($P($T(TABLE+DISP+I+1),";",3)-OSET)-$L(OUTPUT)-1)
G LOOKUP
HOLD S SOUTPUT=OUTPUT S GDREC="" U PR G READ
EOD I $D(GDREC) D
.I FACSAVE'=$E(SOUTPUT,5,10) S FACSAVE=$E(SOUTPUT,5,10),FACSEQ=FACSEQ+1
. S:FACSEQ>9999 FACSEQ="0001"
.S RG12=RG12+1,CNTOUT=CNTOUT+1 U 48 W SOUTPUT,OUTPUT U 0 W !,CNTOUT U PR
.S FL=4-$L(FACSEQ),FACSEQ=$E(ZR,1,FL)_FACSEQ
K GDREC G READ
EOJ ;END OF JOB PROCESSING
U 48 C 48
I I '$D(^REGRG3) U PR W !!,"NO RG3 RECORDS PRESENT" G FINISH
ROPN ;
O 48:("EFU":80:80):3 E U 0 W !!,"TAPE UNIT 48 NOT READY, ANY KEY TO CONTINUE ",ANS#1 G ROPN
BLDHDR S OUTPUT="",X="" U 48 W *1 ; BACKSPACE OVER LAST TAPE MARK
;DSM WRITES 2 TAPE MARKS AT CLOSE THEN BACKS UP 1 TAPE
;MARK. THE NEXT COMMAND W *1 BACKS UP OVER THE 1ST TAPE
;MARK
READRG3 S X=$O(^REGRG3(X)) G:X="" FINISH S DATA=^REGRG3(X)
U 48
RFD1 I X>1 G:$P(DATA,"^",2)=$P(^REGRG3(X-1),"^",2) SETPTID
S HR=""
I HR="" S HR="X",OUTPUT="|"_"|"_"|"_$E($P(DATA,"^",2),1,2)_$E($P(DATA,"^",2),1,6)_$E($P(DATA,"^",2),1,6)_"RRD01 "_$E(DATE,4,7)_$E(DATE,2,3)_" DELETE RECORDS REGISTRATION"_$E(BLKS,1,19) S CNTOUT=CNTOUT+1 W OUTPUT
SETPTID S HD="",FL=6-$L($P(DATA,"^",3)),HD=$E(ZR,1,FL)_$P(DATA,"^",3),$P(DATA,"^",3)=HD
SETMGID S HD1="",FL=6-$L($P(DATA,"^",4)),HD1=$E(ZR,1,FL)_$P(DATA,"^",4)
U PR
I $L($P(DATA,"^",5))>2 W !!,$P(DATA,"^",2)," ",$P($T(RG3DESC+1),";",3),!,DATA S CMTERR=CNTERR+1 G READRG3
I $L($P(DATA,"^",6))>1 W !!,$P(DATA,"^",2)," ",$P($T(RG3DESC+2),";",3),!,DATA S CNTERR=CNTERR+1 G READRG3
I $L($P(DATA,"^",3))>6 W !!,$P(DATA,"^",2)," ",$P($T(RG3DESC+3),";",3),!,DATA S CNTERR=CNTERR+1 G READRG3
U 48
BLDDTL S OUTPUT="?"_$P(DATA,"^",5)_$P(DATA,"^",6)_"RRR"_$P(DATA,"^",3)_"99R"_$E(DATE,2,7)_"*** 2"_$E($P(DATA,"^",2),5,6)_$E(BLKS,1,43) D:HD1'=ZR BLDMRGID S CNTOUT=CNTOUT+1 W OUTPUT
G READRG3
BLDMRGID ;SET MERGE ID IN OUTPUT RECORD
S OUTPUT=$E(OUTPUT,1,25)_"RRR"_HD1_$E(OUTPUT,35,80)
Q
FINISH ;
S T=$P($H,",",2)-$P(STRTTIME,",",2)
S S=T#60
S X=T\60
S H=X\60
S M=X#60
U 0 W !!,"RUN TIME ",H," ",M," ",S
LASTOUT ;
U PR
W !,"RECORDS INPUT ",CNTIN
W !,"RECORDS OUTPUT ",CNTOUT
W !,"RECORDS REJECTED ",CNTERR
W !!,"TOTAL (RG1/RG2) RECORDS ",RG12
W !!,"TOTAL (RG3) RECORDS ",RG3
S RG12=RG12+RG3
W !!,"TOTAL RECORDS TO BE ENTERED"
W !,"INTO PCIS LOGBOOK ",RG12
W #,#
I $D(^REGRG3) U 48 W *3 W *5 C 48
U 0
W !!,"RECORDS INPUT ",CNTIN
W !,"RECORDS OUTPUT ",CNTOUT
W !,"RECORDS REJECTED ",CNTERR
W !,"DELETE/MERGE RECORDS ",RG3
W !!,"TOTHE DELETE/MERGE PROCESS WILL CREATE MULTIPLE HEADERS AS FACILITIES CHANGE"
W !!,"TOTAL RECORDS (RG1/RG2) AND RG3 ",RG12,", SHOULD EQUAL AREA COUNT"
W !!,"END OF PROCESSING" C PR Q
SKPIT I $P($T(TABLE+DISP+1),";",6) S CNTERR=CNTERR+1,AGN="X"
E S OUTPUT=OUTPUT_$E($P(INPUT,"^",I+1),1,$P($T(TABLE+DISP+I),";",4))
Q
TABLE ;1ST FIELD IS POSITION IN OUTPUT RECORD 2ND IS INPUT FIELD LENGTH
RG1DESC ;;005;06;FACILITY CODE
;;011;06;UNIT RECORD NUMBER;;S1
;;017;20;LAST NAME;X
;;037;11;FIRST NAME;X
;;048;11;MIDDLE NAME;X
;;059;02;CLASSIFICATION CODE
;;061;07;DATE OF BIRTH
;;068;01;SEX
;;069;09;SOCIAL SECURITY NUMBER
;;078;03;TRIBE CODE
;;081;01;BLOOD QUANTUM
;;082;20;FATHER LAST NAME;X
;;102;11;FATHER FIRST NAME;X
;;113;01;FATHER MIDDLE INITIAL
;;114;07;COMMUNITY OF RESIDENCE
;;121;30;MAILING ADDRESS STREET;X;S2
;;151;15;MAILING ADDRESS TOWN;X;S3
;;166;02;MAILING ADDRESS STATE
;;168;09;MAILING ADDRESS ZIP
;;177;;END OF RG1 TABLESUB
RG2DESC ;;177;20;MOTHER NAME LAST;X
;;197;11;MOTHER NAME FIRST;X
;;208;01;MOTHER NAME MIDDLE INITIAL
;;209;06;DATE OF DEATH
;;215;01;MEDICARE A ELIGIBLE
;;216;14;MEDICARE A ENROLL NUMBER
;;225;01;MEDICARE A SUFFIX
;;230;06;MEDICARE A ELIGIBILTY
;;236;01;MEDCIARE B ELIGIBLE
;;237;14;MEDCIARE B ENROLL NUMBER
;;246;01;MEDCIARE B SUFFIX
;;251;06;MEDICARE B ELIGIBILITY
;;257;01;MEDICARE AB ELIGIBLE
;;258;14;MEDICARE AB ENROLL NUMBER
;;267;01;MEDICARE AB SUFFIX
;;272;06;MEDICARE AB ELIGIBILITY
;;278;01;MEDICAID ELIGIBLE
;;279;14;MEDICAID NUMBER
;;288;01;MEDICAID SUFFIX
;;293;06;MEDICAID ELIGIBILITY
;;299;01;VETERAN
;;300;01;BLUE CROSS ELIGIBALE
;;301;01;OTHER ELIGIBLE
;;302;01;CHS ELIGIBILITY
;;303;01;PATIENT SIGNED
;;304;01;ADD/MODIFY CODE
;;305;06;OPT/MM RELEASE DATE
;;311;;END OF RG2 TABLE
END ;END OF PROGRAM
RG3DESC ;;DELETE RECORD FORMAT
;;PIECE 5 IS INVALID - PATIENT INITIALS
;;PIECE 6 IS INVALID - PATIENT SEX
;;PIECE 3 IS INVALID - PATIENT ID