XUXTADSSEF ;SLC/JLA - Service/Section Edit Form callback API's ; OCT 30, 2024@12:30
;;8.0;KERNEL;**807**;Oct 30, 2024;Build 56;
;
;
; External API'S
;
; FileMan/ScreenMan API's
FMDIC D ^DIC Q
FMDIE D ^DIE Q
FMDIK D ^DIK Q
CNVDT D ^%DT Q
FMTE(AY) Q $$FMTE^XLFDT($G(AY),)
;
; XUXTAD API's
; COMMENTING OUT THE NON FILEMAN VERSIONS OF THE CODE
;GASSI(AXUXTADSSIA) Q $$GASSI^XUXTADAPI($G(AXUXTADSSIA))
;GASSIN(AXUXTADSSIA) Q $$GASSIN^XUXTADAPI($G(AXUXTADSSIA))
;GSSCDCR(AXUXTADSSIEN) Q $$GSSCDCR^XUXTADAPI($G(AXUXTADSSIEN))
;GSSOCS(AXUXTADSSIEN) Q $$GSSOCS^XUXTADAPI($G(AXUXTADSSIEN))
;ISSA(AXUXTADSSIEN) Q $$ISSA^XUXTADAPI($G(AXUXTADSSIEN))
GASSI(AXUXTADSSIA) Q $$GASSIFM^XUXTADAPI($G(AXUXTADSSIA))
GASSIN(AXUXTADSSIA) Q $$GASSINFM^XUXTADAPI($G(AXUXTADSSIA))
GSSCDCR(AXUXTADSSIEN) Q $$GSSCDCRFM^XUXTADAPI($G(AXUXTADSSIEN))
GSSOCS(AXUXTADSSIEN) Q $$GSSOCSFM^XUXTADAPI($G(AXUXTADSSIEN))
ISSA(AXUXTADSSIEN) Q $$ISSAFM^XUXTADAPI($G(AXUXTADSSIEN))
;
;
; If AXUXTADYN is true then Save today's date in the Date Closed global
; else clear the Date Closed global
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$CLOSESS^XUXTADSSEF(1049,1)
CLOSESS(AXUXTADSSIEN,AXUXTADYN) ;
NEW XUXTADSSIEN,XUXTADYN,XUXTADRTNVAL,XUXTADSSIA ;,XUXTADSSFILE
S XUXTADRTNVAL=0,XUXTADSSIA="CLOSESSSSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G CLOSESSDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G CLOSESSDN
. S XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADYN=$G(AXUXTADYN)
I $L(XUXTADYN)=0 D G CLOSESSDN
. S XUXTADRTNVAL="0^Undefined Yes/No parameter"
S XUXTADYN=(XUXTADYN?1(1"Y",1"y"))
I XUXTADYN D G CLOSESSDN
. S XUXTADRTNVAL=$$SDCRDTG(XUXTADSSIEN,"T","DC")
I 'XUXTADYN D G CLOSESSDN
. S XUXTADRTNVAL="1^Cancelling Close Service Section"
. KILL ^TMP("SS",$J)
CLOSESSDN ;
K @XUXTADSSIA
Q XUXTADRTNVAL
;
;
; If AXUXTADYN is true then Save today's date in the Date Re-opened global
; else clear the Date Re-opened global
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$REOPENSS^XUXTADSSEF(1049,1)
REOPENSS(AXUXTADSSIEN,AXUXTADYN) ;
NEW XUXTADSSIEN,XUXTADYN,XUXTADRTNVAL,XUXTADSSIA ;,XUXTADSSFILE
S XUXTADRTNVAL=0,XUXTADSSIA="REOPENSSSSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G REOPENDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G REOPENDN
. S XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADYN=$G(AXUXTADYN)
I $L(XUXTADYN)=0 D G REOPENDN
. S XUXTADRTNVAL="0^Undefined Yes/No parameter"
S XUXTADYN=(XUXTADYN?1(1"Y",1"y"))
I XUXTADYN D G REOPENDN
. S XUXTADRTNVAL=$$SDCRDTG(XUXTADSSIEN,"T","DR")
I 'XUXTADYN D G REOPENDN
. S XUXTADRTNVAL="1^Cancelling Re-open Service Section"
. KILL ^TMP("SS",$J)
REOPENDN ;
K @XUXTADSSIA
Q XUXTADRTNVAL
;
;
; Save Service/Section IEN and a Date Closed Record Date (Date Closed or Date Re-opened) to global ^TMP("SS",$J)
;
; AXUXTADSSIEN - A Service/Section IEN
; AXUXTADDCRDATE - A Date Closed record date in external form
; AXUXTADNODE - A "DC" or "DR" XUXTADNODE
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$SDCRDTG^XUXTADSSEF(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE)
SDCRDTG(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE) ;
NEW XUXTADSSIEN,XUXTADDCRDATE,XUXTADNODE,XUXTADRTNVAL,XUXTADDCDRT,XUXTADSSIA ;,XUXTADSSFILE
NEW X,Y
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
I VERBOSE W !,"SDCRDTG^XUXTADSSEF(",$G(AXUXTADSSIEN),",",$G(AXUXTADDCRDATE),",",$G(AXUXTADNODE),") Called"
S XUXTADRTNVAL=0,XUXTADSSIA="SDCRDTGSSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G SDCRDTGDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G SDCRDTGDN
. S XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S X=$G(AXUXTADDCRDATE)
D CNVDT
I Y<1 D G SDCRDTGDN
. S XUXTADRTNVAL="0^Invalid Date Closed Record date"
S XUXTADDCRDATE=Y
S XUXTADNODE=$G(AXUXTADNODE)
I ($L(XUXTADNODE)=0)!(XUXTADNODE'?1(1"DC",1"DR")) D G SDCRDTGDN
. S XUXTADRTNVAL="0^Invalid Date Node: "_XUXTADNODE_", DC or DR only"
KILL ^TMP("SS",$J)
S ^TMP("SS",$J,"SSIEN")=XUXTADSSIEN
S ^TMP("SS",$J,XUXTADNODE)=XUXTADDCRDATE
I XUXTADNODE="DC" S XUXTADDCDRT="Closed"
E S XUXTADDCDRT="Re-opened"
I $L(XUXTADDCRDATE)'>0 D G SDCRDTGDN
. S XUXTADRTNVAL="0^Date "_XUXTADDCDRT_" Reset"
S XUXTADRTNVAL="1^Service/Section will be "_XUXTADDCDRT_" on Save or Exit"
SDCRDTGDN ;
I VERBOSE W !,"SDCRDTG^XUXTADSSEF Exiting Response: ",XUXTADRTNVAL,!!
K @XUXTADSSIA
Q XUXTADRTNVAL
;
;
; Save a Date Closed or Date Re-opened that has been put in the global
; ^TMP("SS",$J,"DC") or ^TMP("SS",$J,"DR") respectively to the Service/Section file (^DIC(49)).
; Called when the User Exits or Saves the Form
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$SVDCDR^XUXTADSSEF
SVDCDR() ;
NEW XUXTADSSIEN,XUXTADDCDT,XUXTADRTNVAL
S XUXTADRTNVAL=0
; Save Date Closed or Date Re-opened based on globals setup in the call to SDCRDTG(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE)
S XUXTADSSIEN=$G(^TMP("SS",$J,"SSIEN"))
I $L(XUXTADSSIEN)'>0 D G SVDCDRDN
. S XUXTADRTNVAL="1^Service/Section edits saved"
S XUXTADDCDT=$G(^TMP("SS",$J,"DC"))
I $L(XUXTADDCDT)>0 D G SVDCDRDN
. S XUXTADRTNVAL=$$DCRSAVE(XUXTADSSIEN,XUXTADDCDT)
S XUXTADDCDT=$G(^TMP("SS",$J,"DR"))
I $L(XUXTADDCDT)>0 D G SVDCDRDN
. S XUXTADRTNVAL=$$DRSAVE(XUXTADSSIEN,XUXTADDCDT)
S XUXTADRTNVAL="0^Service/Section Date global not set"
SVDCDRDN ;
I +XUXTADRTNVAL S ^TMP("SS",$J,"SSSAVED")=$P(XUXTADRTNVAL,"^",2)
Q XUXTADRTNVAL
;
;
; Form Post Save is called when the user Saves or Exits
; Saves the Date Closed Record Date if one exists in ^TMP("SS",$J,)
; Get the Close Service/Section and Re-open Service/Section form only fields enable/disabled status
; Get the current Service/Section Open/Closed status
;
; Returns
; SDCU^SDRU^HMSG^SSOCS
; SDCU - Set Date Closed Uneditable
; SDRU - Set Date Re-opened Uneditable
; HMSG - Service/Section Date Closed/Date Reopened Help message
; SSOCS - Service/Section Open Close Status: Closed or Open
;
; W $$FMPS^XUXTADSSEF(XUXTADSSIEN)
FMPS(AXUXTADSSIEN) ;
NEW XUXTADRTNVAL,XUXTADSSOCS,XUXTADBPVAL
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
; Save the Date Closed/Date Re-opened
S XUXTADRTNVAL=$$SVDCDR
I VERBOSE W !,"$$SVDCDR returned XUXTADRTNVAL: ",XUXTADRTNVAL,!
S XUXTADBPVAL=$$BLKPRE(AXUXTADSSIEN)
I VERBOSE W !,"$$BLKPRE(",AXUXTADSSIEN,") returned XUXTADBPVAL: ",XUXTADBPVAL,!
S XUXTADSSOCS=$$GSSOCS(AXUXTADSSIEN)
I VERBOSE W !,"$$GSSOCS(",AXUXTADSSIEN,") returned XUXTADSSOCS: ",XUXTADSSOCS,!
I (+XUXTADSSOCS) S $P(XUXTADBPVAL,"^",4)=$P(XUXTADSSOCS,"^",2)
S $P(XUXTADBPVAL,"^",3)=$P(XUXTADRTNVAL,"^",2)
I VERBOSE W !,"$$FMPS(",AXUXTADSSIEN,") returned: ",XUXTADBPVAL,!
Q XUXTADBPVAL
;
;
; Set the Form Only fields CLOSE SERVICE/SECTION and RE-OPEN SERVICE/SECTION uneditable property
; based on if Users are assigned to the service/section with IEN=AXUXTADSSIEN and the current
; Date Closed field and Date Re-opened field.
; This is called in the PRE ACTION of the Block SERVICE/SECTION EDIT PG
;
; AXUXTADSSIEN - A Service/Section IEN
;
; Returns
; SDCU^SDRU^HMSG^DC
; SDCU - Set Date Closed Uneditable
; SDRU - Set Date Re-opened Uneditable
; HMSG - Service/Section Date Closed/Date Reopened Help message
; DC - Date Closed
;
; W $$BLKPRE^XUXTADSSEF(AXUXTADSSIEN)
BLKPRE(AXUXTADSSIEN) ;
NEW XUXTADSSIEN,XUXTADUSRLNKS,XUXTADSSN,XUXTADCDCR,XUXTADCDC
NEW XUXTADCDR,XUXTADRTNVAL,XUXTADSSIA ;,XUXTADSSFILE
S XUXTADRTNVAL="1^1^^^",XUXTADSSIA="BLKPRESSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSIN(XUXTADSSIA)
;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G BLKPREDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G BLKPREDN
. S $P(XUXTADRTNVAL,"^",3)="Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADUSRLNKS=$$ISSA(XUXTADSSIEN)
;S XUXTADSSN=$P(^DIC(XUXTADSSFILE,XUXTADSSIEN,0),"^")
S XUXTADSSN=@XUXTADSSIA@(XUXTADSSIEN)
I XUXTADUSRLNKS>0 D
. S $P(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has users assigned and cannot be Closed/Re-opened!"
I XUXTADUSRLNKS=0 D
. ; Get the current Date Closed Record
. S XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN),XUXTADCDC=$P(XUXTADCDCR,"^",1),XUXTADCDR=$P(XUXTADCDCR,"^",2)
. I ($L(XUXTADCDC)>0) D
.. I ($L(XUXTADCDR)>0) D
... S $P(XUXTADRTNVAL,"^",1)=0,$P(XUXTADRTNVAL,"^",2)=1
... S $P(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Closed"
.. I ($L(XUXTADCDR)=0) D
... S $P(XUXTADRTNVAL,"^",1)=1,$P(XUXTADRTNVAL,"^",2)=0
... S $P(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Re-opened"
... S X=XUXTADCDC D CNVDT
... I Y>0 S $P(XUXTADRTNVAL,"^",4)=$$FMTE(Y)
. I ($L(XUXTADCDC)=0) D
.. S $P(XUXTADRTNVAL,"^",1)=0,$P(XUXTADRTNVAL,"^",2)=1
.. S $P(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Closed"
BLKPREDN ;
K @XUXTADSSIA
Q XUXTADRTNVAL
;
;
; Save the new Date Closed record with IEN: AXUXTADDCIEN for the Service/Section with IEN: AXUXTADSSIEN
; in the Service/Section file (49)
;
; AXUXTADSSIEN - A Service/Section IEN
; AXUXTADDCIEN - A Date Closed record date (IEN)
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$DCRSAVE^XUXTADSSEF(1049,3241008)
;
DCRSAVE(AXUXTADSSIEN,AXUXTADDCIEN) ;
NEW XUXTADSSIEN,XUXTADDCIEN,XUXTADCDCR,XUXTADCDC,XUXTADCDR,XUXTADADDED
NEW XUXTADGRDC,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
NEW DIC,X,Y
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
I VERBOSE W !,"DCRSAVE^XUXTADSSEF(",$G(AXUXTADSSIEN),",",$G(AXUXTADDCIEN),") Called"
S XUXTADADDED=0,XUXTADSSIA="DCRSAVESSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
S XUXTADDCNODE=3 ; Date Closed node
;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DCRSAVEDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G DCRSAVEDN
. S XUXTADADDED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADDCIEN=+$G(AXUXTADDCIEN)
I XUXTADDCIEN'>0 D G DCRSAVEDN
. S XUXTADADDED="0^Invalid Date Closed IEN: "_XUXTADDCIEN
S:'$D(U) U="^"
; Set the Global root of subfile Date Closed
S XUXTADGRDC="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_","
; Get the current Date Closed Record
S XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN)
I $L(XUXTADCDCR)=0 G NEWDCR
; Check here to see if XUXTADDCIEN is equal to the last Re-opened Date.
; If it is then delete the last Re-opened date field
S XUXTADCDC=$P(XUXTADCDCR,U,1)
S XUXTADCDR=$P(XUXTADCDCR,U,2)
I $L(XUXTADCDR)=0 D G DCRSAVEDN
. S XUXTADADDED="0^Service/Section is already closed"
I XUXTADCDR=XUXTADDCIEN D G DCRSAVEDN
. S XUXTADADDED=$$ESSDRF(XUXTADSSIEN,XUXTADCDC,"@") ; Delete the Service/Section Date Re-opened field
. I $P(XUXTADADDED,U) S XUXTADADDED="1^Re-open Service/Section is cancelled, Service/Section is closed"
; Make sure XUXTADDCIEN is after the last Re-opened Date.
I XUXTADCDR>XUXTADDCIEN D G DCRSAVEDN
. S XUXTADADDED="0^Service/Section closed date must be after the last date re-opened"
NEWDCR ;
S DIC=XUXTADGRDC,DIC(0)="ML"
S X=XUXTADDCIEN
D FMDIC
I Y=-1 D G DCRSAVEDN
. S XUXTADADDED="0^WRITE USING DIC: "_DIC_", X: "_X_" FAILED" G DCRSAVEDN
I $P(Y,U,3)=1 S XUXTADADDED="1^Service/Section Closed"
DCRSAVEDN ;
I VERBOSE W !,"DCRSAVE^XUXTADSSEF Exiting Response: ",XUXTADADDED,!!
K @XUXTADSSIA
Q XUXTADADDED
;
;
; Save the new Date Re-opened field : AXUXTADDTRE to the most recent Date Closed record
; for the Service/Section with IEN: AXUXTADSSIEN in the Service/Section file (49)
;
; AXUXTADSSIEN - A Service/Section IEN
; AXUXTADDTRE - A Date Re-opened date
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$DRSAVE^XUXTADSSEF(1049,3241103)
;
DRSAVE(AXUXTADSSIEN,AXUXTADDTRE) ;
NEW XUXTADSSIEN,XUXTADDTRE,XUXTADCDCR,XUXTADCDC,XUXTADCDR,XUXTADADDED
NEW XUXTADGRDC,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
NEW DIE,DA,DR,DIK
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
I VERBOSE W !,"DRSAVE^XUXTADSSEF(",$G(AXUXTADSSIEN),",",$G(AXUXTADDTRE),") Called"
S XUXTADADDED=0,XUXTADSSIA="DRSAVESSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
S XUXTADDCNODE=3 ; Date Closed node
;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DRSAVEDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G DRSAVEDN
. S XUXTADADDED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADDTRE=+$G(AXUXTADDTRE)
I XUXTADDTRE'>0 D G DRSAVEDN
. S XUXTADADDED="0^Invalid Date Re-opened: "_XUXTADDTRE
S:'$D(U) U="^"
; Set the Global root of subfile Date Closed
S XUXTADGRDC="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_","
; Get the current Date Closed Record
S XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN)
; If we don't have a Date closed record, then the Service/Section is already open
I $L(XUXTADCDCR)=0 D G DRSAVEDN
. S XUXTADADDED="0^Service/Section is already open"
; Check here to see if XUXTADDTRE is equal to the current Date Closed.
; If it is then delete the current Date Closed record
S XUXTADCDC=$P(XUXTADCDCR,U,1)
S XUXTADCDR=$P(XUXTADCDCR,U,2)
I $L(XUXTADCDR)>0 D G DRSAVEDN
. S XUXTADADDED="0^Service/Section is already open"
S DA=XUXTADCDC,DA(1)=XUXTADSSIEN
I XUXTADCDC=XUXTADDTRE D G DRSAVEDN
. S XUXTADADDED=$$DSSDCR(XUXTADSSIEN,XUXTADCDC) ; Delete the Service/Section Date Closed Record
. I $P(XUXTADADDED,U) S XUXTADADDED="1^Close Service/Section cancelled, Service/Section is Re-opened"
; Make sure XUXTADDTRE is after the current Date Closed Date.
I XUXTADCDC>XUXTADDTRE D G DRSAVEDN
. S XUXTADADDED="0^Service/Section re-opened date must be after the current date closed"
; Setup the DIE call
S DIE=XUXTADGRDC ; Global root of subfile
S DR="1////"_XUXTADDTRE
D FMDIE
S XUXTADADDED="1^Service/Section Re-opened"
DRSAVEDN ;
I VERBOSE W !,"DRSAVE^XUXTADSSEF Exiting Response: ",XUXTADADDED,!!
K @XUXTADSSIA
Q XUXTADADDED
;
;
; Delete the Service/Section Date Closed Record with IEN: AXUXTADDCRIEN,
; and Service/Section with IEN: AXUXTADSSIEN in the Service/Section file (49)
;
; AXUXTADSSIEN - A Service/Section IEN
; AXUXTADDCRIEN - A Date Closed IEN (Internal form)
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$DSSDCR^XUXTADSSEF(1049,3241103)
DSSDCR(AXUXTADSSIEN,AXUXTADDCRIEN) ;
NEW XUXTADSSIEN,XUXTADDCRIEN,XUXTADDELETED,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
NEW DIK,DA
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
I VERBOSE W !,"DSSDCR^XUXTADSSEF(",$G(AXUXTADSSIEN),",",$G(AXUXTADDCRIEN),") Called"
S XUXTADDELETED=0,XUXTADSSIA="DSSDCRSSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
S XUXTADDCNODE=3 ; Date Closed node
;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DSSDCRDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G DSSDCRDN
. S XUXTADDELETED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADDCRIEN=+$G(AXUXTADDCRIEN)
I (XUXTADDCRIEN'>0) D G DSSDCRDN
. S XUXTADDELETED="0^Invalid Date Closed IEN: "_XUXTADDCRIEN
S DA=XUXTADDCRIEN,DA(1)=XUXTADSSIEN
S DIK="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_"," ; Global root of subfile
I VERBOSE W !,"DIK: ",DIK,! ZW DA
D FMDIK
S XUXTADDELETED="1^Service/Section Date Closed record deleted. IEN: "_XUXTADDCRIEN
DSSDCRDN ;
I VERBOSE W !,"DSSDCR^XUXTADSSEF Exiting Response: ",XUXTADDELETED,!!
K @XUXTADSSIA
Q XUXTADDELETED
;
;
; Edit the Service/Section Date Re-opened field in the Date Closed Record with IEN: AXUXTADDCRIEN
; and Service/Section with IEN: AXUXTADSSIEN in the Service/Section file (49)
;
; AXUXTADSSIEN - A Service/Section IEN
; AXUXTADDCRIEN - A Date Closed IEN (Internal form)
; AXUXTADDRV - A Date Re-opened value (Internal form,"@" for deletion)
;
; Returns
; 0^Error message when an error occurs
; 1^Success message
;
; W $$ESSDRF^XUXTADSSEF(1049,3241103,3241104)
; W $$ESSDRF^XUXTADSSEF(1049,3240910,"@")
ESSDRF(AXUXTADSSIEN,AXUXTADDCRIEN,AXUXTADDRV) ;
NEW XUXTADSSIEN,XUXTADDCRIEN,XUXTADDRV,XUXTADEDITED,XUXTADSSIA
NEW XUXTADSSFILE,XUXTADDCNODE
NEW DIE,DA,DR
I '$D(VERBOSE) NEW VERBOSE S VERBOSE=0
I VERBOSE W !,"ESSDRF^XUXTADSSEF(",$G(AXUXTADSSIEN),",",$G(AXUXTADDCRIEN),",",$G(AXUXTADDRV),") Called"
S XUXTADEDITED=0,XUXTADSSIA="ESSDRFSSI"
S XUXTADSSIEN=+$G(AXUXTADSSIEN)
; Get All Service/Section IEN's
D GASSI(XUXTADSSIA)
S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
S XUXTADDCNODE=3 ; Date Closed node
;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G ESSDRFDN
I (XUXTADSSIEN'>0)!('$D(@XUXTADSSIA@(XUXTADSSIEN))) D G ESSDRFDN
. S XUXTADEDITED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
S XUXTADDCRIEN=+$G(AXUXTADDCRIEN)
I (XUXTADDCRIEN'>0) D G ESSDRFDN
. S XUXTADEDITED="0^Invalid Date Closed IEN: "_XUXTADDCRIEN
S XUXTADDRV=$G(AXUXTADDRV)
I $L(XUXTADDRV)'>0 D G ESSDRFDN
. S XUXTADEDITED="0^Invalid Date Re-opened value: "_XUXTADDRV
S DA=XUXTADDCRIEN,DA(1)=XUXTADSSIEN
S DIE="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_"," ; Global root of subfile
I VERBOSE W !,"DIE: ",DIE,", XUXTADDRV: ",XUXTADDRV,! ZW DA
S DR="1////"_XUXTADDRV
D FMDIE
S XUXTADEDITED="1^Service/Section Date Closed record edited."
ESSDRFDN ;
I VERBOSE W !,"ESSDRF^XUXTADSSEF Exiting Response: ",XUXTADEDITED,!!
K @XUXTADSSIA
Q XUXTADEDITED
;
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUXTADSSEF 18688 printed Sep 23, 2025@19:50:39 Page 2
XUXTADSSEF ;SLC/JLA - Service/Section Edit Form callback API's ; OCT 30, 2024@12:30
+1 ;;8.0;KERNEL;**807**;Oct 30, 2024;Build 56;
+2 ;
+3 ;
+4 ; External API'S
+5 ;
+6 ; FileMan/ScreenMan API's
FMDIC DO ^DIC
QUIT
FMDIE DO ^DIE
QUIT
FMDIK DO ^DIK
QUIT
CNVDT DO ^%DT
QUIT
FMTE(AY) QUIT $$FMTE^XLFDT($GET(AY),)
+1 ;
+2 ; XUXTAD API's
+3 ; COMMENTING OUT THE NON FILEMAN VERSIONS OF THE CODE
+4 ;GASSI(AXUXTADSSIA) Q $$GASSI^XUXTADAPI($G(AXUXTADSSIA))
+5 ;GASSIN(AXUXTADSSIA) Q $$GASSIN^XUXTADAPI($G(AXUXTADSSIA))
+6 ;GSSCDCR(AXUXTADSSIEN) Q $$GSSCDCR^XUXTADAPI($G(AXUXTADSSIEN))
+7 ;GSSOCS(AXUXTADSSIEN) Q $$GSSOCS^XUXTADAPI($G(AXUXTADSSIEN))
+8 ;ISSA(AXUXTADSSIEN) Q $$ISSA^XUXTADAPI($G(AXUXTADSSIEN))
GASSI(AXUXTADSSIA) QUIT $$GASSIFM^XUXTADAPI($GET(AXUXTADSSIA))
GASSIN(AXUXTADSSIA) QUIT $$GASSINFM^XUXTADAPI($GET(AXUXTADSSIA))
GSSCDCR(AXUXTADSSIEN) QUIT $$GSSCDCRFM^XUXTADAPI($GET(AXUXTADSSIEN))
GSSOCS(AXUXTADSSIEN) QUIT $$GSSOCSFM^XUXTADAPI($GET(AXUXTADSSIEN))
ISSA(AXUXTADSSIEN) QUIT $$ISSAFM^XUXTADAPI($GET(AXUXTADSSIEN))
+1 ;
+2 ;
+3 ; If AXUXTADYN is true then Save today's date in the Date Closed global
+4 ; else clear the Date Closed global
+5 ;
+6 ; Returns
+7 ; 0^Error message when an error occurs
+8 ; 1^Success message
+9 ;
+10 ; W $$CLOSESS^XUXTADSSEF(1049,1)
CLOSESS(AXUXTADSSIEN,AXUXTADYN) ;
+1 ;,XUXTADSSFILE
NEW XUXTADSSIEN,XUXTADYN,XUXTADRTNVAL,XUXTADSSIA
+2 SET XUXTADRTNVAL=0
SET XUXTADSSIA="CLOSESSSSI"
+3 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+4 ; Get All Service/Section IEN's
+5 DO GASSI(XUXTADSSIA)
+6 ;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
+7 ;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G CLOSESSDN
+8 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+9 SET XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO CLOSESSDN
+10 SET XUXTADYN=$GET(AXUXTADYN)
+11 IF $LENGTH(XUXTADYN)=0
Begin DoDot:1
+12 SET XUXTADRTNVAL="0^Undefined Yes/No parameter"
End DoDot:1
GOTO CLOSESSDN
+13 SET XUXTADYN=(XUXTADYN?1(1"Y",1"y"))
+14 IF XUXTADYN
Begin DoDot:1
+15 SET XUXTADRTNVAL=$$SDCRDTG(XUXTADSSIEN,"T","DC")
End DoDot:1
GOTO CLOSESSDN
+16 IF 'XUXTADYN
Begin DoDot:1
+17 SET XUXTADRTNVAL="1^Cancelling Close Service Section"
+18 KILL ^TMP("SS",$JOB)
End DoDot:1
GOTO CLOSESSDN
CLOSESSDN ;
+1 KILL @XUXTADSSIA
+2 QUIT XUXTADRTNVAL
+3 ;
+4 ;
+5 ; If AXUXTADYN is true then Save today's date in the Date Re-opened global
+6 ; else clear the Date Re-opened global
+7 ;
+8 ; Returns
+9 ; 0^Error message when an error occurs
+10 ; 1^Success message
+11 ;
+12 ; W $$REOPENSS^XUXTADSSEF(1049,1)
REOPENSS(AXUXTADSSIEN,AXUXTADYN) ;
+1 ;,XUXTADSSFILE
NEW XUXTADSSIEN,XUXTADYN,XUXTADRTNVAL,XUXTADSSIA
+2 SET XUXTADRTNVAL=0
SET XUXTADSSIA="REOPENSSSSI"
+3 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+4 ; Get All Service/Section IEN's
+5 DO GASSI(XUXTADSSIA)
+6 ;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
+7 ;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G REOPENDN
+8 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+9 SET XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO REOPENDN
+10 SET XUXTADYN=$GET(AXUXTADYN)
+11 IF $LENGTH(XUXTADYN)=0
Begin DoDot:1
+12 SET XUXTADRTNVAL="0^Undefined Yes/No parameter"
End DoDot:1
GOTO REOPENDN
+13 SET XUXTADYN=(XUXTADYN?1(1"Y",1"y"))
+14 IF XUXTADYN
Begin DoDot:1
+15 SET XUXTADRTNVAL=$$SDCRDTG(XUXTADSSIEN,"T","DR")
End DoDot:1
GOTO REOPENDN
+16 IF 'XUXTADYN
Begin DoDot:1
+17 SET XUXTADRTNVAL="1^Cancelling Re-open Service Section"
+18 KILL ^TMP("SS",$JOB)
End DoDot:1
GOTO REOPENDN
REOPENDN ;
+1 KILL @XUXTADSSIA
+2 QUIT XUXTADRTNVAL
+3 ;
+4 ;
+5 ; Save Service/Section IEN and a Date Closed Record Date (Date Closed or Date Re-opened) to global ^TMP("SS",$J)
+6 ;
+7 ; AXUXTADSSIEN - A Service/Section IEN
+8 ; AXUXTADDCRDATE - A Date Closed record date in external form
+9 ; AXUXTADNODE - A "DC" or "DR" XUXTADNODE
+10 ;
+11 ; Returns
+12 ; 0^Error message when an error occurs
+13 ; 1^Success message
+14 ;
+15 ; W $$SDCRDTG^XUXTADSSEF(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE)
SDCRDTG(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE) ;
+1 ;,XUXTADSSFILE
NEW XUXTADSSIEN,XUXTADDCRDATE,XUXTADNODE,XUXTADRTNVAL,XUXTADDCDRT,XUXTADSSIA
+2 NEW X,Y
+3 IF '$DATA(VERBOSE)
NEW VERBOSE
SET VERBOSE=0
+4 IF VERBOSE
WRITE !,"SDCRDTG^XUXTADSSEF(",$GET(AXUXTADSSIEN),",",$GET(AXUXTADDCRDATE),",",$GET(AXUXTADNODE),") Called"
+5 SET XUXTADRTNVAL=0
SET XUXTADSSIA="SDCRDTGSSI"
+6 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+7 ; Get All Service/Section IEN's
+8 DO GASSI(XUXTADSSIA)
+9 ;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
+10 ;I (XUXTADSSIEN'>0)!'$D(^DIC(XUXTADSSFILE,XUXTADSSIEN,0)) D G SDCRDTGDN
+11 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+12 SET XUXTADRTNVAL="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO SDCRDTGDN
+13 SET X=$GET(AXUXTADDCRDATE)
+14 DO CNVDT
+15 IF Y<1
Begin DoDot:1
+16 SET XUXTADRTNVAL="0^Invalid Date Closed Record date"
End DoDot:1
GOTO SDCRDTGDN
+17 SET XUXTADDCRDATE=Y
+18 SET XUXTADNODE=$GET(AXUXTADNODE)
+19 IF ($LENGTH(XUXTADNODE)=0)!(XUXTADNODE'?1(1"DC",1"DR"))
Begin DoDot:1
+20 SET XUXTADRTNVAL="0^Invalid Date Node: "_XUXTADNODE_", DC or DR only"
End DoDot:1
GOTO SDCRDTGDN
+21 KILL ^TMP("SS",$JOB)
+22 SET ^TMP("SS",$JOB,"SSIEN")=XUXTADSSIEN
+23 SET ^TMP("SS",$JOB,XUXTADNODE)=XUXTADDCRDATE
+24 IF XUXTADNODE="DC"
SET XUXTADDCDRT="Closed"
+25 IF '$TEST
SET XUXTADDCDRT="Re-opened"
+26 IF $LENGTH(XUXTADDCRDATE)'>0
Begin DoDot:1
+27 SET XUXTADRTNVAL="0^Date "_XUXTADDCDRT_" Reset"
End DoDot:1
GOTO SDCRDTGDN
+28 SET XUXTADRTNVAL="1^Service/Section will be "_XUXTADDCDRT_" on Save or Exit"
SDCRDTGDN ;
+1 IF VERBOSE
WRITE !,"SDCRDTG^XUXTADSSEF Exiting Response: ",XUXTADRTNVAL,!!
+2 KILL @XUXTADSSIA
+3 QUIT XUXTADRTNVAL
+4 ;
+5 ;
+6 ; Save a Date Closed or Date Re-opened that has been put in the global
+7 ; ^TMP("SS",$J,"DC") or ^TMP("SS",$J,"DR") respectively to the Service/Section file (^DIC(49)).
+8 ; Called when the User Exits or Saves the Form
+9 ;
+10 ; Returns
+11 ; 0^Error message when an error occurs
+12 ; 1^Success message
+13 ;
+14 ; W $$SVDCDR^XUXTADSSEF
SVDCDR() ;
+1 NEW XUXTADSSIEN,XUXTADDCDT,XUXTADRTNVAL
+2 SET XUXTADRTNVAL=0
+3 ; Save Date Closed or Date Re-opened based on globals setup in the call to SDCRDTG(AXUXTADSSIEN,AXUXTADDCRDATE,AXUXTADNODE)
+4 SET XUXTADSSIEN=$GET(^TMP("SS",$JOB,"SSIEN"))
+5 IF $LENGTH(XUXTADSSIEN)'>0
Begin DoDot:1
+6 SET XUXTADRTNVAL="1^Service/Section edits saved"
End DoDot:1
GOTO SVDCDRDN
+7 SET XUXTADDCDT=$GET(^TMP("SS",$JOB,"DC"))
+8 IF $LENGTH(XUXTADDCDT)>0
Begin DoDot:1
+9 SET XUXTADRTNVAL=$$DCRSAVE(XUXTADSSIEN,XUXTADDCDT)
End DoDot:1
GOTO SVDCDRDN
+10 SET XUXTADDCDT=$GET(^TMP("SS",$JOB,"DR"))
+11 IF $LENGTH(XUXTADDCDT)>0
Begin DoDot:1
+12 SET XUXTADRTNVAL=$$DRSAVE(XUXTADSSIEN,XUXTADDCDT)
End DoDot:1
GOTO SVDCDRDN
+13 SET XUXTADRTNVAL="0^Service/Section Date global not set"
SVDCDRDN ;
+1 IF +XUXTADRTNVAL
SET ^TMP("SS",$JOB,"SSSAVED")=$PIECE(XUXTADRTNVAL,"^",2)
+2 QUIT XUXTADRTNVAL
+3 ;
+4 ;
+5 ; Form Post Save is called when the user Saves or Exits
+6 ; Saves the Date Closed Record Date if one exists in ^TMP("SS",$J,)
+7 ; Get the Close Service/Section and Re-open Service/Section form only fields enable/disabled status
+8 ; Get the current Service/Section Open/Closed status
+9 ;
+10 ; Returns
+11 ; SDCU^SDRU^HMSG^SSOCS
+12 ; SDCU - Set Date Closed Uneditable
+13 ; SDRU - Set Date Re-opened Uneditable
+14 ; HMSG - Service/Section Date Closed/Date Reopened Help message
+15 ; SSOCS - Service/Section Open Close Status: Closed or Open
+16 ;
+17 ; W $$FMPS^XUXTADSSEF(XUXTADSSIEN)
FMPS(AXUXTADSSIEN) ;
+1 NEW XUXTADRTNVAL,XUXTADSSOCS,XUXTADBPVAL
+2 IF '$DATA(VERBOSE)
NEW VERBOSE
SET VERBOSE=0
+3 ; Save the Date Closed/Date Re-opened
+4 SET XUXTADRTNVAL=$$SVDCDR
+5 IF VERBOSE
WRITE !,"$$SVDCDR returned XUXTADRTNVAL: ",XUXTADRTNVAL,!
+6 SET XUXTADBPVAL=$$BLKPRE(AXUXTADSSIEN)
+7 IF VERBOSE
WRITE !,"$$BLKPRE(",AXUXTADSSIEN,") returned XUXTADBPVAL: ",XUXTADBPVAL,!
+8 SET XUXTADSSOCS=$$GSSOCS(AXUXTADSSIEN)
+9 IF VERBOSE
WRITE !,"$$GSSOCS(",AXUXTADSSIEN,") returned XUXTADSSOCS: ",XUXTADSSOCS,!
+10 IF (+XUXTADSSOCS)
SET $PIECE(XUXTADBPVAL,"^",4)=$PIECE(XUXTADSSOCS,"^",2)
+11 SET $PIECE(XUXTADBPVAL,"^",3)=$PIECE(XUXTADRTNVAL,"^",2)
+12 IF VERBOSE
WRITE !,"$$FMPS(",AXUXTADSSIEN,") returned: ",XUXTADBPVAL,!
+13 QUIT XUXTADBPVAL
+14 ;
+15 ;
+16 ; Set the Form Only fields CLOSE SERVICE/SECTION and RE-OPEN SERVICE/SECTION uneditable property
+17 ; based on if Users are assigned to the service/section with IEN=AXUXTADSSIEN and the current
+18 ; Date Closed field and Date Re-opened field.
+19 ; This is called in the PRE ACTION of the Block SERVICE/SECTION EDIT PG
+20 ;
+21 ; AXUXTADSSIEN - A Service/Section IEN
+22 ;
+23 ; Returns
+24 ; SDCU^SDRU^HMSG^DC
+25 ; SDCU - Set Date Closed Uneditable
+26 ; SDRU - Set Date Re-opened Uneditable
+27 ; HMSG - Service/Section Date Closed/Date Reopened Help message
+28 ; DC - Date Closed
+29 ;
+30 ; W $$BLKPRE^XUXTADSSEF(AXUXTADSSIEN)
BLKPRE(AXUXTADSSIEN) ;
+1 NEW XUXTADSSIEN,XUXTADUSRLNKS,XUXTADSSN,XUXTADCDCR,XUXTADCDC
+2 ;,XUXTADSSFILE
NEW XUXTADCDR,XUXTADRTNVAL,XUXTADSSIA
+3 SET XUXTADRTNVAL="1^1^^^"
SET XUXTADSSIA="BLKPRESSI"
+4 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+5 ; Get All Service/Section IEN's
+6 DO GASSIN(XUXTADSSIA)
+7 ;S XUXTADSSFILE=49 ; File number of SERVICE/SECTION file
+8 ;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G BLKPREDN
+9 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+10 SET $PIECE(XUXTADRTNVAL,"^",3)="Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO BLKPREDN
+11 SET XUXTADUSRLNKS=$$ISSA(XUXTADSSIEN)
+12 ;S XUXTADSSN=$P(^DIC(XUXTADSSFILE,XUXTADSSIEN,0),"^")
+13 SET XUXTADSSN=@XUXTADSSIA@(XUXTADSSIEN)
+14 IF XUXTADUSRLNKS>0
Begin DoDot:1
+15 SET $PIECE(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has users assigned and cannot be Closed/Re-opened!"
End DoDot:1
+16 IF XUXTADUSRLNKS=0
Begin DoDot:1
+17 ; Get the current Date Closed Record
+18 SET XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN)
SET XUXTADCDC=$PIECE(XUXTADCDCR,"^",1)
SET XUXTADCDR=$PIECE(XUXTADCDCR,"^",2)
+19 IF ($LENGTH(XUXTADCDC)>0)
Begin DoDot:2
+20 IF ($LENGTH(XUXTADCDR)>0)
Begin DoDot:3
+21 SET $PIECE(XUXTADRTNVAL,"^",1)=0
SET $PIECE(XUXTADRTNVAL,"^",2)=1
+22 SET $PIECE(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Closed"
End DoDot:3
+23 IF ($LENGTH(XUXTADCDR)=0)
Begin DoDot:3
+24 SET $PIECE(XUXTADRTNVAL,"^",1)=1
SET $PIECE(XUXTADRTNVAL,"^",2)=0
+25 SET $PIECE(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Re-opened"
+26 SET X=XUXTADCDC
DO CNVDT
+27 IF Y>0
SET $PIECE(XUXTADRTNVAL,"^",4)=$$FMTE(Y)
End DoDot:3
End DoDot:2
+28 IF ($LENGTH(XUXTADCDC)=0)
Begin DoDot:2
+29 SET $PIECE(XUXTADRTNVAL,"^",1)=0
SET $PIECE(XUXTADRTNVAL,"^",2)=1
+30 SET $PIECE(XUXTADRTNVAL,"^",3)="Service/Section "_XUXTADSSN_" has no users assigned and can be Closed"
End DoDot:2
End DoDot:1
BLKPREDN ;
+1 KILL @XUXTADSSIA
+2 QUIT XUXTADRTNVAL
+3 ;
+4 ;
+5 ; Save the new Date Closed record with IEN: AXUXTADDCIEN for the Service/Section with IEN: AXUXTADSSIEN
+6 ; in the Service/Section file (49)
+7 ;
+8 ; AXUXTADSSIEN - A Service/Section IEN
+9 ; AXUXTADDCIEN - A Date Closed record date (IEN)
+10 ;
+11 ; Returns
+12 ; 0^Error message when an error occurs
+13 ; 1^Success message
+14 ;
+15 ; W $$DCRSAVE^XUXTADSSEF(1049,3241008)
+16 ;
DCRSAVE(AXUXTADSSIEN,AXUXTADDCIEN) ;
+1 NEW XUXTADSSIEN,XUXTADDCIEN,XUXTADCDCR,XUXTADCDC,XUXTADCDR,XUXTADADDED
+2 NEW XUXTADGRDC,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
+3 NEW DIC,X,Y
+4 IF '$DATA(VERBOSE)
NEW VERBOSE
SET VERBOSE=0
+5 IF VERBOSE
WRITE !,"DCRSAVE^XUXTADSSEF(",$GET(AXUXTADSSIEN),",",$GET(AXUXTADDCIEN),") Called"
+6 SET XUXTADADDED=0
SET XUXTADSSIA="DCRSAVESSI"
+7 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+8 ; Get All Service/Section IEN's
+9 DO GASSI(XUXTADSSIA)
+10 ; File number of SERVICE/SECTION file
SET XUXTADSSFILE=49
+11 ; Date Closed node
SET XUXTADDCNODE=3
+12 ;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DCRSAVEDN
+13 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+14 SET XUXTADADDED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO DCRSAVEDN
+15 SET XUXTADDCIEN=+$GET(AXUXTADDCIEN)
+16 IF XUXTADDCIEN'>0
Begin DoDot:1
+17 SET XUXTADADDED="0^Invalid Date Closed IEN: "_XUXTADDCIEN
End DoDot:1
GOTO DCRSAVEDN
+18 if '$DATA(U)
SET U="^"
+19 ; Set the Global root of subfile Date Closed
+20 SET XUXTADGRDC="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_","
+21 ; Get the current Date Closed Record
+22 SET XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN)
+23 IF $LENGTH(XUXTADCDCR)=0
GOTO NEWDCR
+24 ; Check here to see if XUXTADDCIEN is equal to the last Re-opened Date.
+25 ; If it is then delete the last Re-opened date field
+26 SET XUXTADCDC=$PIECE(XUXTADCDCR,U,1)
+27 SET XUXTADCDR=$PIECE(XUXTADCDCR,U,2)
+28 IF $LENGTH(XUXTADCDR)=0
Begin DoDot:1
+29 SET XUXTADADDED="0^Service/Section is already closed"
End DoDot:1
GOTO DCRSAVEDN
+30 IF XUXTADCDR=XUXTADDCIEN
Begin DoDot:1
+31 ; Delete the Service/Section Date Re-opened field
SET XUXTADADDED=$$ESSDRF(XUXTADSSIEN,XUXTADCDC,"@")
+32 IF $PIECE(XUXTADADDED,U)
SET XUXTADADDED="1^Re-open Service/Section is cancelled, Service/Section is closed"
End DoDot:1
GOTO DCRSAVEDN
+33 ; Make sure XUXTADDCIEN is after the last Re-opened Date.
+34 IF XUXTADCDR>XUXTADDCIEN
Begin DoDot:1
+35 SET XUXTADADDED="0^Service/Section closed date must be after the last date re-opened"
End DoDot:1
GOTO DCRSAVEDN
NEWDCR ;
+1 SET DIC=XUXTADGRDC
SET DIC(0)="ML"
+2 SET X=XUXTADDCIEN
+3 DO FMDIC
+4 IF Y=-1
Begin DoDot:1
+5 SET XUXTADADDED="0^WRITE USING DIC: "_DIC_", X: "_X_" FAILED"
GOTO DCRSAVEDN
End DoDot:1
GOTO DCRSAVEDN
+6 IF $PIECE(Y,U,3)=1
SET XUXTADADDED="1^Service/Section Closed"
DCRSAVEDN ;
+1 IF VERBOSE
WRITE !,"DCRSAVE^XUXTADSSEF Exiting Response: ",XUXTADADDED,!!
+2 KILL @XUXTADSSIA
+3 QUIT XUXTADADDED
+4 ;
+5 ;
+6 ; Save the new Date Re-opened field : AXUXTADDTRE to the most recent Date Closed record
+7 ; for the Service/Section with IEN: AXUXTADSSIEN in the Service/Section file (49)
+8 ;
+9 ; AXUXTADSSIEN - A Service/Section IEN
+10 ; AXUXTADDTRE - A Date Re-opened date
+11 ;
+12 ; Returns
+13 ; 0^Error message when an error occurs
+14 ; 1^Success message
+15 ;
+16 ; W $$DRSAVE^XUXTADSSEF(1049,3241103)
+17 ;
DRSAVE(AXUXTADSSIEN,AXUXTADDTRE) ;
+1 NEW XUXTADSSIEN,XUXTADDTRE,XUXTADCDCR,XUXTADCDC,XUXTADCDR,XUXTADADDED
+2 NEW XUXTADGRDC,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
+3 NEW DIE,DA,DR,DIK
+4 IF '$DATA(VERBOSE)
NEW VERBOSE
SET VERBOSE=0
+5 IF VERBOSE
WRITE !,"DRSAVE^XUXTADSSEF(",$GET(AXUXTADSSIEN),",",$GET(AXUXTADDTRE),") Called"
+6 SET XUXTADADDED=0
SET XUXTADSSIA="DRSAVESSI"
+7 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+8 ; Get All Service/Section IEN's
+9 DO GASSI(XUXTADSSIA)
+10 ; File number of SERVICE/SECTION file
SET XUXTADSSFILE=49
+11 ; Date Closed node
SET XUXTADDCNODE=3
+12 ;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DRSAVEDN
+13 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+14 SET XUXTADADDED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO DRSAVEDN
+15 SET XUXTADDTRE=+$GET(AXUXTADDTRE)
+16 IF XUXTADDTRE'>0
Begin DoDot:1
+17 SET XUXTADADDED="0^Invalid Date Re-opened: "_XUXTADDTRE
End DoDot:1
GOTO DRSAVEDN
+18 if '$DATA(U)
SET U="^"
+19 ; Set the Global root of subfile Date Closed
+20 SET XUXTADGRDC="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_","
+21 ; Get the current Date Closed Record
+22 SET XUXTADCDCR=$$GSSCDCR(XUXTADSSIEN)
+23 ; If we don't have a Date closed record, then the Service/Section is already open
+24 IF $LENGTH(XUXTADCDCR)=0
Begin DoDot:1
+25 SET XUXTADADDED="0^Service/Section is already open"
End DoDot:1
GOTO DRSAVEDN
+26 ; Check here to see if XUXTADDTRE is equal to the current Date Closed.
+27 ; If it is then delete the current Date Closed record
+28 SET XUXTADCDC=$PIECE(XUXTADCDCR,U,1)
+29 SET XUXTADCDR=$PIECE(XUXTADCDCR,U,2)
+30 IF $LENGTH(XUXTADCDR)>0
Begin DoDot:1
+31 SET XUXTADADDED="0^Service/Section is already open"
End DoDot:1
GOTO DRSAVEDN
+32 SET DA=XUXTADCDC
SET DA(1)=XUXTADSSIEN
+33 IF XUXTADCDC=XUXTADDTRE
Begin DoDot:1
+34 ; Delete the Service/Section Date Closed Record
SET XUXTADADDED=$$DSSDCR(XUXTADSSIEN,XUXTADCDC)
+35 IF $PIECE(XUXTADADDED,U)
SET XUXTADADDED="1^Close Service/Section cancelled, Service/Section is Re-opened"
End DoDot:1
GOTO DRSAVEDN
+36 ; Make sure XUXTADDTRE is after the current Date Closed Date.
+37 IF XUXTADCDC>XUXTADDTRE
Begin DoDot:1
+38 SET XUXTADADDED="0^Service/Section re-opened date must be after the current date closed"
End DoDot:1
GOTO DRSAVEDN
+39 ; Setup the DIE call
+40 ; Global root of subfile
SET DIE=XUXTADGRDC
+41 SET DR="1////"_XUXTADDTRE
+42 DO FMDIE
+43 SET XUXTADADDED="1^Service/Section Re-opened"
DRSAVEDN ;
+1 IF VERBOSE
WRITE !,"DRSAVE^XUXTADSSEF Exiting Response: ",XUXTADADDED,!!
+2 KILL @XUXTADSSIA
+3 QUIT XUXTADADDED
+4 ;
+5 ;
+6 ; Delete the Service/Section Date Closed Record with IEN: AXUXTADDCRIEN,
+7 ; and Service/Section with IEN: AXUXTADSSIEN in the Service/Section file (49)
+8 ;
+9 ; AXUXTADSSIEN - A Service/Section IEN
+10 ; AXUXTADDCRIEN - A Date Closed IEN (Internal form)
+11 ;
+12 ; Returns
+13 ; 0^Error message when an error occurs
+14 ; 1^Success message
+15 ;
+16 ; W $$DSSDCR^XUXTADSSEF(1049,3241103)
DSSDCR(AXUXTADSSIEN,AXUXTADDCRIEN) ;
+1 NEW XUXTADSSIEN,XUXTADDCRIEN,XUXTADDELETED,XUXTADSSIA,XUXTADSSFILE,XUXTADDCNODE
+2 NEW DIK,DA
+3 IF '$DATA(VERBOSE)
NEW VERBOSE
SET VERBOSE=0
+4 IF VERBOSE
WRITE !,"DSSDCR^XUXTADSSEF(",$GET(AXUXTADSSIEN),",",$GET(AXUXTADDCRIEN),") Called"
+5 SET XUXTADDELETED=0
SET XUXTADSSIA="DSSDCRSSI"
+6 SET XUXTADSSIEN=+$GET(AXUXTADSSIEN)
+7 ; Get All Service/Section IEN's
+8 DO GASSI(XUXTADSSIA)
+9 ; File number of SERVICE/SECTION file
SET XUXTADSSFILE=49
+10 ; Date Closed node
SET XUXTADDCNODE=3
+11 ;I (XUXTADSSIEN'>0)!('$D(^DIC(XUXTADSSFILE,XUXTADSSIEN))) D G DSSDCRDN
+12 IF (XUXTADSSIEN'>0)!('$DATA(@XUXTADSSIA@(XUXTADSSIEN)))
Begin DoDot:1
+13 SET XUXTADDELETED="0^Invalid Service/Section IEN: "_XUXTADSSIEN
End DoDot:1
GOTO DSSDCRDN
+14 SET XUXTADDCRIEN=+$GET(AXUXTADDCRIEN)
+15 IF (XUXTADDCRIEN'>0)
Begin DoDot:1
+16 SET XUXTADDELETED="0^Invalid Date Closed IEN: "_XUXTADDCRIEN
End DoDot:1
GOTO DSSDCRDN
+17 SET DA=XUXTADDCRIEN
SET DA(1)=XUXTADSSIEN
+18 ; Global root of subfile
SET DIK="^DIC("_XUXTADSSFILE_","_XUXTADSSIEN_","_XUXTADDCNODE_","
+19 IF VERBOSE
WRITE !,"DIK: ",DIK,!