YS246PST ;ISP/LMT - Patch 246 Post-Install ;Dec 02, 2025@12:54:58
;;5.01;MENTAL HEALTH;**246**;Dec 30, 1994;Build 38
;
;
; Reference to TIUFLF7 in ICR #5352
; Reference to ^XWB(8994.5, in ICR #5032
; Reference to ^DIC(19, in ICR #10075
;
Q
EDTDATE ; date used to update 601.71:18
;;3260810.13
Q
;
PRE ; nothing necessary
Q
;
POST ; post-init
;
D INSTALLQ^YTXCHG("XCHGLST","YS246PST")
;
D DDNOTE("CCICM20") ;Add note titles to that were never set up
D DDNOTE("DDS2") ;Add note titles to that were never set up
D DDNOTE("NEWS") ;Add note titles to that were never set up
D DDNOTE("PASS-1") ;Add note titles to that were never set up
D DDNOTE("PASS-2") ;Add note titles to that were never set up
D UPDOP("C-SSRS_V2")
D DEACTTST("C-SSRS")
D DEACTTST("EAT-26")
D DEACTTST("AAQ-2")
D QUERSTRT ;Task job to update restart days to 7 for all instruments except 0-day restart
;
D UPDURL ; Update GUI TOOLS URL for MHA Web
Q
;
UPDOP(NAME) ; Update OPERATIONAL to CLINICAL REMINDER
N IEN,REC
S IEN=$O(^YTT(601.71,"B",NAME,0))
I +IEN'=0 D
. S REC(10)="C"
. S REC(18)=$P($T(EDTDATE+1),";;",2)
. D FMUPD^YTXCHGU(601.71,.REC,IEN)
Q
DEACTTST(NAME) ; Change OPERATIONAL to DROPPED
N IEN,REC
S IEN=$O(^YTT(601.71,"B",NAME,0))
I +IEN'=0 D
. S REC(10)="D"
. S REC(18)=$P($T(EDTDATE+1),";;",2)
. D FMUPD^YTXCHGU(601.71,.REC,IEN)
K REC,IEN
S IEN=$O(^YTT(601,"B",NAME,0))
I 'IEN QUIT
S REC(32)="N"
D FMUPD^YTXCHGU(601,.REC,IEN)
Q
;
DDNOTE(NAME) ; Add default note for this instrument
N IEN,NOTE,CSLT,REC,ALTNOTE,ALTCSLT
S IEN=$O(^YTT(601.71,"B",NAME,0)) Q:'IEN
I $P($G(^YTT(601.71,IEN,2)),U,2)'?1(1"Y",1"C") QUIT ; must be operational/clinical reminder
;Q:$P($G(^YTT(601.71,IEN,8)),U,9)>0 ; note title already there
S NOTE=+$$DDEFIEN^TIUFLF7("MENTAL HEALTH DIAGNOSTIC STUDY NOTE","TL")
S CSLT=+$$DDEFIEN^TIUFLF7("MENTAL HEALTH CONSULT NOTE","TL")
S ALTNOTE=+$$DDEFIEN^TIUFLF7("MH DIAGNOSTIC STUDY NOTE","TL")
S ALTCSLT=+$$DDEFIEN^TIUFLF7("MH CONSULT NOTE","TL")
S:CSLT=0&(ALTCSLT'=0) CSLT=ALTCSLT
S:NOTE=0&(ALTNOTE'=0) NOTE=ALTNOTE
I 'NOTE,'CSLT QUIT ; neither title found
I NOTE'=0 S REC(29)=NOTE
I CSLT'=0 S REC(30)=CSLT
S REC(28)="Y"
D FMSAVE^YTXCHGI(1,601.71,.REC,IEN) ; FMSAVE in case dry run
D LOG^YTXCHGU("info","Linked note title.")
Q
;
SCREEN ; line to put in DATA SCREEN of KIDS build
; $$INCLUDE^YTXCHG(Y,"TAG","RTN") calls TAG^RTN to get an array of
; instrument exchange entries to include in the build. It sets Y
; to true if the entry should be included.
;
I $$INCLUDE^YTXCHG(Y,"XCHGLST","YS246PST")
Q
;
QUERSTRT ;Task job to update restart days to 7 for all instruments except 0-day restart
N YSZOTH,YSTASK
D BMES^XPDUTL(" Tasking job to update restart days...")
S YSZOTH("ZTDTH")=$H
S YSTASK=$$NODEV^XUTMDEVQ("UPDRSTRT^YS246PST","YS*5.01*246 Post Install - Update Restart Days",,.YSZOTH,0)
I YSTASK>0 D MES^XPDUTL(" Task #"_YSTASK)
I YSTASK<0 D MES^XPDUTL(" Failed to task job.")
Q
;
UPDRSTRT ; Update MH TESTS AND SURVEYS restart days to 7
N IEN,RSTRT,REC
N NWRSTRT
S NWRSTRT=7
S IEN=0 F S IEN=$O(^YTT(601.71,IEN)) Q:+IEN=0 D
. S RSTRT=$P($G(^YTT(601.71,IEN,8)),U,7)
. Q:RSTRT=0
. I $P(^YTT(601.71,IEN,0),U)="BPS" S NWRSTRT=90 ;Special if BPS installed.
. S $P(^YTT(601.71,IEN,8),U,7)=NWRSTRT
. K REC
. S REC(18)=$P($T(EDTDATE+1),";;",2)
. D FMUPD^YTXCHGU(601.71,.REC,IEN)
;Update JSON
N LC,STR,RST1,NUM,DUN
N ERRS,CRCCALC,REC
S IEN=0 F S IEN=$O(^YTT(601.712,IEN)) Q:+IEN=0 D
. S DUN=0 K ERRS
. S LC=0 F S LC=$O(^YTT(601.712,IEN,1,LC)) Q:+LC=0!DUN D
.. S STR=$G(^YTT(601.712,IEN,1,LC,0)) Q:STR=""
.. Q:STR'["restartDays"
.. S RST1=$P(STR,": "),NUM=$P($P(STR,": ",2),",")
.. I NUM=0 S DUN=1 Q
.. S RST1=RST1_": "_7_", "
.. S ^YTT(601.712,IEN,1,LC,0)=RST1
.. D CHKSPEC^YTWJSONE($NA(^YTT(601.712,IEN,1)),.ERRS,.CRCCALC)
.. I $G(ERRS) S DUN=1 Q
.. K REC
.. S REC(.02)=$$NOW^XLFDT
.. S REC(.03)=CRCCALC
.. D FMUPD^YTXCHGU(601.712,.REC,IEN)
.. S DUN=1
S ZTREQ="@"
Q
;
UPDURL ; Update GUI TOOLS URL for MHA Web
N LIST,PARM,ERR,ENT,INST,VAL,TITL,CMD,SPEC,NEWVAL
K ^TMP($J,"XPAR")
S LIST=$NA(^TMP($J,"XPAR"))
S PARM="ORWT TOOLS MENU"
D ENVAL^XPAR(LIST,PARM,"",.ERR,1)
S ^XTMP("YS246-TOOLS",0)=$$FMADD^XLFDT(DT,7)_U_DT_U_"MH Backup Tools Menu"
M ^XTMP("YS246-TOOLS","XPAR")=^TMP($J,"XPAR")
S SPEC("/home?")="/home/patch246/?",SPEC("/home/?")="/home/patch246/?" ;In case URL entered home/? Patch 269
S SPEC("/home/patch269/?")="/home/patch246/?" ;Patch 246
S ENT="" F S ENT=$O(^TMP($J,"XPAR",ENT)) Q:ENT="" D
. S INST=0 F S INST=$O(^TMP($J,"XPAR",ENT,INST)) Q:+INST=0 D
.. S VAL=^TMP($J,"XPAR",ENT,INST)
.. I (VAL["mha.domain.ext/app/home?"!(VAL["mha.domain.ext/app/home/")) D
... S TITL=$P(VAL,"="),CMD=$P(VAL,"=",2,99)
... S CMD=$$REPLACE^XLFSTR(CMD,.SPEC)
... S NEWVAL=TITL_"="_CMD
... D BMES^XPDUTL("Updating "_CMD_" for "_ENT)
... D EN^XPAR(ENT,PARM,INST,NEWVAL,.ERR)
K ^TMP($J,"XPAR")
Q
;
XCHGLST(ARRAY) ; return array of instrument exchange entries
; ARRAY(cnt,1)=instrument exchange entry name
; ARRAY(cnt,2)=instrument exchange entry creation date
;
N I,X
F I=1:1 S X=$P($T(ENTRIES+I),";;",2,99) Q:X="zzzzz" D
. S ARRAY(I,1)=$P(X,U)
. S ARRAY(I,2)=$P(X,U,2)
Q
;
ENTRIES ; New MHA instruments ^ Exchange Entry Date
;;YS*5.01*246 AUDC^08/10/2026@11:15:28
;;YS*5.01*246 CCICM20^04/28/2025@16:14:17
;;YS*5.01*246 DDS2^04/28/2025@16:14:31
;;YS*5.01*246 MAHC-10^04/02/2026@13:25:43
;;YS*5.01*246 NEWS^04/28/2025@16:13:19
;;YS*5.01*246 PASS-1^04/28/2025@16:13:46
;;YS*5.01*246 PASS-2^04/28/2025@16:14:02
;;YS*5.01*246 C-SSRS_V2^08/04/2026@13:36:10
;;YS*5.01*246 MOCA_8.1^08/04/2026@13:36:39
;;YS*5.01*246 MOCA_8.2^08/04/2026@13:37:08
;;YS*5.01*246 MOCA_8.3^08/04/2026@13:37:36
;;zzzzz
;
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYS246PST 5967 printed Oct 28, 2026@01:07:31 Page 2
YS246PST ;ISP/LMT - Patch 246 Post-Install ;Dec 02, 2025@12:54:58
+1 ;;5.01;MENTAL HEALTH;**246**;Dec 30, 1994;Build 38
+2 ;
+3 ;
+4 ; Reference to TIUFLF7 in ICR #5352
+5 ; Reference to ^XWB(8994.5, in ICR #5032
+6 ; Reference to ^DIC(19, in ICR #10075
+7 ;
+8 QUIT
EDTDATE ; date used to update 601.71:18
+1 ;;3260810.13
+2 QUIT
+3 ;
PRE ; nothing necessary
+1 QUIT
+2 ;
POST ; post-init
+1 ;
+2 DO INSTALLQ^YTXCHG("XCHGLST","YS246PST")
+3 ;
+4 ;Add note titles to that were never set up
DO DDNOTE("CCICM20")
+5 ;Add note titles to that were never set up
DO DDNOTE("DDS2")
+6 ;Add note titles to that were never set up
DO DDNOTE("NEWS")
+7 ;Add note titles to that were never set up
DO DDNOTE("PASS-1")
+8 ;Add note titles to that were never set up
DO DDNOTE("PASS-2")
+9 DO UPDOP("C-SSRS_V2")
+10 DO DEACTTST("C-SSRS")
+11 DO DEACTTST("EAT-26")
+12 DO DEACTTST("AAQ-2")
+13 ;Task job to update restart days to 7 for all instruments except 0-day restart
DO QUERSTRT
+14 ;
+15 ; Update GUI TOOLS URL for MHA Web
DO UPDURL
+16 QUIT
+17 ;
UPDOP(NAME) ; Update OPERATIONAL to CLINICAL REMINDER
+1 NEW IEN,REC
+2 SET IEN=$ORDER(^YTT(601.71,"B",NAME,0))
+3 IF +IEN'=0
Begin DoDot:1
+4 SET REC(10)="C"
+5 SET REC(18)=$PIECE($TEXT(EDTDATE+1),";;",2)
+6 DO FMUPD^YTXCHGU(601.71,.REC,IEN)
End DoDot:1
+7 QUIT
DEACTTST(NAME) ; Change OPERATIONAL to DROPPED
+1 NEW IEN,REC
+2 SET IEN=$ORDER(^YTT(601.71,"B",NAME,0))
+3 IF +IEN'=0
Begin DoDot:1
+4 SET REC(10)="D"
+5 SET REC(18)=$PIECE($TEXT(EDTDATE+1),";;",2)
+6 DO FMUPD^YTXCHGU(601.71,.REC,IEN)
End DoDot:1
+7 KILL REC,IEN
+8 SET IEN=$ORDER(^YTT(601,"B",NAME,0))
+9 IF 'IEN
QUIT
+10 SET REC(32)="N"
+11 DO FMUPD^YTXCHGU(601,.REC,IEN)
+12 QUIT
+13 ;
DDNOTE(NAME) ; Add default note for this instrument
+1 NEW IEN,NOTE,CSLT,REC,ALTNOTE,ALTCSLT
+2 SET IEN=$ORDER(^YTT(601.71,"B",NAME,0))
if 'IEN
QUIT
+3 ; must be operational/clinical reminder
IF $PIECE($GET(^YTT(601.71,IEN,2)),U,2)'?1(1"Y",1"C")
QUIT
+4 ;Q:$P($G(^YTT(601.71,IEN,8)),U,9)>0 ; note title already there
+5 SET NOTE=+$$DDEFIEN^TIUFLF7("MENTAL HEALTH DIAGNOSTIC STUDY NOTE","TL")
+6 SET CSLT=+$$DDEFIEN^TIUFLF7("MENTAL HEALTH CONSULT NOTE","TL")
+7 SET ALTNOTE=+$$DDEFIEN^TIUFLF7("MH DIAGNOSTIC STUDY NOTE","TL")
+8 SET ALTCSLT=+$$DDEFIEN^TIUFLF7("MH CONSULT NOTE","TL")
+9 if CSLT=0&(ALTCSLT'=0)
SET CSLT=ALTCSLT
+10 if NOTE=0&(ALTNOTE'=0)
SET NOTE=ALTNOTE
+11 ; neither title found
IF 'NOTE
IF 'CSLT
QUIT
+12 IF NOTE'=0
SET REC(29)=NOTE
+13 IF CSLT'=0
SET REC(30)=CSLT
+14 SET REC(28)="Y"
+15 ; FMSAVE in case dry run
DO FMSAVE^YTXCHGI(1,601.71,.REC,IEN)
+16 DO LOG^YTXCHGU("info","Linked note title.")
+17 QUIT
+18 ;
SCREEN ; line to put in DATA SCREEN of KIDS build
+1 ; $$INCLUDE^YTXCHG(Y,"TAG","RTN") calls TAG^RTN to get an array of
+2 ; instrument exchange entries to include in the build. It sets Y
+3 ; to true if the entry should be included.
+4 ;
+5 IF $$INCLUDE^YTXCHG(Y,"XCHGLST","YS246PST")
+6 QUIT
+7 ;
QUERSTRT ;Task job to update restart days to 7 for all instruments except 0-day restart
+1 NEW YSZOTH,YSTASK
+2 DO BMES^XPDUTL(" Tasking job to update restart days...")
+3 SET YSZOTH("ZTDTH")=$HOROLOG
+4 SET YSTASK=$$NODEV^XUTMDEVQ("UPDRSTRT^YS246PST","YS*5.01*246 Post Install - Update Restart Days",,.YSZOTH,0)
+5 IF YSTASK>0
DO MES^XPDUTL(" Task #"_YSTASK)
+6 IF YSTASK<0
DO MES^XPDUTL(" Failed to task job.")
+7 QUIT
+8 ;
UPDRSTRT ; Update MH TESTS AND SURVEYS restart days to 7
+1 NEW IEN,RSTRT,REC
+2 NEW NWRSTRT
+3 SET NWRSTRT=7
+4 SET IEN=0
FOR
SET IEN=$ORDER(^YTT(601.71,IEN))
if +IEN=0
QUIT
Begin DoDot:1
+5 SET RSTRT=$PIECE($GET(^YTT(601.71,IEN,8)),U,7)
+6 if RSTRT=0
QUIT
+7 ;Special if BPS installed.
IF $PIECE(^YTT(601.71,IEN,0),U)="BPS"
SET NWRSTRT=90
+8 SET $PIECE(^YTT(601.71,IEN,8),U,7)=NWRSTRT
+9 KILL REC
+10 SET REC(18)=$PIECE($TEXT(EDTDATE+1),";;",2)
+11 DO FMUPD^YTXCHGU(601.71,.REC,IEN)
End DoDot:1
+12 ;Update JSON
+13 NEW LC,STR,RST1,NUM,DUN
+14 NEW ERRS,CRCCALC,REC
+15 SET IEN=0
FOR
SET IEN=$ORDER(^YTT(601.712,IEN))
if +IEN=0
QUIT
Begin DoDot:1
+16 SET DUN=0
KILL ERRS
+17 SET LC=0
FOR
SET LC=$ORDER(^YTT(601.712,IEN,1,LC))
if +LC=0!DUN
QUIT
Begin DoDot:2
+18 SET STR=$GET(^YTT(601.712,IEN,1,LC,0))
if STR=""
QUIT
+19 if STR'["restartDays"
QUIT
+20 SET RST1=$PIECE(STR,": ")
SET NUM=$PIECE($PIECE(STR,": ",2),",")
+21 IF NUM=0
SET DUN=1
QUIT
+22 SET RST1=RST1_": "_7_", "
+23 SET ^YTT(601.712,IEN,1,LC,0)=RST1
+24 DO CHKSPEC^YTWJSONE($NAME(^YTT(601.712,IEN,1)),.ERRS,.CRCCALC)
+25 IF $GET(ERRS)
SET DUN=1
QUIT
+26 KILL REC
+27 SET REC(.02)=$$NOW^XLFDT
+28 SET REC(.03)=CRCCALC
+29 DO FMUPD^YTXCHGU(601.712,.REC,IEN)
+30 SET DUN=1
End DoDot:2
End DoDot:1
+31 SET ZTREQ="@"
+32 QUIT
+33 ;
UPDURL ; Update GUI TOOLS URL for MHA Web
+1 NEW LIST,PARM,ERR,ENT,INST,VAL,TITL,CMD,SPEC,NEWVAL
+2 KILL ^TMP($JOB,"XPAR")
+3 SET LIST=$NAME(^TMP($JOB,"XPAR"))
+4 SET PARM="ORWT TOOLS MENU"
+5 DO ENVAL^XPAR(LIST,PARM,"",.ERR,1)
+6 SET ^XTMP("YS246-TOOLS",0)=$$FMADD^XLFDT(DT,7)_U_DT_U_"MH Backup Tools Menu"
+7 MERGE ^XTMP("YS246-TOOLS","XPAR")=^TMP($JOB,"XPAR")
+8 ;In case URL entered home/? Patch 269
SET SPEC("/home?")="/home/patch246/?"
SET SPEC("/home/?")="/home/patch246/?"
+9 ;Patch 246
SET SPEC("/home/patch269/?")="/home/patch246/?"
+10 SET ENT=""
FOR
SET ENT=$ORDER(^TMP($JOB,"XPAR",ENT))
if ENT=""
QUIT
Begin DoDot:1
+11 SET INST=0
FOR
SET INST=$ORDER(^TMP($JOB,"XPAR",ENT,INST))
if +INST=0
QUIT
Begin DoDot:2
+12 SET VAL=^TMP($JOB,"XPAR",ENT,INST)
+13 IF (VAL["mha.domain.ext/app/home?"!(VAL["mha.domain.ext/app/home/"))
Begin DoDot:3
+14 SET TITL=$PIECE(VAL,"=")
SET CMD=$PIECE(VAL,"=",2,99)
+15 SET CMD=$$REPLACE^XLFSTR(CMD,.SPEC)
+16 SET NEWVAL=TITL_"="_CMD
+17 DO BMES^XPDUTL("Updating "_CMD_" for "_ENT)
+18 DO EN^XPAR(ENT,PARM,INST,NEWVAL,.ERR)
End DoDot:3
End DoDot:2
End DoDot:1
+19 KILL ^TMP($JOB,"XPAR")
+20 QUIT
+21 ;
XCHGLST(ARRAY) ; return array of instrument exchange entries
+1 ; ARRAY(cnt,1)=instrument exchange entry name
+2 ; ARRAY(cnt,2)=instrument exchange entry creation date
+3 ;
+4 NEW I,X
+5 FOR I=1:1
SET X=$PIECE($TEXT(ENTRIES+I),";;",2,99)
if X="zzzzz"
QUIT
Begin DoDot:1
+6 SET ARRAY(I,1)=$PIECE(X,U)
+7 SET ARRAY(I,2)=$PIECE(X,U,2)
End DoDot:1
+8 QUIT
+9 ;
ENTRIES ; New MHA instruments ^ Exchange Entry Date
+1 ;;YS*5.01*246 AUDC^08/10/2026@11:15:28
+2 ;;YS*5.01*246 CCICM20^04/28/2025@16:14:17
+3 ;;YS*5.01*246 DDS2^04/28/2025@16:14:31
+4 ;;YS*5.01*246 MAHC-10^04/02/2026@13:25:43
+5 ;;YS*5.01*246 NEWS^04/28/2025@16:13:19
+6 ;;YS*5.01*246 PASS-1^04/28/2025@16:13:46
+7 ;;YS*5.01*246 PASS-2^04/28/2025@16:14:02
+8 ;;YS*5.01*246 C-SSRS_V2^08/04/2026@13:36:10
+9 ;;YS*5.01*246 MOCA_8.1^08/04/2026@13:36:39
+10 ;;YS*5.01*246 MOCA_8.2^08/04/2026@13:37:08
+11 ;;YS*5.01*246 MOCA_8.3^08/04/2026@13:37:36
+12 ;;zzzzz
+13 ;
+14 QUIT
+15 ;