XUP807 ;SLC/JLA - XUXTAD Post-Installation Checks ; DEC 20, 2024@11:30
 ;;8.0;KERNEL;**807**;Dec 20, 2024;Build 56;
 D ENVCHK
 Q
 ;
 ;
 ; External API'S
 ;
 ; FileMan/ScreenMan API's
FIND1(AFILE,AIENS,AFLAGS,AVALUE,AINDEXES,ASCREEN,AMROOT) Q $$FIND1^DIC($G(AFILE),$G(AIENS),$G(AFLAGS),$G(AVALUE),$G(AINDEXES),$G(ASCREEN),$G(AMROOT))
GET1(AFILE,AIENS,AFIELD,AFLAGS,ATROOT,AMROOT) Q $$GET1^DIQ($G(AFILE),$G(AIENS),$G(AFIELD),$G(AFLAGS),$G(ATROOT),$G(AMROOT))
GETS(AFILE,AIENS,AFIELD,AFLAGS,ATROOT,AMROOT) D GETS^DIQ($G(AFILE),$G(AIENS),$G(AFIELD),$G(AFLAGS),$G(ATROOT),$G(AMROOT)) Q
GETFA(AFILE,AFIELD,AFLAGS,AATTRIBUTES,ATROOT,AMROOT) D FIELD^DID($G(AFILE),$G(AFIELD),$G(AFLAGS),$G(AATTRIBUTES),$G(ATROOT),$G(AMROOT)) Q
ADDMI(AMENUTEXT,AMENUITEMTEXT,ASYN) Q $$ADD^XPDMENU($G(AMENUTEXT),$G(AMENUITEMTEXT),$G(ASYN))
DELMI(AMENUTEXT,AMENUITEMTEXT) Q $$DELETE^XPDMENU($G(AMENUTEXT),$G(AMENUITEMTEXT))
SOOO(AMENUTEXT,AOOOTEXT) D OUT^XPDMENU($G(AMENUTEXT),$G(AOOOTEXT)) Q
FMDIK D ^DIK Q
 ;
 ;
ENVCHK ;
 NEW RTNVAL
 S RTNVAL=$$PREINSTALL
 ;W !,RTNVAL,!
 Q
 ;
 ;
 ; The Env. Check Routine: PREINSTALL^XUP807 is called by KIDS prior to the 
 ; install to verify the following:
 ;   A. The FORM XUXTAD SERVICE/SECTION EDIT does NOT exists.
 ;   B. The OPTION XUXTAD SERVICE/SECTION EDIT does NOT exists.
 ;
 ; D PREINSTALL^XUP807(1)
PREINSTALL(AVERBOSE) ;
 NEW FORMNAME,FORMIEN,RTNVAL
 S VERBOSE=0,ROUTINE=25
 S:$L($G(AVERBOSE)) VERBOSE=$G(AVERBOSE)
 ; First, verify the new FORM does not exist
 S FORMNAME="XUXTAD SERVICE/SECTION EDIT"
 S FORMIEN=$$GETFIEN(FORMNAME)
 I VERBOSE W !,"FORMIEN: ",FORMIEN
 I FORMIEN D  G PREINSTALLDN
 . ; Abort all transport globals in the distribution and KILL them from ^XTMP
 . S XPDABORT=1
 . S RTNVAL="0^Form "_FORMNAME_" should NOT exist"
 ; Verify that the OPTION XSSE does NOT exists
 NEW XSSE,XSIEN
 S XSSE="XUXTAD SERVICE/SECTION EDIT"
 S XSIEN=$$GETMOIEN(XSSE)
 I VERBOSE W !,"XSIEN: ",XSIEN
 I XSIEN D  G PREINSTALLDN
 . ; Abort all transport globals in the distribution and KILL them from ^XTMP
 . S XPDABORT=1
 . S RTNVAL="0^Menu option "_XSSE_" should NOT exist"
 ; If we made it here then all is well
 S RTNVAL="1^Pre-Installation check is good"
PREINSTALLDN ;
 I VERBOSE W !!,"PREINSTALL^XUXTADPREI returning: ",RTNVAL
 D BMES^XPDUTL($P(RTNVAL,U,2))
 Q RTNVAL
 ;
 ;
 ; The Post Install Routine: POSTINSTALL^XUP807 is called by KIDS after the 
 ; install to verify the following:
 ;   A. The FORM 'XUXTAD SERVICE/SECTION EDIT' exists.
 ;   B. The OPTION 'XUXTAD SERVICE/SECTION EDIT' exists.
 ;   C. The OPTION 'XUXTAD SERVICE/SECTION EDIT' has Field 
 ;      ROUTINE="ENTER^XUXTADSSE".
 ;   D. If the OPTION 'R2XTAD SERVICE/SECTION EDIT' exists: 
 ;      Set OUT OF ORDER="Replaced by SSE  Service/Section Edit".
 ;   E. If the OPTION 'R2XTAD USER INFO MENU' exists:
 ;      Add 'XUXTAD SERVICE/SECTION EDIT' as MENU ITEM OPTION.
 ;      Delete 'R2XTAD SERVICE/SECTION EDIT' MENU ITEM OPTION if it exists.
 ;   F. The SERVICE/SECTION NAME field attributes: "HELP-PROMPT",
 ;      and "DESCRIPTION" have been updated.
 ; 
 ; D POSTINSTALL^XUP807(1)
POSTINSTALL(AVERBOSE) ;
 NEW FORMNAME,FORMIEN,RTNVAL,TROOT
 S TROOT="RUIMM",VERBOSE=0,RTNVAL=-1
 S:$L($G(AVERBOSE)) VERBOSE=$G(AVERBOSE)
 ; First, verify the new FORM 'XUXTAD SERVICE/SECTION EDIT' exists
 S FORMNAME="XUXTAD SERVICE/SECTION EDIT"
 S FORMIEN=$$GETFIEN(FORMNAME)
 I VERBOSE W !,"FORMIEN: ",FORMIEN
 I 'FORMIEN D  G POSTINSTALLDN
 . S RTNVAL="0^Form "_FORMNAME_" should exist"
 ; Verify that the OPTION 'XUXTAD SERVICE/SECTION EDIT' exists
 NEW XSSE,XSIEN
 S XSSE="XUXTAD SERVICE/SECTION EDIT"
 S XSIEN=$$GETMOIEN(XSSE)
 I VERBOSE W !,"XSIEN: ",XSIEN
 I 'XSIEN D  G POSTINSTALLDN
 . S RTNVAL="0^Menu option "_XSSE_" should exist"
 ; Verify that the OPTION XSSE has Field ROUTINE="ENTER^XUXTADSSE"
 NEW ROUTINEF S ROUTINEF=25
 NEW XROUTINE,XSSEOR
 S XSSEOR="ENTER^XUXTADSSE"
 S XROUTINE=$$GETMOF(XSIEN,ROUTINEF)
 I VERBOSE W !,"XROUTINE: ",XROUTINE
 I $G(XROUTINE)'=XSSEOR D  G POSTINSTALLDN
 . S RTNVAL="0^Menu option "_XSSE_", field ROUTINE should be: "_XSSEOR
 ; If the OPTION RSSE exists, set it OUT OF ORDER field
 NEW RSSE,RSIEN
 S RSSE="R2XTAD SERVICE/SECTION EDIT"
 S RSIEN=$$GETMOIEN(RSSE)
 I VERBOSE W !,"RSIEN: ",RSIEN
 I RSIEN D
 . N OOOM S OOOM="Replaced by SSE  Service/Section Edit"
 . I VERBOSE W !!,"Setting Out of Order for Option: "_RSSE_" to: "_OOOM
 . D SOOO(RSSE,OOOM)
 ; Next, verify the OPTION's
 ; If the OPTION RUIM exists:
 ;   Add XSSE as MENU ITEM OPTION
 ;   Delete RSSE MENU ITEM OPTION
 NEW RUIM,RUIEN
 S RUIM="R2XTAD USER INFO MENU"
 S RUIEN=$$GETMOIEN(RUIM)
 I VERBOSE W !,"RUIEN: ",RUIEN
 I RUIEN D
 . S RTNVAL=$$ADDMI(RUIM,XSSE,"SSE")
 . I 'RTNVAL S RTNVAL="0^Add Child menu item: "_XSSE_" to Option: "_RUIM_" unsuccessful"
 . I RTNVAL D
 .. I VERBOSE W !!,"Menu Item: "_XSSE_" added to: "_RUIM
 .. ; If the Menu Item exists then delete it
 .. I $$FNDMI(RUIEN,RSIEN) D
 ... S RTNVAL=$$DELMI(RUIM,RSSE)
 ... I 'RTNVAL S RTNVAL="0^Delete of Child menu item: "_RSSE_" from Option: "_RUIM_" unsuccessful"
 ... I RTNVAL&VERBOSE W !!,"Menu Item: "_RSSE_" deleted from: "_RUIM
 I 'RTNVAL G POSTINSTALLDN
 ; Verify the the SERVICE/SECTION NAME field attributes ("HELP-PROMPT","DESCRIPTION") have been updated
 N SSNAHP,SSNAD
 S SSNAHP="The NAME field must be 3-30 characters in length. It cannot contain numeric characters only, and it must not start with punctuation."
  S SSNAD="This is the name given to the service or the section within a service."
 S TROOT="SSNA"
 D GETFA(49,.01,"","HELP-PROMPT;DESCRIPTION",TROOT)
 I VERBOSE W !! ZW @TROOT
 I '$D(@TROOT@("HELP-PROMPT"))!'$D(@TROOT@("DESCRIPTION")) D  G POSTINSTALLDN
 . S RTNVAL="0^Could not read NAME attributes: HELP-PROMPT, DESCRIPTION"
 I '(@TROOT@("HELP-PROMPT")=SSNAHP)!'(@TROOT@("DESCRIPTION",1)=SSNAD) D  G POSTINSTALLDN
 . S RTNVAL="0^SERVICE/SECTION NAME attributes: HELP-PROMPT, DESCRIPTION were not updated"
 I VERBOSE W !!,"SERVICE/SECTION NAME attributes: HELP-PROMPT, DESCRIPTION were updated"
 ; If we made it here then all is well
 S RTNVAL="1^Post-Installation check is good"
POSTINSTALLDN ;
 I $D(@TROOT)>1 K @TROOT
 I VERBOSE W !!,"CHECK^XUP807 returning: ",RTNVAL
 D BMES^XPDUTL($P(RTNVAL,U,2))
 Q RTNVAL
 ;
 ;
 ; Get Form IEN
 ;
 ; S VERBOSE=0
 ; S AFORMNAME="XUXTAD SERVICE/SECTION EDIT" 
 ; W $$GETFIEN^XUP807(AFORMNAME)
GETFIEN(AFORMNAME) ;
 NEW FILE,FORMNAME,FIEN
 S FILE=.403,FIEN=-1
 S FORMNAME=$G(AFORMNAME)
 I VERBOSE W !,"GETFIEN^XUP807(OPTION: ",FORMNAME,")",!
 S FIEN=+$$FIND1(FILE,"","X",FORMNAME,"","","ERR")
 Q FIEN
 ;
 ;
 ; Get Menu Option IEN
 ;
 ; S VERBOSE=0
 ; S MENUOP="R2XTAD USER INFO MENU" 
 ; S MENUOP="R2XTAD SERVICE/SECTION EDIT" 
 ; S MENUOP="XUXTAD SERVICE/SECTION EDIT" 
 ; W $$GETMOIEN^XUP807(MENUOP)
GETMOIEN(AMO) ;
 NEW FILE,MO,MOIEN
 S FILE=19,MOIEN=-1
 S MO=$G(AMO)
 I VERBOSE W !,"GETMOIEN^XUP807(OPTION: ",MO,")",!
 S MOIEN=+$$FIND1(FILE,"","X",MO,"","","ERR")
 Q MOIEN
 ;
 ;
 ; Get Menu Option Field value
 ;
 ; S MOIEN=15173,MOF=25
 ; S MOIEN=15174,MOF=25
 ; S MOIEN=15213,MOF=25
 ; W $$GETMOF^XUP807(MOIEN,MOF)
GETMOF(AMOIEN,AMOF) ;
 NEW FILE,MOIEN,MOF,FV
 S FILE=19,FV=""
 S MOIEN=+$G(AMOIEN)
 S MOF=+$G(AMOF)
 I VERBOSE W !,"GETMOF^XUP807(IEN: ",MOIEN,", FIELD: ",MOF,")",!
 S FV=$$GET1(FILE,""_MOIEN_",",MOF)
 Q FV
 ;
 ;
 ; Get All Menu Option multiples
 ;
 ; S MOIEN=15173,ROOT="MROOT"
 ; D $$GETALLM^XUP807(MOIEN,ROOT)
GETALLM(AMOIEN,ATROOT) ;
 NEW FILE,MOIEN,TROOT
 S FILE=19
 S MOIEN=+$G(AMOIEN)
 S TROOT=$G(ATROOT)
 I VERBOSE W !,"GETALLM^XUP807(IEN: ",MOIEN,", TROOT: ",TROOT,")",!
 D GETS(FILE,""_MOIEN_",","10*","I",TROOT)
 Q
 ;
 ; S MENUOP="R2XTAD USER INFO MENU"
 ; S AMENUIEN=$$GETMOIEN^XUP807(MENUOP)
 ; S MENUOP="R2XTAD SERVICE/SECTION EDIT"
 ; S AMENUITEMIEN=$$GETMOIEN^XUP807(MENUOP)
 ; W $$FNDMI^XUP807(AMENUIEN,AMENUITEMIEN)
FNDMI(AMENUIEN,AMENUITEMIEN) ;
 NEW MENUIEN,MENUITEMIEN,RTNVAL,NODE,MIIEN,TROOT,FOUNDMI
 S MENUIEN=$G(AMENUIEN),MENUITEMIEN=$G(AMENUITEMIEN),FOUNDMI=0
 I VERBOSE W !,"FNDMI^XUP807(AMENUIEN: ",MENUIEN,", AMENUITEMIEN: ",MENUITEMIEN,")",!
 I 'MENUIEN D  G FNDMIDN
 . S RTNVAL="0^Menu option IEN: "_MENUIEN_" invalid"
 I 'MENUITEMIEN D  G FNDMIDN
 . S RTNVAL="0^Menu item option IEN: "_MENUITEMIEN_" invalid"
 S TROOT="RUIMM",RTNVAL="0^Menu item option: "_MENUITEMIEN_" not found"
 D GETALLM(MENUIEN,TROOT)
 I VERBOSE W !! ZW @TROOT
 S NODE=""
 F  S NODE=$O(@TROOT@(19.01,NODE)) Q:'NODE!FOUNDMI  D
 . S MIIEN=$$GET1(19.01,NODE,.01,"I")
 . I VERBOSE W !,"NODE: ",NODE,", MENU ITEM IEN: ",MIIEN
 . I MIIEN=MENUITEMIEN S FOUNDMI=$P(NODE,",") I VERBOSE W !,"FOUND MENUITEMIEN: ",MENUITEMIEN,", NODE=",FOUNDMI
 I FOUNDMI S RTNVAL="1^Menu item option: "_MENUITEMIEN_" found"
FNDMIDN ;
 I $D(@TROOT)>1 K @TROOT
 I VERBOSE W !!,"FNDMI^XUP807 returning: ",RTNVAL,!!
 Q RTNVAL
 ;
 ;
 ; Delete the Option Menu Item Record with IEN: AMITEMIEN,
 ; from Option with IEN: AMITEMIEN in the Option file (19)
 ; 
 ;   AOPTIONIEN  - A OPTION IEN
 ;   AMITEMIEN   - A MENU ITEM IEN
 ;
 ; Returns
 ;   0^Error message when an error occurs
 ;   1^Success message
 ; 
 ; W $$DOPTNMITM^XUP807(15173,12)
DOPTNMITM(AOPTIONIEN,AMITEMIEN) ;
 NEW OPTIONIEN,ITEMIEN,ITEMDELETED,OPTIONFILE,MENUNODE
 NEW DIK,DA
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 I VERBOSE W !,"DOPTNITM^XUXTADSSEF(",$G(AOPTIONIEN),",",$G(AMITEMIEN),") Called"
 S ITEMDELETED=0
 S OPTIONIEN=+$G(AOPTIONIEN)
 S OPTIONFILE=19 ; File number of SERVICE/SECTION file
 S MENUNODE=10  ; ITEM node
 S ITEMIEN=+$G(AMITEMIEN)
 I (ITEMIEN'>0) D  G DOPTNMITMDN
 . S ITEMDELETED="0^Invalid ITEM IEN: "_ITEMIEN
 S DA=ITEMIEN,DA(1)=OPTIONIEN
 S DIK="^DIC("_OPTIONFILE_","_OPTIONIEN_","_MENUNODE_","    ; Global root of subfile
 I VERBOSE W !,"DIK: ",DIK,! ZW DA
 D FMDIK
 S ITEMDELETED="1^Option IEN:"_OPTIONIEN_", Menu Item IEN: "_ITEMIEN_" record deleted."
DOPTNMITMDN ;
 I VERBOSE W !,"DOPTNITM^XUXTADSSEF Exiting  Response: ",ITEMDELETED,!!
 Q ITEMDELETED
 ;
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUP807   10149     printed  Sep 23, 2025@19:47:43                                                                                                                                                                                                     Page 2
XUP807    ;SLC/JLA - XUXTAD Post-Installation Checks ; DEC 20, 2024@11:30
 +1       ;;8.0;KERNEL;**807**;Dec 20, 2024;Build 56;
 +2        DO ENVCHK
 +3        QUIT 
 +4       ;
 +5       ;
 +6       ; External API'S
 +7       ;
 +8       ; FileMan/ScreenMan API's
FIND1(AFILE,AIENS,AFLAGS,AVALUE,AINDEXES,ASCREEN,AMROOT)  QUIT $$FIND1^DIC($GET(AFILE),$GET(AIENS),$GET(AFLAGS),$GET(AVALUE),$GET(AINDEXES),$GET(ASCREEN),$GET(AMROOT))
GET1(AFILE,AIENS,AFIELD,AFLAGS,ATROOT,AMROOT)  QUIT $$GET1^DIQ($GET(AFILE),$GET(AIENS),$GET(AFIELD),$GET(AFLAGS),$GET(ATROOT),$GET(AMROOT))
GETS(AFILE,AIENS,AFIELD,AFLAGS,ATROOT,AMROOT)  DO GETS^DIQ($GET(AFILE),$GET(AIENS),$GET(AFIELD),$GET(AFLAGS),$GET(ATROOT),$GET(AMROOT))
           QUIT 
GETFA(AFILE,AFIELD,AFLAGS,AATTRIBUTES,ATROOT,AMROOT)  DO FIELD^DID($GET(AFILE),$GET(AFIELD),$GET(AFLAGS),$GET(AATTRIBUTES),$GET(ATROOT),$GET(AMROOT))
           QUIT 
ADDMI(AMENUTEXT,AMENUITEMTEXT,ASYN)  QUIT $$ADD^XPDMENU($GET(AMENUTEXT),$GET(AMENUITEMTEXT),$GET(ASYN))
DELMI(AMENUTEXT,AMENUITEMTEXT)  QUIT $$DELETE^XPDMENU($GET(AMENUTEXT),$GET(AMENUITEMTEXT))
SOOO(AMENUTEXT,AOOOTEXT)  DO OUT^XPDMENU($GET(AMENUTEXT),$GET(AOOOTEXT))
           QUIT 
FMDIK      DO ^DIK
           QUIT 
 +1       ;
 +2       ;
ENVCHK    ;
 +1        NEW RTNVAL
 +2        SET RTNVAL=$$PREINSTALL
 +3       ;W !,RTNVAL,!
 +4        QUIT 
 +5       ;
 +6       ;
 +7       ; The Env. Check Routine: PREINSTALL^XUP807 is called by KIDS prior to the 
 +8       ; install to verify the following:
 +9       ;   A. The FORM XUXTAD SERVICE/SECTION EDIT does NOT exists.
 +10      ;   B. The OPTION XUXTAD SERVICE/SECTION EDIT does NOT exists.
 +11      ;
 +12      ; D PREINSTALL^XUP807(1)
PREINSTALL(AVERBOSE) ;
 +1        NEW FORMNAME,FORMIEN,RTNVAL
 +2        SET VERBOSE=0
           SET ROUTINE=25
 +3        if $LENGTH($GET(AVERBOSE))
               SET VERBOSE=$GET(AVERBOSE)
 +4       ; First, verify the new FORM does not exist
 +5        SET FORMNAME="XUXTAD SERVICE/SECTION EDIT"
 +6        SET FORMIEN=$$GETFIEN(FORMNAME)
 +7        IF VERBOSE
               WRITE !,"FORMIEN: ",FORMIEN
 +8        IF FORMIEN
               Begin DoDot:1
 +9       ; Abort all transport globals in the distribution and KILL them from ^XTMP
 +10               SET XPDABORT=1
 +11               SET RTNVAL="0^Form "_FORMNAME_" should NOT exist"
               End DoDot:1
               GOTO PREINSTALLDN
 +12      ; Verify that the OPTION XSSE does NOT exists
 +13       NEW XSSE,XSIEN
 +14       SET XSSE="XUXTAD SERVICE/SECTION EDIT"
 +15       SET XSIEN=$$GETMOIEN(XSSE)
 +16       IF VERBOSE
               WRITE !,"XSIEN: ",XSIEN
 +17       IF XSIEN
               Begin DoDot:1
 +18      ; Abort all transport globals in the distribution and KILL them from ^XTMP
 +19               SET XPDABORT=1
 +20               SET RTNVAL="0^Menu option "_XSSE_" should NOT exist"
               End DoDot:1
               GOTO PREINSTALLDN
 +21      ; If we made it here then all is well
 +22       SET RTNVAL="1^Pre-Installation check is good"
PREINSTALLDN ;
 +1        IF VERBOSE
               WRITE !!,"PREINSTALL^XUXTADPREI returning: ",RTNVAL
 +2        DO BMES^XPDUTL($PIECE(RTNVAL,U,2))
 +3        QUIT RTNVAL
 +4       ;
 +5       ;
 +6       ; The Post Install Routine: POSTINSTALL^XUP807 is called by KIDS after the 
 +7       ; install to verify the following:
 +8       ;   A. The FORM 'XUXTAD SERVICE/SECTION EDIT' exists.
 +9       ;   B. The OPTION 'XUXTAD SERVICE/SECTION EDIT' exists.
 +10      ;   C. The OPTION 'XUXTAD SERVICE/SECTION EDIT' has Field 
 +11      ;      ROUTINE="ENTER^XUXTADSSE".
 +12      ;   D. If the OPTION 'R2XTAD SERVICE/SECTION EDIT' exists: 
 +13      ;      Set OUT OF ORDER="Replaced by SSE  Service/Section Edit".
 +14      ;   E. If the OPTION 'R2XTAD USER INFO MENU' exists:
 +15      ;      Add 'XUXTAD SERVICE/SECTION EDIT' as MENU ITEM OPTION.
 +16      ;      Delete 'R2XTAD SERVICE/SECTION EDIT' MENU ITEM OPTION if it exists.
 +17      ;   F. The SERVICE/SECTION NAME field attributes: "HELP-PROMPT",
 +18      ;      and "DESCRIPTION" have been updated.
 +19      ; 
 +20      ; D POSTINSTALL^XUP807(1)
POSTINSTALL(AVERBOSE) ;
 +1        NEW FORMNAME,FORMIEN,RTNVAL,TROOT
 +2        SET TROOT="RUIMM"
           SET VERBOSE=0
           SET RTNVAL=-1
 +3        if $LENGTH($GET(AVERBOSE))
               SET VERBOSE=$GET(AVERBOSE)
 +4       ; First, verify the new FORM 'XUXTAD SERVICE/SECTION EDIT' exists
 +5        SET FORMNAME="XUXTAD SERVICE/SECTION EDIT"
 +6        SET FORMIEN=$$GETFIEN(FORMNAME)
 +7        IF VERBOSE
               WRITE !,"FORMIEN: ",FORMIEN
 +8        IF 'FORMIEN
               Begin DoDot:1
 +9                SET RTNVAL="0^Form "_FORMNAME_" should exist"
               End DoDot:1
               GOTO POSTINSTALLDN
 +10      ; Verify that the OPTION 'XUXTAD SERVICE/SECTION EDIT' exists
 +11       NEW XSSE,XSIEN
 +12       SET XSSE="XUXTAD SERVICE/SECTION EDIT"
 +13       SET XSIEN=$$GETMOIEN(XSSE)
 +14       IF VERBOSE
               WRITE !,"XSIEN: ",XSIEN
 +15       IF 'XSIEN
               Begin DoDot:1
 +16               SET RTNVAL="0^Menu option "_XSSE_" should exist"
               End DoDot:1
               GOTO POSTINSTALLDN
 +17      ; Verify that the OPTION XSSE has Field ROUTINE="ENTER^XUXTADSSE"
 +18       NEW ROUTINEF
           SET ROUTINEF=25
 +19       NEW XROUTINE,XSSEOR
 +20       SET XSSEOR="ENTER^XUXTADSSE"
 +21       SET XROUTINE=$$GETMOF(XSIEN,ROUTINEF)
 +22       IF VERBOSE
               WRITE !,"XROUTINE: ",XROUTINE
 +23       IF $GET(XROUTINE)'=XSSEOR
               Begin DoDot:1
 +24               SET RTNVAL="0^Menu option "_XSSE_", field ROUTINE should be: "_XSSEOR
               End DoDot:1
               GOTO POSTINSTALLDN
 +25      ; If the OPTION RSSE exists, set it OUT OF ORDER field
 +26       NEW RSSE,RSIEN
 +27       SET RSSE="R2XTAD SERVICE/SECTION EDIT"
 +28       SET RSIEN=$$GETMOIEN(RSSE)
 +29       IF VERBOSE
               WRITE !,"RSIEN: ",RSIEN
 +30       IF RSIEN
               Begin DoDot:1
 +31               NEW OOOM
                   SET OOOM="Replaced by SSE  Service/Section Edit"
 +32               IF VERBOSE
                       WRITE !!,"Setting Out of Order for Option: "_RSSE_" to: "_OOOM
 +33               DO SOOO(RSSE,OOOM)
               End DoDot:1
 +34      ; Next, verify the OPTION's
 +35      ; If the OPTION RUIM exists:
 +36      ;   Add XSSE as MENU ITEM OPTION
 +37      ;   Delete RSSE MENU ITEM OPTION
 +38       NEW RUIM,RUIEN
 +39       SET RUIM="R2XTAD USER INFO MENU"
 +40       SET RUIEN=$$GETMOIEN(RUIM)
 +41       IF VERBOSE
               WRITE !,"RUIEN: ",RUIEN
 +42       IF RUIEN
               Begin DoDot:1
 +43               SET RTNVAL=$$ADDMI(RUIM,XSSE,"SSE")
 +44               IF 'RTNVAL
                       SET RTNVAL="0^Add Child menu item: "_XSSE_" to Option: "_RUIM_" unsuccessful"
 +45               IF RTNVAL
                       Begin DoDot:2
 +46                       IF VERBOSE
                               WRITE !!,"Menu Item: "_XSSE_" added to: "_RUIM
 +47      ; If the Menu Item exists then delete it
 +48                       IF $$FNDMI(RUIEN,RSIEN)
                               Begin DoDot:3
 +49                               SET RTNVAL=$$DELMI(RUIM,RSSE)
 +50                               IF 'RTNVAL
                                       SET RTNVAL="0^Delete of Child menu item: "_RSSE_" from Option: "_RUIM_" unsuccessful"
 +51                               IF RTNVAL&VERBOSE
                                       WRITE !!,"Menu Item: "_RSSE_" deleted from: "_RUIM
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +52       IF 'RTNVAL
               GOTO POSTINSTALLDN
 +53      ; Verify the the SERVICE/SECTION NAME field attributes ("HELP-PROMPT","DESCRIPTION") have been updated
 +54       NEW SSNAHP,SSNAD
 +55       SET SSNAHP="The NAME field must be 3-30 characters in length. It cannot contain numeric characters only, and it must not start with punctuation."
 +56       SET SSNAD="This is the name given to the service or the section within a service."
 +57       SET TROOT="SSNA"
 +58       DO GETFA(49,.01,"","HELP-PROMPT;DESCRIPTION",TROOT)
 +59       IF VERBOSE
               WRITE !!