XLFNAME5 ;SFISC/MKO-INTERACTIVE OPTION TO CONVERT NAMES ;11:32 AM  28 Jan 2000
 ;;8.0;KERNEL;**134**;Jul 10, 1995
CONVERT ;Convert Names
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,XUIEN,XUNMSP,X,Y
 S XUNMSP="XLFNAME"
 ;
 D CINTRO
 S DIR(0)="YO",DIR("A")="Do you wish to continue"
 S DIR("?",1)="  Enter 'Y' to convert the Names in the New Person file"
 S DIR("?",2)="  to standard form, and to store the component parts of"
 S DIR("?")="  the Names in the new Name Components file."
 W ! D ^DIR K DIR Q:$D(DIRUT)!'Y
 ;
 ;Check if the conversion was already run.
 ;Determine which record to start with.
 S XUIEN=+$P($G(^XTMP(XUNMSP,0)),U,4)
 I XUIEN D  Q:$D(DIRUT)
 . I $O(^VA(200,XUIEN)) D
 .. W !!,"It appears that the conversion has already been performed through"
 .. W !,"record #"_XUIEN_" in the New Person file."
 .. W !!,"Do you want to continue the conversion from after this point"
 .. W !,"or convert the entries from the beginning of the file."
 .. S DIR(0)="S^C:Continue the conversion after record #"_XUIEN_";S:Start again from the beginning of the file"
 .. S DIR("?",1)="  Enter 'C' to start the conversion and parsing process from the"
 .. S DIR("?",2)="  after record #"_XUIEN_" in the New Person file."
 .. S DIR("?",3)=" "
 .. S DIR("?",4)="  Enter 'B' to start the conversion and parsing process from the"
 .. S DIR("?",5)="  the beginning of the New Person file."
 .. S DIR("?",6)=" "
 .. S DIR("?",7)="  NOTE: There is no harm in running the conversion again from the"
 .. S DIR("?",8)="  beginning. However, if the conversion routine previously parsed a name"
 .. S DIR("?",9)="  into its component parts incorrectly, and you corrected those problems"
 .. S DIR("?",10)="  by manually editing the name components, your corrections will be lost"
 .. S DIR("?")="  if you run the conversion again."
 .. D ^DIR K DIR Q:$D(DIRUT)
 .. S:Y="S" XUIEN=0
 . E  D
 .. W !!,"It appears that the conversion has already been performed on all entries"
 .. W !,"in the New person file.",!
 .. S DIR(0)="YO",DIR("A")="Do you want to run the conversion again"
 .. S DIR("?",1)="  Enter 'Y' if you wish to run the New Person Name conversion again."
 .. S DIR("?",2)=" "
 .. S DIR("?",3)="  NOTE: There is no harm in running the conversion again. However, if the"
 .. S DIR("?",4)="  conversion routine previously parsed a name into its component parts"
 .. S DIR("?",5)="  incorrectly, and you corrected those problems by manually editing the"
 .. S DIR("?",6)="  name components, your corrections will be lost if you run the conversion"
 .. S DIR("?")="  again."
 .. D ^DIR K DIR S:'Y DIRUT=1 Q:$D(DIRUT)
 .. S XUIEN=0
 ;
 D NEWPERS^XLFNAME3("CPR"_$E("K",'XUIEN),+XUIEN)
 S:$D(^XTMP(XUNMSP,0))#2 $P(^(0),U,3)="Created by CONVERT~XLFNAME"
 Q
 ;
CINTRO ;Print introductory comments
 ;;This routine will run the New Person Name Standardization conversion. It
 ;;will loop through the entries in the New Person file and:
 ;;
 ;;  1. Convert the Names (field #.01) in the New Person file to standard
 ;;     form.
 ;;
 ;;  2. Parse each Name into its component parts and store those parts
 ;;     in the new Name Components file (#20).
 ;;
 ;;  3. Establish a pointer from each New Person entry to the
 ;;     corresponding entry in the Name Components that contains the
 ;;     Name parts.
 ;;
 ;;  4. Record in ^XTMP all changes that were made, and any problems
 ;;     or questionable assumptions that are encountered in
 ;;     standardizing the name or parsing it into its component parts.
 ;;$$END
 N I,T F I=1:1 S T=$P($T(CINTRO+I),";;",2,999) Q:T="$$END"  W !,T
 Q
 ;
GENERATE ;Generate ^XTMP
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,XUIEN,XUNMSP,X,Y
 S XUNMSP="XLFNAME"
 ;
 D GINTRO
 S DIR(0)="YO",DIR("A")="Do you wish to continue"
 S DIR("?",1)="  Enter 'Y' to store information in ^XTMP about changes that"
 S DIR("?")="  will take place when the CONVERT^XLFNAME entry point is run."
 W ! D ^DIR K DIR Q:$D(DIRUT)!'Y
 ;
 ;Check if the conversion was already run.
 ;Determine which record to start with.
 I $P($G(^XTMP(XUNMSP,0)),U,4) D  Q:$D(DIRUT)
 . W !!,"It appears that the conversion of New Person Names (routine CONVERT^XLFNAME)"
 . W !,"has already been run. If you continue, the information already stored in"
 . W !,"^XTMP about records that have been converted will be lost.",!
 . S DIR(0)="YO",DIR("A")="Are you sure you wish to continue"
 . S DIR("?")="  Enter 'Y' if you wish to replace the information already in ^XTMP."
 . D ^DIR K DIR S:'Y DIRUT=1
 ;
 D NEWPERS^XLFNAME3("KR")
 S:$D(^XTMP(XUNMSP,0))#2 $P(^(0),U,3)="Created by GENERATE~XLFNAME"
 Q
 ;
GINTRO ;Print introductory comments
 ;;This entry point loops through the records in the New Person file and
 ;;determines the standard form of each Name. It also tries to determine the
 ;;component parts of the name. If the standard form of the name is different
 ;;from the current form, or if any questionable assumptions need to made in
 ;;determining the component parts of the name, information about that name
 ;;is stored in ^XTMP("XLFNAME"). You can later print the information stored
 ;;in ^XTMP via the PRINT^XLFNAME entry point.
 ;;
 ;;NOTE: This entry point makes no changes to the NEW PERSON file or the new
 ;;      NAME COMPONENTS file.
 ;;$$END
 N I,T F I=1:1 S T=$P($T(GINTRO+I),";;",2,999) Q:T="$$END"  W !,T
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXLFNAME5   5404     printed  Sep 23, 2025@19:39:02                                                                                                                                                                                                    Page 2
XLFNAME5  ;SFISC/MKO-INTERACTIVE OPTION TO CONVERT NAMES ;11:32 AM  28 Jan 2000
 +1       ;;8.0;KERNEL;**134**;Jul 10, 1995
CONVERT   ;Convert Names
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,XUIEN,XUNMSP,X,Y
 +2        SET XUNMSP="XLFNAME"
 +3       ;
 +4        DO CINTRO
 +5        SET DIR(0)="YO"
           SET DIR("A")="Do you wish to continue"
 +6        SET DIR("?",1)="  Enter 'Y' to convert the Names in the New Person file"
 +7        SET DIR("?",2)="  to standard form, and to store the component parts of"
 +8        SET DIR("?")="  the Names in the new Name Components file."
 +9        WRITE !
           DO ^DIR
           KILL DIR
           if $DATA(DIRUT)!'Y
               QUIT 
 +10      ;
 +11      ;Check if the conversion was already run.
 +12      ;Determine which record to start with.
 +13       SET XUIEN=+$PIECE($GET(^XTMP(XUNMSP,0)),U,4)
 +14       IF XUIEN
               Begin DoDot:1
 +15               IF $ORDER(^VA(200,XUIEN))
                       Begin DoDot:2
 +16                       WRITE !!,"It appears that the conversion has already been performed through"
 +17                       WRITE !,"record #"_XUIEN_" in the New Person file."
 +18                       WRITE !!,"Do you want to continue the conversion from after this point"
 +19                       WRITE !,"or convert the entries from the beginning of the file."
 +20                       SET DIR(0)="S^C:Continue the conversion after record #"_XUIEN_";S:Start again from the beginning of the file"
 +21                       SET DIR("?",1)="  Enter 'C' to start the conversion and parsing process from the"
 +22                       SET DIR("?",2)="  after record #"_XUIEN_" in the New Person file."
 +23                       SET DIR("?",3)=" "
 +24                       SET DIR("?",4)="  Enter 'B' to start the conversion and parsing process from the"
 +25                       SET DIR("?",5)="  the beginning of the New Person file."
 +26                       SET DIR("?",6)=" "
 +27                       SET DIR("?",7)="  NOTE: There is no harm in running the conversion again from the"
 +28                       SET DIR("?",8)="  beginning. However, if the conversion routine previously parsed a name"
 +29                       SET DIR("?",9)="  into its component parts incorrectly, and you corrected those problems"
 +30                       SET DIR("?",10)="  by manually editing the name components, your corrections will be lost"
 +31                       SET DIR("?")="  if you run the conversion again."
 +32                       DO ^DIR
                           KILL DIR
                           if $DATA(DIRUT)
                               QUIT 
 +33                       if Y="S"
                               SET XUIEN=0
                       End DoDot:2
 +34              IF '$TEST
                       Begin DoDot:2
 +35                       WRITE !!,"It appears that the conversion has already been performed on all entries"
 +36                       WRITE !,"in the New person file.",!
 +37                       SET DIR(0)="YO"
                           SET DIR("A")="Do you want to run the conversion again"
 +38                       SET DIR("?",1)="  Enter 'Y' if you wish to run the New Person Name conversion again."
 +39                       SET DIR("?",2)=" "
 +40                       SET DIR("?",3)="  NOTE: There is no harm in running the conversion again. However, if the"
 +41                       SET DIR("?",4)="  conversion routine previously parsed a name into its component parts"
 +42                       SET DIR("?",5)="  incorrectly, and you corrected those problems by manually editing the"
 +43                       SET DIR("?",6)="  name components, your corrections will be lost if you run the conversion"
 +44                       SET DIR("?")="  again."
 +45                       DO ^DIR
                           KILL DIR
                           if 'Y
                               SET DIRUT=1
                           if $DATA(DIRUT)
                               QUIT 
 +46                       SET XUIEN=0
                       End DoDot:2
               End DoDot:1
               if $DATA(DIRUT)
                   QUIT 
 +47      ;
 +48       DO NEWPERS^XLFNAME3("CPR"_$EXTRACT("K",'XUIEN),+XUIEN)
 +49       if $DATA(^XTMP(XUNMSP,0))#2
               SET $PIECE(^(0),U,3)="Created by CONVERT~XLFNAME"
 +50       QUIT 
 +51      ;
CINTRO    ;Print introductory comments
 +1       ;;This routine will run the New Person Name Standardization conversion. It
 +2       ;;will loop through the entries in the New Person file and:
 +3       ;;
 +4       ;;  1. Convert the Names (field #.01) in the New Person file to standard
 +5       ;;     form.
 +6       ;;
 +7       ;;  2. Parse each Name into its component parts and store those parts
 +8       ;;     in the new Name Components file (#20).
 +9       ;;
 +10      ;;  3. Establish a pointer from each New Person entry to the
 +11      ;;     corresponding entry in the Name Components that contains the
 +12      ;;     Name parts.
 +13      ;;
 +14      ;;  4. Record in ^XTMP all changes that were made, and any problems
 +15      ;;     or questionable assumptions that are encountered in
 +16      ;;     standardizing the name or parsing it into its component parts.
 +17      ;;$$END
 +18       NEW I,T
           FOR I=1:1
               SET T=$PIECE($TEXT(CINTRO+I),";;",2,999)
               if T="$$END"
                   QUIT 
               WRITE !,T
 +19       QUIT 
 +20      ;
GENERATE  ;Generate ^XTMP
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,XUIEN,XUNMSP,X,Y
 +2        SET XUNMSP="XLFNAME"
 +3       ;
 +4        DO GINTRO
 +5        SET DIR(0)="YO"
           SET DIR("A")="Do you wish to continue"
 +6        SET DIR("?",1)="  Enter 'Y' to store information in ^XTMP about changes that"
 +7        SET DIR("?")="  will take place when the CONVERT^XLFNAME entry point is run."
 +8        WRITE !
           DO ^DIR
           KILL DIR
           if $DATA(DIRUT)!'Y
               QUIT 
 +9       ;
 +10      ;Check if the conversion was already run.
 +11      ;Determine which record to start with.
 +12       IF $PIECE($GET(^XTMP(XUNMSP,0)),U,4)
               Begin DoDot:1
 +13               WRITE !!,"It appears that the conversion of New Person Names (routine CONVERT^XLFNAME)"
 +14               WRITE !,"has already been run. If you continue, the information already stored in"
 +15               WRITE !,"^XTMP about records that have been converted will be lost.",!
 +16               SET DIR(0)="YO"
                   SET DIR("A")="Are you sure you wish to continue"
 +17               SET DIR("?")="  Enter 'Y' if you wish to replace the information already in ^XTMP."
 +18               DO ^DIR
                   KILL DIR
                   if 'Y
                       SET DIRUT=1
               End DoDot:1
               if $DATA(DIRUT)
                   QUIT 
 +19      ;
 +20       DO NEWPERS^XLFNAME3("KR")
 +21       if $DATA(^XTMP(XUNMSP,0))#2
               SET $PIECE(^(0),U,3)="Created by GENERATE~XLFNAME"
 +22       QUIT 
 +23      ;
GINTRO    ;Print introductory comments
 +1       ;;This entry point loops through the records in the New Person file and
 +2       ;;determines the standard form of each Name. It also tries to determine the
 +3       ;;component parts of the name. If the standard form of the name is different
 +4       ;;from the current form, or if any questionable assumptions need to made in
 +5       ;;determining the component parts of the name, information about that name
 +6       ;;is stored in ^XTMP("XLFNAME"). You can later print the information stored
 +7       ;;in ^XTMP via the PRINT^XLFNAME entry point.
 +8       ;;
 +9       ;;NOTE: This entry point makes no changes to the NEW PERSON file or the new
 +10      ;;      NAME COMPONENTS file.
 +11      ;;$$END
 +12       NEW I,T
           FOR I=1:1
               SET T=$PIECE($TEXT(GINTRO+I),";;",2,999)
               if T="$$END"
                   QUIT 
               WRITE !,T
 +13       QUIT