Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XUXTADAPI2

XUXTADAPI2.m

Go to the documentation of this file.
XUXTADAPI2 ;SLC/JLA - Service/Section Edit API's ; NOV 27, 2024@12:30
 ;;8.0;KERNEL;**807**;Nov 27, 2024;Build 56;
 ;
 ;
 ; External API'S
GASSIFM(AXUXTADSSIA) D GASSIFM^XUXTADAPI($G(AXUXTADSSIA)) Q
GASSINFM(AXUXTADSSIA) D GASSINFM^XUXTADAPI($G(AXUXTADSSIA)) Q
SHOWA(AXUXTADHEADER,ANXUXTADARRAY) D SHOWA^XUXTADAPI($G(AXUXTADHEADER),$G(ANXUXTADARRAY)) Q
 ;
 ; FileMan/ScreenMan API's
GET1(AFILE,AIENS,AFIELD,AFLAGS,ATROOT,AMROOT) Q $$GET1^DIQ($G(AFILE),$G(AIENS),$G(AFIELD),$G(AFLAGS),$G(ATROOT),$G(AMROOT))
LIST(AFILE,AIENS,AFIELD,AFLAGS,AMAX,AFROM,APART,AINDEX,ASCREEN,AIDENTIFIER,ATROOT,AMROOT) D LIST^DIC($G(AFILE),$G(AIENS),$G(AFIELD),$G(AFLAGS),$G(AMAX),$G(AFROM),$G(APART),$G(AINDEX),$G(ASCREEN),$G(AIDENTIFIER),$G(ATROOT),$G(AMROOT)) Q
 ;
 ;
 ; API's available to show data:
 ;   D SHOWAUSS^XUXTADAPI2()    - Show All User Service/Section's
 ;   D SHOWASSUC^XUXTADAPI2()   - Show All Service/Section's User Counts
 ;   D SHOWAUANESS^XUXTADAPI2() - Show All User Assigned to Non-existent Service/Section
 ;   D SHOWAUASS^XUXTADAPI2(AXUXTADSSIEN)
 ;     Show All Users Assigned to Service/Section with IEN: AXUXTADSSIEN
 ;   D SHOWASSNUA^XUXTADAPI2()  - Show All Service/Section with No Users Assigned
 ;
 ;
 ; Get All User Service/Section's using cross reference "E"
 ;
 ;   AXUXTADAUSSA - An array to hold the results
 ;
 ; Uses Database Server API
 ;   LIST^DIC(file[,iens][,fields][,flags][,number][,[.]from][,[.]part][,index][,[.]screen][,identifier][,target_root][,msg_root])
 ;
 ; S XUXTADAUSSA="AUSSA" 
 ; W $$GAUSSXFM^XUXTADAPI2(XUXTADAUSSA)
GAUSSXFM(AXUXTADAUSSA) ;
 NEW XUXTADSSIEN,XUXTADRTNVAL,XUXTADAUSSA
 NEW FILE,FIELDS,FLAGS,MAX,FROM,PART,INDEX,TROOT
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 ;I VERBOSE W !,"GAUSSXFM^XUXTADAPI2(",$G(AXUXTADAUSSA),") Called"
 ;I VERBOSE W !,"Get all User Service/Section's"
 S XUXTADRTNVAL=1
 S XUXTADAUSSA=$G(AXUXTADAUSSA)
 I $L(XUXTADAUSSA)'>0 D  G GAUSSXFMDN
 . S XUXTADRTNVAL="0^Results array AXUXTADAUSSA is not valid"
 K @XUXTADAUSSA
 S @XUXTADAUSSA=0,XUXTADSSIEN=0
 S FILE=200,FIELDS="29;@",FLAGS="I",MAX=2,FROM=XUXTADSSIEN,INDEX="E",TROOT="GAUSSXFMFMD"
 S DONE=0
 F  D LIST(FILE,,FIELDS,FLAGS,MAX,FROM,,INDEX,,,TROOT) Q:DONE  D
 . S XUXTADSSIEN=+$G(@TROOT@("DILIST","ID",1,29))
 . I 'XUXTADSSIEN S DONE=1 Q
 . I '$D(@XUXTADAUSSA@(XUXTADSSIEN)) S @XUXTADAUSSA@(XUXTADSSIEN)="",@XUXTADAUSSA=@XUXTADAUSSA+1
 . S FROM=XUXTADSSIEN
 S XUXTADRTNVAL=@XUXTADAUSSA
GAUSSXFMDN ;
 ;I VERBOSE W !,"GAUSSXFM^XUXTADAPI2 Exiting, Response: ",XUXTADRTNVAL,! ZW @XUXTADAUSSA
 K @TROOT
 Q XUXTADRTNVAL
 ;
 ; 
 ; Show All User Service/Section's
 ;
 ; D SHOWAUSS^XUXTADAPI2
SHOWAUSS() ;
 N XUXTADAUSS,XUXTADRTNVAL,XUXTADHEADER
 S XUXTADAUSS="SHOWAUSS"
 S XUXTADRTNVAL=$$GAUSSXFM(XUXTADAUSS)
 S XUXTADHEADER="All User Service/Sections:"
 D SHOWA(XUXTADHEADER,XUXTADAUSS)
 K @XUXTADAUSS
 Q
 ;
 ;
 ; Get All Service/Section's Assigned User Counts and save in Array: AXUXTADSSAA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ;
 ; Returns AXUXTADSSAA populated with Service/Section's that have users assigned 
 ;         and the number of user's assigned to each of those service/sections
 ;
 ;   AXUXTADSSAA   - An array to hold the results
 ;
 ; S XUXTADSSAA="SSA" 
 ; W $$GASSAX^XUXTADAPI2(XUXTADSSAA)
GASSAX(AXUXTADSSAA) ;
 NEW XUXTADSSIEN,XUXTADUIEN,XUXTADSSAA,XUXTADSSCNT,XUXTADUCNT,XUXTADRTNVAL
 S XUXTADSSAA=$G(AXUXTADSSAA)
 I $L(XUXTADSSAA)'>0 D  G GSSAXDN
 . S XUXTADRTNVAL="0^Results array parameter AXUXTADSSAA is not valid"
 S (XUXTADSSCNT,XUXTADUCNT)=0
 S XUXTADSSIEN=0
 F  S XUXTADSSIEN=$O(^VA(200,"E",XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . S XUXTADUIEN=0
 . F  S XUXTADUIEN=$O(^VA(200,"E",XUXTADSSIEN,XUXTADUIEN)) Q:'XUXTADUIEN  D
 .. S XUXTADUCNT=XUXTADUCNT+1
 .. I '$D(@XUXTADSSAA@(XUXTADSSIEN)) S @XUXTADSSAA@(XUXTADSSIEN)=1,XUXTADSSCNT=XUXTADSSCNT+1
 .. E  S @XUXTADSSAA@(XUXTADSSIEN)=@XUXTADSSAA@(XUXTADSSIEN)+1
 S (@XUXTADSSAA,XUXTADRTNVAL)=XUXTADSSCNT_"^"_XUXTADUCNT
GSSAXDN ;
 Q XUXTADRTNVAL
 ;
 ;
 ; Get All Service/Section's Assigned User Counts and save in Array: AXUXTADSSAA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ;
 ; Returns AXUXTADSSAA populated with Service/Section's that have users assigned 
 ;         along with the number of user's assigned to each of those service/sections
 ;
 ;   AXUXTADSSAA   - An array to hold the results
 ;
 ; S XUXTADSSAA="SSA" 
 ; W $$GASSAXFM^XUXTADAPI2(XUXTADSSAA)
GASSAXFM(AXUXTADSSAA) ;
 NEW XUXTADSSAA,XUXTADSSIEN,XUXTADSSIA,XUXTADSSCNT,XUXTADUCNT,XUXTADSSUA,XUXTADRTNVAL
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 ;I VERBOSE W !,"GASSAXFM^XUXTADAPI2(",$G(AXUXTADSSAA),") Called"
 ;I VERBOSE W !,"Get All Service/Section's Assigned User Counts"
 S XUXTADSSIA="GASSAXFMSSI",XUXTADSSUA="GASSAXFMSSU"
 S XUXTADSSAA=$G(AXUXTADSSAA)
 I $L(XUXTADSSAA)'>0 D  G GSSAXFMDN
 . S XUXTADRTNVAL="0^Results array parameter AXUXTADSSAA is not valid"
 K @XUXTADSSAA,@XUXTADSSIA
 S (@XUXTADSSAA,@XUXTADSSIA,XUXTADSSIEN,XUXTADSSCNT,XUXTADUCNT)=0
 ; Get all User Service/Sections
 D GAUSSXFM(XUXTADSSIA)
 F  S XUXTADSSIEN=$O(@XUXTADSSIA@(XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . ;I VERBOSE W !,"SSIEN: ",XUXTADSSIEN
 . K @XUXTADSSUA
 . S @XUXTADSSUA=0
 . S XUXTADRTNVAL=$$GSSUXFM(XUXTADSSIEN,XUXTADSSUA)
 . ;I VERBOSE W ", USER COUNT: ",@XUXTADSSUA,!
 . I @XUXTADSSUA>0 D
 .. S XUXTADSSCNT=XUXTADSSCNT+1,XUXTADUCNT=XUXTADUCNT+@XUXTADSSUA
 .. S @XUXTADSSAA@(XUXTADSSIEN)=@XUXTADSSUA
 S (@XUXTADSSAA,XUXTADRTNVAL)=XUXTADSSCNT_"^"_XUXTADUCNT
GSSAXFMDN ;
 ;I VERBOSE W !,"GASSAXFM^XUXTADAPI2 Exiting, Response: ",XUXTADRTNVAL,! ZW @XUXTADSSAA
 K @XUXTADSSIA,@XUXTADSSUA
 Q XUXTADRTNVAL
 ;
 ; 
 ; Show All Service/Section's User Counts
 ;
 ; D SHOWASSUC^XUXTADAPI2
SHOWASSUC() ;
 N XUXTADASSUC,XUXTADRTNVAL,XUXTADHEADER
 S XUXTADASSUC="SHOWASSUC"
 S XUXTADRTNVAL=$$GASSAXFM(XUXTADASSUC)
 S XUXTADHEADER="All Service/Section's User Counts:"
 D SHOWA(XUXTADHEADER,XUXTADASSUC)
 K @XUXTADASSUC
 Q
 ;
 ;
 ; Get all users assigned to non-existent Service/Section
 ;
 ; Returns the total number of users assigned to non-existent Service/Section's
 ;   and populates AXUXTADAUANSS with the non-existent Service/Section's IEN's and User IEN assigned to
 ;         non-existent Service/Section's
 ;
 ; S AXUXTADAUANSS="AUAN" 
 ; W $$GAUANESS^XUXTADAPI2(AXUXTADAUANSS)
GAUANESS(AXUXTADAUANSS) ;
 N XUXTADSSAA,XUXTADSSIEN,XUXTADUANSS,XUXTADSSUA,XUXTADUIEN,XUXTADRTNVAL
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 S XUXTADSSAA="GAUANESSSSA",XUXTADSSIEN=0
 S XUXTADUANSS=$G(AXUXTADAUANSS)
 I $L(XUXTADUANSS)'>0 D  G GAUANESSDN
 . S XUXTADRTNVAL="0^Results array parameter AXUXTADAUANSS is not valid"
 K @XUXTADSSAA
 S XUXTADRTNVAL=$$GASSAX(XUXTADSSAA)
 ;I VERBOSE W !,"GASSAX XUXTADRTNVAL: ",XUXTADRTNVAL,!
 I +XUXTADRTNVAL=0 G GAUANESSDN
 S @XUXTADUANSS=0
 F  S XUXTADSSIEN=$O(@XUXTADSSAA@(XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . ;I VERBOSE W !,"XUXTADSSIEN: ",XUXTADSSIEN
 . I $D(^DIC(49,XUXTADSSIEN)) Q
 . ;I VERBOSE W " DOES NOT EXIST IN ^DIC(49)"
 . S XUXTADUIEN=0
 . F  S XUXTADUIEN=$O(^VA(200,"E",XUXTADSSIEN,XUXTADUIEN)) Q:'XUXTADUIEN  D
 .. ;I VERBOSE W !,"USER: ",XUXTADUIEN
 .. S @XUXTADUANSS=@XUXTADUANSS+1,@XUXTADUANSS@(XUXTADSSIEN,XUXTADUIEN)=""
 S XUXTADRTNVAL=@XUXTADUANSS
GAUANESSDN ;
 K @XUXTADSSAA
 Q XUXTADRTNVAL
 ;
 ;
 ; Get all users assigned to non-existent Service/Section
 ;
 ; Returns the total number of users assigned to non-existent Service/Section's
 ;   and populates AXUXTADUANSS with the non-existent Service/Section's IEN's and User IEN assigned to
 ;         non-existent Service/Section's
 ;
 ; Uses Database Server API
 ;   $$GET1^DIQ(file,iens,field[,flags],target_root[,msg_root])
 ;
 ; S AXUXTADAUANSS="AUAN" 
 ; W $$GAUANESSFM^XUXTADAPI2(AXUXTADAUANSS)
GAUANESSFM(AXUXTADUANSS) ;
 NEW XUXTADUANSS,XUXTADSSAA,XUXTADSSIEN,XUXTADSSUA,XUXTADRTNVAL
 NEW FILE,FIELD
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 ;I VERBOSE W !,"GAUANESSFM^XUXTADAPI2(",$G(AXUXTADUANSS),") Called"
 ;I VERBOSE W !,"Get all Users Assigned to Non-existent Service/Section's"
 S XUXTADSSAA="GAUANESSFMSSA",XUXTADSSUA="GAUANESSFMSSU",XUXTADSSIEN=0
 S XUXTADUANSS=$G(AXUXTADUANSS)
 I $L(XUXTADUANSS)'>0 D  G GAUANESSFMDN
 . S XUXTADRTNVAL="0^Results array parameter AXUXTADUANSS is not valid"
 K @XUXTADSSAA
 S @XUXTADSSAA=0
 S XUXTADRTNVAL=$$GASSAXFM(XUXTADSSAA)
 ;I VERBOSE W !,"GASSAXFM XUXTADRTNVAL: ",XUXTADRTNVAL,!
 I +XUXTADRTNVAL=0 G GAUANESSFMDN
 K @XUXTADUANSS
 S @XUXTADUANSS=0,FILE=49,FIELD=.01
 F  S XUXTADSSIEN=$O(@XUXTADSSAA@(XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . ;I VERBOSE W !,"XUXTADSSIEN: ",XUXTADSSIEN
 . S XUXTADRTNVAL=$$GET1(FILE,XUXTADSSIEN,FIELD,,)
 . I $L(XUXTADRTNVAL) Q
 . ;I VERBOSE W !," DOES NOT EXIST IN ^DIC(49)"
 . K @XUXTADSSUA
 . S @XUXTADSSUA=0
 . S XUXTADRTNVAL=$$GSSUXFM(XUXTADSSIEN,XUXTADSSUA)
 . ;I VERBOSE W !,"GAUANESSFM: XUXTADSSUA:",! ZW @XUXTADSSUA
 . I XUXTADRTNVAL M @XUXTADUANSS@(XUXTADSSIEN)=@XUXTADSSUA
 . S @XUXTADUANSS=@XUXTADUANSS+XUXTADRTNVAL
 S XUXTADRTNVAL=@XUXTADUANSS
GAUANESSFMDN ;
 ;I VERBOSE W !,"GAUANESSFM^XUXTADAPI2 Exiting, Response: ",XUXTADRTNVAL,! ZW @XUXTADUANSS
 K @XUXTADSSAA,@XUXTADSSUA
 Q XUXTADRTNVAL
 ;
 ; 
 ; Show All User Assigned to Non-existent Service/Section
 ;
 ; D SHOWAUANESS^XUXTADAPI2
SHOWAUANESS() ;
 N XUXTADAUNESS,XUXTADRTNVAL,XUXTADHEADER
 S XUXTADAUNESS="SHOWAUANESS"
 S XUXTADRTNVAL=$$GAUANESSFM(XUXTADAUNESS)
 S XUXTADHEADER="All Users assigned to non-existent Service/Section's:"
 D SHOWA(XUXTADHEADER,XUXTADAUNESS)
 K @XUXTADAUNESS
 Q
 ;
 ;
 ; Get Users Assigned to Service/Section AXUXTADSSIEN and save in Array: AXUXTADSSUA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ; 
 ;   AXUXTADSSIEN  - A Service/Section IEN
 ;   AXUXTADSSUA   - An array to hold the results
 ;
 ; Returns with AXUXTADSSUA populated with the number of users assigned to AXUXTADSSIEN
 ;         and populated with the user IEN's that are assigned to AXUXTADSSIEN
 ;
 ; S XUXTADSSUA="SSU" 
 ; W $$GSSUX^XUXTADAPI2(1041,XUXTADSSUA)
GSSUX(AXUXTADSSIEN,AXUXTADSSUA) ;
 NEW XUXTADSSIEN,XUXTADSSUA,XUXTADUIEN,XUXTADRTNVAL
 S XUXTADRTNVAL=1
 S XUXTADSSIEN=+$G(AXUXTADSSIEN)
 I (XUXTADSSIEN'>0)!('$D(^DIC(49,XUXTADSSIEN))) D  G GSSUXDN
 . S XUXTADRTNVAL="0^Service/Section IEN "_XUXTADSSIEN_" is not valid"
 S XUXTADSSUA=$G(AXUXTADSSUA)
 I $L(XUXTADSSUA)'>0 D  G GSSUXDN
 . S XUXTADRTNVAL="0^Results array AXUXTADSSUA is not valid"
 S @XUXTADSSUA=0
 S XUXTADUIEN=0
 F  S XUXTADUIEN=$O(^VA(200,"E",XUXTADSSIEN,XUXTADUIEN)) Q:'XUXTADUIEN  D
 . S @XUXTADSSUA=@XUXTADSSUA+1,@XUXTADSSUA@(@XUXTADSSUA)=XUXTADUIEN
 S XUXTADRTNVAL=@XUXTADSSUA
GSSUXDN ;
 Q XUXTADRTNVAL
 ;
 ;
 ; Get Users Assigned to Service/Section AXUXTADSSIEN and save in Array: AXUXTADSSUA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ; 
 ;   AXUXTADSSIEN  - A Service/Section IEN
 ;   AXUXTADSSUA   - An array to hold the results
 ;
 ; Returns the number of users assigned to AXUXTADSSIEN and AXUXTADSSUA populated with 
 ;         the user IEN's that are assigned to AXUXTADSSIEN
 ;
 ;
 ; Uses Database Server API
 ;   LIST^DIC(file[,iens][,fields][,flags][,number][,[.]from][,[.]part][,index][,[.]screen][,identifier][,target_root][,msg_root])
 ;
 ; S XUXTADSSUA="SSU" 
 ; W $$GSSUXFM^XUXTADAPI2(1041,XUXTADSSUA)
GSSUXFM(AXUXTADSSIEN,AXUXTADSSUA) ;
 NEW XUXTADSSIEN,XUXTADSSUA,XUXTADSSIA,XUXTADRTNVAL
 NEW FILE,FIELDS,FLAGS,FROM,PART,INDEX,TROOT
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 ;I VERBOSE W !,"GSSUXFM^XUXTADAPI2(",$G(AXUXTADSSIEN),",",$G(AXUXTADSSUA),") Called"
 ;I VERBOSE W !,"Get Users Assigned to Service/Section ",$G(AXUXTADSSIEN)
 S XUXTADRTNVAL=1,TROOT="GSSUXFMFMD",XUXTADSSIA="GSSUXFMSSI"
 S XUXTADSSIEN=+$G(AXUXTADSSIEN)
 ; Verify that the SS IEN passed in is valid
 I (XUXTADSSIEN'>0) D  G GSSUXFMDN
 . S XUXTADRTNVAL="0^Service/Section IEN "_XUXTADSSIEN_" is not valid"
 S XUXTADSSUA=$G(AXUXTADSSUA)
 I $L(XUXTADSSUA)'>0 D  G GSSUXFMDN
 . S XUXTADRTNVAL="0^Results array AXUXTADSSUA is not valid"
 K @XUXTADSSUA
 S @XUXTADSSUA=0
 S FILE=200,FIELDS="@",FLAGS="I",FROM=XUXTADSSIEN-1,PART=XUXTADSSIEN,INDEX="E"
 D LIST(FILE,,FIELDS,FLAGS,,FROM,PART,INDEX,,,TROOT)
 S XUXTADRTNVAL=0
 I $D(@TROOT@("DILIST",0))&$D(@TROOT@("DILIST",2)) D
 . ;I VERBOSE W ! ZW @TROOT
 . M @XUXTADSSUA=@TROOT@("DILIST",2)
 . S @XUXTADSSUA=$P(@TROOT@("DILIST",0),U)
 S XUXTADRTNVAL=@XUXTADSSUA
GSSUXFMDN ;
 ;I VERBOSE W !,"GSSUXFM^XUXTADAPI2 Exiting, Response: ",XUXTADRTNVAL,! ZW @XUXTADSSUA
 K @TROOT
 Q XUXTADRTNVAL
 ;
 ; 
 ; Show All Users Assigned to Service/Section AXUXTADSSIEN
 ;
 ; S AXUXTADSSIEN=1029
 ; D SHOWAUASS^XUXTADAPI2(AXUXTADSSIEN)
SHOWAUASS(AXUXTADSSIEN) ;
 N XUXTADAUASS,XUXTADRTNVAL,XUXTADHEADER
 S XUXTADAUASS="SHOWAUASS"
 S XUXTADRTNVAL=$$GSSUXFM(AXUXTADSSIEN,XUXTADAUASS)
 I +XUXTADRTNVAL=0 S @XUXTADAUASS=$P(XUXTADRTNVAL,"^",2)
 W "XUXTADRTNVAL: ",XUXTADRTNVAL ZW @XUXTADAUASS
 S XUXTADHEADER="All Users Assigned to Service/Section IEN "_AXUXTADSSIEN_":"
 D SHOWA(XUXTADHEADER,XUXTADAUASS)
 K @XUXTADAUASS
 Q
 ;
 ;
 ; Get Service/Section's with No Users Assigned and save in Array: AXUXTADSSNUA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ; 
 ;   AXUXTADSSNUA   - An array to hold the results
 ;
 ; Returns with AXUXTADSSNUA populated with the Service/Section's that have no users assigned
 ;
 ; S XUXTADSSNUA="SSNU" 
 ; W $$GSSNUX^XUXTADAPI2(XUXTADSSNUA)
GSSNUX(AXUXTADSSNUA) ;
 NEW XUXTADSSIEN,XUXTADSSNUA,XUXTADSSAA,XUXTADRTNVAL
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 S XUXTADSSAA="SSA",XUXTADSSIEN=0
 S XUXTADSSNUA=$G(AXUXTADSSNUA)
 I $L(XUXTADSSNUA)'>0 D  G GSSNUXDN
 . S XUXTADRTNVAL="0^Results array AXUXTADSSNUA is not valid"
 S @XUXTADSSNUA=0
 K @XUXTADSSAA
 S XUXTADRTNVAL=$$GASSAX(XUXTADSSAA)
 ;I VERBOSE W !,"GASSAX XUXTADRTNVAL: ",XUXTADRTNVAL,!
 I +XUXTADRTNVAL=0 G GSSNUXDN
 F  S XUXTADSSIEN=$O(^DIC(49,XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . ;I VERBOSE W !,"XUXTADSSIEN: ",XUXTADSSIEN
 . I $D(@XUXTADSSAA@(XUXTADSSIEN)) Q
 . ;I VERBOSE W ", has no Users assigned: "
 . S @XUXTADSSNUA=@XUXTADSSNUA+1,@XUXTADSSNUA@(XUXTADSSIEN)=""
 S XUXTADRTNVAL=@XUXTADSSNUA
GSSNUXDN ;
 K @XUXTADSSAA
 Q XUXTADRTNVAL
 ;
 ;
 ; Get Service/Section's with No Users Assigned and save in Array: AXUXTADSSNUA
 ;   This routine uses the "E" cross reference on file ^VA(200.
 ; 
 ;   AXUXTADSSNUA   - An array to hold the results
 ;
 ; Returns with AXUXTADSSNUA populated with the Service/Section's that have no users assigned
 ;
 ; S XUXTADSSNUA="SSNU" 
 ; W $$GSSNUXFM^XUXTADAPI2(XUXTADSSNUA)
GSSNUXFM(AXUXTADSSNUA) ;
 NEW XUXTADSSNUA,XUXTADSSIA,XUXTADSSIEN,XUXTADSSAA,XUXTADRTNVAL
 I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
 ;I VERBOSE W !,"GSSNUXFM^XUXTADAPI2(",$G(AXUXTADSSNUA),") Called"
 ;I VERBOSE W !,"Get Service/Section's with No Users Assigned"
 S XUXTADSSAA="GSSNUXFMSSA",XUXTADSSIA="GSSNUXFMSSI",XUXTADSSIEN=0
 S XUXTADSSNUA=$G(AXUXTADSSNUA)
 I $L(XUXTADSSNUA)'>0 D  G GSSNUXFMDN
 . S XUXTADRTNVAL="0^Results array AXUXTADSSNUA is not valid"
 S @XUXTADSSNUA=0
 K @XUXTADSSAA
 S @XUXTADSSAA=0
 ; Get All Service/Section's Assigned
 S XUXTADRTNVAL=$$GASSAXFM(XUXTADSSAA)
 ;I VERBOSE W !,"GASSAXFM XUXTADRTNVAL: ",XUXTADRTNVAL,!
 I +XUXTADRTNVAL=0 G GSSNUXFMDN
 K @XUXTADSSIA
 S @XUXTADSSIA=0
 ; Get All Service/Section IEN's
 D GASSINFM(XUXTADSSIA)
 F  S XUXTADSSIEN=$O(@XUXTADSSIA@(XUXTADSSIEN)) Q:'XUXTADSSIEN  D
 . ;I VERBOSE W !,"SSIEN: ",XUXTADSSIEN
 . I $D(@XUXTADSSAA@(XUXTADSSIEN)) Q
 . ;I VERBOSE W ", has no Users assigned: "
 . S @XUXTADSSNUA=@XUXTADSSNUA+1,@XUXTADSSNUA@(XUXTADSSIEN)=@XUXTADSSIA@(XUXTADSSIEN)
 S XUXTADRTNVAL=@XUXTADSSNUA
GSSNUXFMDN ;
 ;I VERBOSE W !,"GSSNUXFM^XUXTADAPI2 Exiting, Response: ",XUXTADRTNVAL,! ZW @XUXTADSSNUA
 K @XUXTADSSIA,@XUXTADSSAA
 Q XUXTADRTNVAL
 ;
 ; 
 ; Show All Service/Section with No Users Assigned
 ;
  ; D SHOWASSNUA^XUXTADAPI2()
SHOWASSNUA() ;
 N XUXTADASSNUA,XUXTADRTNVAL,XUXTADHEADER
 S XUXTADASSNUA="SHOWASSNUA"
 S XUXTADRTNVAL=$$GSSNUXFM(XUXTADASSNUA)
 I +XUXTADRTNVAL=0 S @XUXTADASSNUA=$P(XUXTADRTNVAL,"^",2)
 ;I VERBOSE W "XUXTADRTNVAL: ",XUXTADRTNVAL ZW @XUXTADASSNUA
 S XUXTADHEADER="Show All Service/Section with No Users Assigned:"
 D SHOWA(XUXTADHEADER,XUXTADASSNUA)
 K @XUXTADASSNUA
 Q
 ;
 ;