A4A7161 ; GLRISC/REL - New Person File conversion ;5/4/89 14:27 ;
;;1.01
S U="^" W !!,"*** WARNING! *** This program will take all File 16 entries"
W !,"and add them to the New Person File. This conversion REQUIRES"
W !,"that the prior A5A5 File 3-16 linkage programs have been run."
D DT^DICRW S (NUM200,LAST200,PTR,TOT)=0
W !,"A VERIFY run will perform the same checks as the UPDATE run"
W !,"except that no entries are moved to the New Person file"
W !,"nor are any persons in File 16 added to File 3."
W !!,"You should run VERIFY first. Correct as many errors as"
W !,"possible and then make an UPDATE run which will move"
W !,"entries into the New Person File. The final step is the"
W !,"initialization of the files using A4A7INIT and re-indexing File 200."
P0 R !!,"Verify or Update run? VER// ",VER:DTIME Q:'$T!(VER["^") S:VER="" VER="V" I $P("VERIFY",VER,1)'="",$P("UPDATE",VER,1)'="" W *7," Enter V or U" G P0
S VER=$E(VER,1)
P1 W !!,"Pass 1 will be made through File 3 to make sure"
W !,"that the 3-16 pointer has a 16-3 back-pointer."
W !!,"Beginning Pass 1...",!
F K=.9:0 S K=$N(^DIC(3,K)) Q:K<1 D A1
I TOT,(PTR/TOT)>.7999 G P2
W *7,!!,"***** Less than 80% of your File 3 entries have pointers"
W !,"to File 16. It appears that your A5A5 initialization was"
W !,"never performed or was incomplete. We cannot continue with"
W !,"this ",$S(VER="V":"verification",1:"update")," until the A5A5 updating is complete.",! Q
P2 W !!,"During Pass 2 the File 16 pointer to File 3 will be checked"
W !,"as well as the File 3 to 16 back-pointer."
W !!,"Two possible error conditions may occur: the name in File 3"
W !,"may not match that in 16. Most likely this is the result of"
W !,"a typing error. A list of such mis-matches will be produced."
W !!,"A second condition is if more than one entry in File 16"
W !,"points to the same File 3 entry. Such cases are also listed.",!
I VER="U" W !,"File 200 entries will be created during this pass.",!,"If the File 3 name differs from that in 16, the File 3 name is used.",!
W !!,"Beginning Pass 2...",!
S (ERR1,ERR2)=0 K ^UTILITY($J)
F K=.9:0 S K=$N(^DIC(16,K)) Q:K<1 I $D(^DIC(16,K,"A3"))#2 D A2
D:ERR2 A22 K ^UTILITY($J)
G ^A4A7162
A1 S P16=$S($D(^DIC(3,K,0))#2:$P(^(0),"^",16),1:""),TOT=TOT+1 Q:P16<1
S P3=$S($D(^DIC(16,P16,"A3"))#2:^("A3"),1:""),PTR=PTR+1
Q:P3=K I P3>0 S $P(^DIC(3,K,0),"^",16)="" Q
I $D(^DIC(16,P16,0))#2 S ^DIC(16,P16,"A3")=K Q
S $P(^DIC(3,K,0),"^",16)="" Q
A2 S X0=$S($D(^DIC(16,K,0))#2:^(0),1:""),P3=+^("A3") I P3<1 K ^DIC(16,K,"A3") Q
S X3=$S($D(^DIC(3,P3,0))#2:^(0),1:"") I X3="" K ^DIC(16,K,"A3") Q
S P16=$P(X3,"^",16) I P16="" S $P(^DIC(3,P3,0),"^",16)=K,P16=K
S NAM3=$P(X3,"^",1),NAM16=$P(X0,"^",1),SSN=$P(X0,"^",9)
I $D(^UTILITY($J,P3)) S ^UTILITY($J,"E2",P3)=K,ERR2=ERR2+1 Q
G:NAM3=NAM16 A21
I 'ERR1 W !!?18,"File 3 - File 16 Name Mis-Matches",!,"File 3 #",?12,"File 3 Name",?45,"File 16 #",?57,"File 16 Name",!
S ERR1=ERR1+1 W !,+P3,?12,NAM3,?45,K,?57,NAM16
A21 S ^UTILITY($J,P3)=K I VER="U" D ADD200
Q
A22 W !!?8,"File 3 Entries pointed to by More than 1 File 16 Entry"
W !,"File 3 #",?12,"File 3 Name",?45,"File 16 #",?57,"File 16 Name",!
F P3=0:0 S P3=$N(^UTILITY($J,"E2",P3)) Q:P3<1 S K2=^(P3) D A23
Q
A23 S K1=^UTILITY($J,P3),NAM3=$S($D(^DIC(3,P3,0))#2:$P(^(0),"^",1),1:"")
W !!,P3,?12,NAM3,?45,K1,?57,$S($D(^DIC(16,K1,0))#2:$P(^(0),"^",1),1:"")
W !?45,K2,?57,$S($D(^DIC(16,K2,0))#2:$P(^(0),"^",1),1:"") Q
ADD200 Q:$D(^VA(200,P3)) Q:NAM3="" S NUM200=NUM200+1,LAST200=P3
AD1 I NAM3[", " S NAM3=$P(NAM3,", ",1)_","_$P(NAM3,", ",2,99) G AD1
S ^VA(200,P3,0)=NAM3
S:SSN'="" $P(^VA(200,P3,1),"^",9)=SSN Q
A4A7161 ; GLRISC/REL - New Person File conversion ;5/4/89 14:27 ;
+1 ;;1.01
+2 SET U="^"
WRITE !!,"*** WARNING! *** This program will take all File 16 entries"
+3 WRITE !,"and add them to the New Person File. This conversion REQUIRES"
+4 WRITE !,"that the prior A5A5 File 3-16 linkage programs have been run."
+5 DO DT^DICRW
SET (NUM200,LAST200,PTR,TOT)=0
+6 WRITE !,"A VERIFY run will perform the same checks as the UPDATE run"
+7 WRITE !,"except that no entries are moved to the New Person file"
+8 WRITE !,"nor are any persons in File 16 added to File 3."
+9 WRITE !!,"You should run VERIFY first. Correct as many errors as"
+10 WRITE !,"possible and then make an UPDATE run which will move"
+11 WRITE !,"entries into the New Person File. The final step is the"
+12 WRITE !,"initialization of the files using A4A7INIT and re-indexing File 200."
P0 READ !!,"Verify or Update run? VER// ",VER:DTIME
IF '$TEST!(VER["^")
QUIT
IF VER=""
SET VER="V"
IF $PIECE("VERIFY",VER,1)'=""
IF $PIECE("UPDATE",VER,1)'=""
WRITE *7," Enter V or U"
GOTO P0
+1 SET VER=$EXTRACT(VER,1)
P1 WRITE !!,"Pass 1 will be made through File 3 to make sure"
+1 WRITE !,"that the 3-16 pointer has a 16-3 back-pointer."
+2 WRITE !!,"Beginning Pass 1...",!
+3 FOR K=.9:0