YSCLSERV ;DALOI/hrubovcak - Clozapine data server ; 8 Nov 2019 15:21:58
;;5.01;MENTAL HEALTH;**18,22,26,47,61,69,74,90,92,122,154,165**;Dec 30, 1994;Build 2
; Reference to ^%ZOSF supported by IA #10096
; Reference to ^DPT supported by IA #10035
; Reference to ^DD("DD" supported by IA #10017
; Reference to ^PS(55 supported by IA #787
; Reference to ^PSDRUG supported by IA #25
; Reference to ^PSRX supported by IA #780
; Reference to ^VA(200 supported by IA #10060
; Reference to $$SITE^VASITE supported by IA #10112
; Reference to $$FMTE^XLFDT() supported by IA #10103
; Reference to ^PSDRUG supported by IA #221
; Reference to ^XMD supported by IA #10070
; Reference to ^DIC supported by DBIA #2051
; Reference to ^DIE supported by DBIA #2053
; Reference to ^DIQ supported by DBIA #2056
; Reference to ^DIK supported by DBIA #10013
; Reference to MIX^DIC1 supported by DBIA #10007
; Reference to FILE^DICN supported by DBIA #10009
; Reference to ^%DTC supported by DBIA #10000
; Reference to ^%DT supported by DBIA #10003
;
START ;
;
D DT^DICRW K ^TMP($J,"YSCLXMSG")
S YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
S YSCLST=$P($$SITE^VASITE,U,3)
S YSCLSTN=$P($$SITE^VASITE,U,2)
;Determine station number
I $G(PSCLOZ) G UNREG
S X=XQSUB X ^%ZOSF("UPPERCASE") S YSCLSUB=Y
I YSCLSUB["FILE603.01" G LKUP^YSCLSRV3
D ADD2TXT($S(YSDEBUG:"DEBUG ",1:"")_YSCLSUB_" triggered at "_YSCLST_" by "_XMFROM_" on "_XQDATE)
I YSCLSUB["DELETEALL" G DELALL
;The first line of the message tells who requested the action and when
D
.S YSACTION=$S(YSCLSUB["REMOVE"!(YSCLSUB["DELETE"):"data deleted",YSCLSUB["REPORT":"report generated",YSCLSUB["REBUILD":"data verified",YSCLSUB["UPDATE":"data updated",YSCLSUB["DATESET":"date set",1:"CONT")
.I YSACTION="CONT" S YSACTION=$S(YSCLSUB["DEMOG RESET":"Demographics Flag Reset",YSCLSUB["DEBUG":"Debug Mode set",YSCLSUB["AUTH":"Authorization",YSCLSUB["LOCK":"Lock",1:"Site Lock")
.D ADD2TXT($S(YSDEBUG:"DEBUG ",1:"")_YSACTION_" at "_YSCLST)
;The second line tells when the server is activated and no data can be
;gathered from the MailMan message. This line gets replaced if the
;server finds something to do.
I YSCLSUB["REMOVE"!(YSCLSUB["DELETE") G DELETE
;If the subject contains the word REMOVE or DELETE delete those entries from the list.
I YSCLSUB["REPORT" G REPORT
;If the subject contains "REPORT" send a report of the currently registered patients to the Clozapine group on Forum
;I YSCLSUB["REBUILD" G REBUILD
I YSCLSUB["RESEND" G RESEND
I YSCLSUB["UPDATE" G UPDATE
;I YSCLSUB["CHECKSUM" G CSUM^YSCLSRV1
I YSCLSUB["DATESET" G DSET
I YSCLSUB["DEBUG" G DEBUG
I YSCLSUB["PATIENT" G ^YSCLSRV3
I YSCLSUB["LOCKOUT" G LOCK^YSCLSRV3
I YSCLSUB="DEMOG RESET" G DEMOG^YSCLSRV3
I YSCLSUB["AUTHORIZE" G AUTH^YSCLSRV3
I YSCLSUB="OVERRIDE" G OVRRID^YSCLSRV2
I YSCLSUB="CLAPI" G CLAPI^YSCLSRV2
I YSCLSUB="CL1API" G CL1API^YSCLSRV2
I YSCLSUB["DISCON" G DCON^YSCLSRV2
F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
. ;Verify that + of site number matches local site number
. I XMRG'?2U5N1","9N1","1U S YSCLER=" is in error and was not added at " D OUT Q
. I $P(XMRG,",")'?2U5N S YSCLER=" is not a valid Clozapine number " D OUT Q
. I $P(XMRG,",",2)'?9N S YSCLER=" An SSN must be 9 numbers " D OUT Q
. I $P(XMRG,",",3)'="B",$P(XMRG,",",3)'="W",$P(XMRG,",",3)'="M" S YSCLER=" You must specify Weekly, Biweekly, or Monthly " D OUT Q
. ;Validate the format of the data in the message and report the error.
. ;Do not add data for records where the SSN sent is not in the local database
. S DIC="^DPT(",DIC(0)="X",D="SSN",X=$P(XMRG,",",2)
. N YSFMARRY,YSFREQ D LIST^DIC(2,,.09,,,,X,"SSN",,,"YSFMARRY")
. S DFN=$G(YSFMARRY("DILIST",2,1)) I DFN="" S YSCLER=" SSN does not exist at " D OUT Q
. ;I '$D(^DPT("SSN",X)) S YSCLER=" SSN does not exist at " D OUT Q
. K YSFMARRY D LIST^DIC(603.01,,1,,,,$P(XMRG,","),,,,"YSFMARRY")
. I $D(YSFMARRY("DILIST","ID",1,1)) D D OUT Q
. . S YSCLER=" Clozapine # is in use by "_YSFMARRY("DILIST","ID",1,1)_" at "
. ;I $D(^YSCL(603.01,"B",$P(XMRG,","))) S YSCLX=$O(^YSCL(603.01,"B",$P(XMRG,","),"")) S:YSCLX]"" YSCLX=$P(^YSCL(603.01,YSCLX,0),U,2),YSCLER=" Clozapine # is in use by "_$P($G(^DPT(YSCLX,0)),U)_" at " D OUT Q
. D MIX^DIC1 S YSCLPT=+Y I Y=-1 S YSCLER=" could not be added at " D OUT Q
. ;Add the data and report any errors to the Roll-Up group at Forum.
. K DD S DIC="^YSCL(603.01,",YSFREQ=$P(XMRG,",",3) S:YSFREQ="" YSFREQ="W" ; default to weekly
. S X=$P(XMRG,","),DIC("DR")="1////"_YSCLPT_";2////"_$S("BMW"[YSFREQ:YSFREQ,1:"W"),DIC(0)="Z" K DO D FILE^DICN
. K YSFMARRY D LIST^DIC(603.01,,".01E;1E;2E",,,,$P(XMRG,","),,,,"YSFMARRY")
. I $D(YSFMARRY("DILIST","ID",1,1)) D
. S YSCLER=" assigned to "_YSFMARRY("DILIST","ID",1,1)_" at " D OUT
;
EXIT ;If all went well, report that too.
S YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
S XMDUN="NCCC LOGGER",XMDUZ=".5",XMSUB=$S(YSDEBUG:"DEBUG ",YSCLSUB["DEBUG":"DEBUG ",1:"")_YSCLST_" NCCC ENROLLER ("_$$NOW^XLFDT_")"
;
;/MZR -Begin modifications for YS*5.01*122
K XMY N YSPROD,YSXMZ
S YSPROD=$$GET1^DIQ(8989.3,1,501,"I")
D:YSPROD
. I 'YSDEBUG S XMY("G.CLOZAPINE ROLL-UP@DOMAIN.EXT")="" Q
. S XMY("G.CLOZAPINE DEBUG@FO-DALLAS.DOMAIN.EXT")=""
S:'YSPROD XMY("G.CLOZAPINE ROLL-UP")="",XMY("G.PSOCLOZ")=""
;/MZR - End modifications for YS*5.01*122
;
D ; add mail group info to message text
. D ADD2TXT(" ")
. N G S G="G." F S G=$O(XMY(G)) Q:G="" D ADD2TXT(" Sent to: "_G)
. D ADD2TXT(" "),ADD2TXT($J("*** END OF REPORT ***",45))
; Mail the errors and successes back to the Roll-Up group at Forum.
D SENDMSG^XMXAPI(DUZ,XMSUB,$NA(^TMP($J,"YSCLXMSG")),.XMY,"",.YSXMZ)
;
K ^TMP($J,"YSCLXMSG")
K %,%DT,%H,D,DA,DD,DIC,DIE,DIK,RET,X,XMDUN,XMDUZ,XMER,XMFROM
K XMREC,XMRG,XMSUB,XMTEXT,XMY,XMZ,XQDATE,XQSUB,Y,YSA,YSACTION,YSCLTYPE
K YSCL28,YSCLA,YSCLAA,YSCLB,YSCLC,YSCLDA,YSCLDA1,YSCLDATA,YSCLDEA1
K YSCLDFN,YSCLDM,YSCLDOC,YSCLDOM,YSCLDR,YSCLDRA,YSCLDRB,YSCLDTA,YSCLERR
K YSCLDUZ,YSCLED,YSCLER,YSCLFDA,YSCLFRQ,YSCLLNT,YSCLNM,YSCLOVR,YSCLSITE
K YSCLPT,YSCLRPT,YSCLSD1,YSCLSDT,YSCLSSN,YSCLST,YSCLSTN,YSCLSUB,YSCLTC
K YSCLRX,YSCLSAND,YSCLWB,YSCLX,YSCLYN,YSDEBUG,YSI,YSOFF,YSPR,ZTQUEUED,ZTSK
Q
;/RBN Begin mods - YS*5.01*122
UNREG I $G(PSCLOZ) D Q
. ;Verify that + of site number matches local site number
. I XMRG'?1U4.6N1",".U1",".U1","4N S YSCLER=" is in error and was not added at " D OUT Q
. I $P(XMRG,",")'?1U4.6N S YSCLER=" is not a valid Clozapine number " D OUT Q
. I $P(XMRG,",",4)'?4N S YSCLER=" An SSN must be 4 numbers " D OUT Q
. ;Validate the format of the data in the message and report the error.
. ;Do not add data for records where the SSN sent is not in the local database
. S DIC="^DPT(",DIC(0)="X",D="SSN",X=SSN
. N YSFMARRY D LIST^DIC(2,,.09,,,,X,"SSN",,,"YSFMARRY")
. S DFN=$G(YSFMARRY("DILIST",2,1)) I DFN="" S YSCLER=" SSN does not exist at " D OUT Q
. K YSFMARRY D LIST^DIC(603.01,,1,,,,$P(XMRG,","),,,,"YSFMARRY")
. I $D(YSFMARRY("DILIST","ID",1,1)) D D OUT Q
. . S YSCLER=" Clozapine # is in use by "_YSFMARRY("DILIST","ID",1,1)_" at "
. D MIX^DIC1 S YSCLPT=+Y I Y=-1 S YSCLER=" could not be added at " D OUT Q
. ;Add the data and report any errors to the Roll-Up group at Forum.
. K DD S DIC="^YSCL(603.01,",X=$P(XMRG,","),DIC("DR")="1////"_YSCLPT_";2////"_"W" K DO D FILE^DICN
. K YSFMARRY D LIST^DIC(603.01,,1,,,,$P(XMRG,","),,,,"YSFMARRY")
. I $D(YSFMARRY("DILIST","ID",1,1)) S YSCLER=" assigned to "_YSFMARRY("DILIST","ID",1,1)_" at " D OUT
;/RBN End mods - YS*5.01*122
Q
DELETE ;Allow the NCCC users to delete clozapine registration at the individual sites
I XQSUB["DELETEALL" G DELALL
F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
. I XMRG="**++**DELETEALL**++**" D DELALL Q
. N YSFMARRY D LIST^DIC(603.01,,1,,,,$P(XMRG,","),,,,"YSFMARRY")
. I '$D(YSFMARRY("DILIST","ID",1,1)) S YSCLER=" "_$P(XMRG,",")_" is not registered at " D OUT Q
. ;I '$D(^YSCL(603.01,"B",$P(XMRG,","))) S YSCLER=" "_$P(XMRG,",")_" is not registered at " D OUT Q
. N YSFMARRY D LIST^DIC(2,,.09,,,,$P(XMRG,",",2),"SSN",,,"YSFMARRY")
. S YSCLDFN=$G(YSFMARRY("DILIST",2,1)) I YSCLDFN="" S YSCLER=" "_$P(XMRG,",",2)_" is not a valid SSN at " D OUT Q
. ;S YSCLDFN=$O(^DPT("SSN",$P(XMRG,",",2),"")) I YSCLDFN="" S YSCLER=" "_$P(XMRG,",")_" is not a valid SSN at " D OUT Q
. K YSFMARRY D LIST^DIC(603.01,,1,"I",,,YSCLDFN,"C",,,"YSFMARRY")
. I '$D(YSFMARRY("DILIST","ID",1,1)) S YSCLER=" "_$P(XMRG,",",2)_" is not registered at " D OUT Q
. ;I '$D(^YSCL(603.01,"C",YSCLDFN)) S YSCLER=" "_$P(XMRG,",",2)_" is not registered at " D OUT Q
. S YSCLA=YSFMARRY("DILIST",2,1) ;I YSCLA="" S YSCLER=" "_$P(XMRG,",")_" is not a valid entry at " D OUT Q
. ;K ^YSCL(603.01,YSCLA),^YSCL(603.01,"B",$P(XMRG,","),YSCLA),^YSCL(603.01,"C",YSCLDFN,YSCLA)
. S DIK="^YSCL(603.01,",DA=YSCLA D ^DIK
. S YSCLER=" removed at " D OUT
. ;I $D(^YSCL(603.01,"C",+Y)) K ^YSCL(603.01,YSCLA),^YSCL(603.01,"B",$P(XMRG,","),YSCLA),^YSCL(603.01,"C",YSCLDFN,YSCLA) S YSCLER=" removed at " D OUT Q ;RLM 9-29-99 ADDED QUIT
G EXIT
DELALL ;Delete all patients in file 603.01
;
D ADD2TXT("The deletion of ALL patients in File #603.01 has been disabled.")
D ADD2TXT("No action taken.")
G EXIT
;
N YSFMARRY,DFN,YSCLA,YSCLREGN
D LIST^DIC(603.01,,"1;2","I",,,,"C",,,"YSFMARRY")
F I=1:1 Q:'$D(YSFMARRY("DILIST",2,I)) S YSCLA=YSFMARRY("DILIST",2,I) D:YSCLA
. S DFN=YSFMARRY("DILIST",1,I),YSCLREGN=YSFMARRY("DILIST","ID",I,.01)
. S YSCLER=YSCLREGN_", "_$$GET1^DIQ(2,DFN,.09)_", ("_YSFMARRY("DILIST","ID",I,2)_") deleted at " D OUT
. S DIK="^YSCL(603.01,",DA=YSCLA D ^DIK ;K ^YSCL(603.01,YSCLA)
Q
REPORT ;send report of current registrations to the Clozapine group on Forum
D REPORT^YSCLSRV2 G EXIT
OUT ;
D ADD2TXT(XMRG_YSCLER_YSCLST) Q
;Build the text for the return message here.
REBUILD ;
D REBUILD^YSCLSRV2 G EXIT
UPDATE ;Update record with Monthly, Weekly or Bi-weekly status
N YSARRAY D LIST^DIC(603.01,,,"I",,,,,,,"YSARRAY")
F I=1:1 Q:'$D(YSARRAY("DILIST",2,I)) D
.S YSARRAY(YSARRAY("DILIST",2,I))=YSARRAY("DILIST",1,I)
.S YSARRAY("B",YSARRAY("DILIST",1,I))=YSARRAY("DILIST",2,I)
K YSARRAY("DILIST")
F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
. I XMRG'?2U5N1","9N1","1U S YSCLER=" is in error and was not added at " D OUT Q
. I $P(XMRG,",")'?2U5N S YSCLER=" is not a valid Clozapine number format " D OUT Q
. I $P(XMRG,",",2)'?9N S YSCLER=" An SSN must be 9 numbers " D OUT Q
. I $P(XMRG,",",3)'="B",$P(XMRG,",",3)'="W",$P(XMRG,",",3)'="M" S YSCLER=" You must specify Monthly, Weekly or Biweekly " D OUT Q ;RLM 06/15/05
. S YSCLNM=$P(XMRG,","),YSCLSSN=$P(XMRG,",",2),YSCLWB=$P(XMRG,",",3)
. I '$D(YSARRAY("B",YSCLNM)) S YSCLER=" does not exist at " D OUT Q
. N YSFMARRY D LIST^DIC(2,,.09,,,,YSCLSSN,"SSN",,,"YSFMARRY")
. S YSCLDA=$G(YSFMARRY("DILIST",2,1)) I 'YSCLDA S YSCLER=" SSN does not exist at " D OUT Q
. K YSFMARRY D LIST^DIC(603.01,,1,"I",,,YSCLDA,"C",,,"YSFMARRY")
. S YSCLDA1=$G(YSFMARRY("DILIST",2,1)) I 'YSCLDA1 S YSCLER=" SSN not in Clozapine file " D OUT Q
. D
. . S DIE=603.01,DA=YSCLDA1,DR="2///"_YSCLWB D ^DIE
. . S YSCLER=" "_YSCLNM_" ("_$$GET1^DIQ(2,YSCLDA,.09)_") updated to "_$S(YSCLWB="M":"Monthly",YSCLWB="W":"Weekly",YSCLWB="B":"Bi-weekly",1:"Unknown")_" at " D OUT ;06/15/05
G EXIT
RESEND ;Trigger retransmission of Clozapine data
X XMREC
I $L(XMRG,U)<1!($L(XMRG,U)>2) S YSCLER=" is an invalid date(s), RESEND not triggered at " D OUT G EXIT
S YSCLSTDT=$P(XMRG,U,1)
K %DT S X=YSCLSTDT,%DT="P" D ^%DT I Y=-1 S YSCLER=" is an invalid start date, RESEND not triggered at " D OUT G EXIT
S X1=Y,X2=-1 D C^%DTC S YSCLSTDT=X
I $L(XMRG,U)>1 S YSCLEDDT=$P(XMRG,U,2) K %DT S X=YSCLEDDT,%DT="P" D ^%DT I Y=-1 S YSCLER=" is an invalid end date, RESEND not triggered at " D OUT G EXIT
S X1=Y,X2=1 D C^%DTC S YSCLEDDT=X
I $L(XMRG,U)=1 S X1=YSCLSTDT,X2=2 D C^%DTC S YSCLEDDT=X
S X1=YSCLEDDT,X2=YSCLSTDT D ^%DTC I X<0 S YSCLER=" ending date cannot be less than start date, RESEND not triggered at " D OUT G EXIT
N YSCLREX
S YSCLREX=1
S (YSCLTRDT,YSCLSDT)=YSCLSTDT
D REXMIT^YSCLTST5
S Y=YSCLSDT X ^DD("DD") S YSCLER=" - Resend triggered (local task #"_$G(ZTSK)_") by "_XMFROM_" for "_Y_" at " D OUT
G EXIT
DSET ;Set the day of the week for the roll-up to run.
X XMREC Q:XMER<0 S X=$TR(XMRG,"- ","")
S YSOFF=$S(X="SUNDAY":0,X="MONDAY":1,X="TUESDAY":2,X="WEDNESDAY":3,X="THURSDAY":4,X="FRIDAY":5,X="SATURDAY":6,1:7)
I YSOFF>6 D ADD2TXT(X_" isn't a valid day of the week.") G EXIT
S DIE="^YSCL(603.03,",DA=1,DR="2////"_X D ^DIE ;S $P(^YSCL(603.03,1,0),U,2)=X
D ADD2TXT("Run day set to "_X)
G EXIT
Q
DEBUG ;Turn debug mode on and off.
I YSCLSUB["DEBUG ON" D
. D ADD2TXT("Debug Mode is "_$S(YSDEBUG:"already",1:"now")_" ON at "_YSCLSTN)
. S DIE="^YSCL(603.03,",DA=1,DR="3////1" D ^DIE ;S $P(^YSCL(603.03,1,0),U,3)=1
I YSCLSUB["DEBUG OFF" D
. D ADD2TXT("Debug Mode is "_$S('YSDEBUG:"already",1:"now")_" OFF at "_YSCLSTN)
. S DIE="^YSCL(603.03,",DA=1,DR="3////0" D ^DIE ;S $P(^YSCL(603.03,1,0),U,3)=0
G EXIT
;
ADD2TXT(L) ; add line L to the Message text
Q:'$D(L) I L="" S L=" "
N C S C=$G(^TMP($J,"YSCLXMSG",0))+1,^(0)=C,^TMP($J,"YSCLXMSG",C,0)=L
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYSCLSERV 13376 printed Sep 15, 2024@21:37:54 Page 2
YSCLSERV ;DALOI/hrubovcak - Clozapine data server ; 8 Nov 2019 15:21:58
+1 ;;5.01;MENTAL HEALTH;**18,22,26,47,61,69,74,90,92,122,154,165**;Dec 30, 1994;Build 2
+2 ; Reference to ^%ZOSF supported by IA #10096
+3 ; Reference to ^DPT supported by IA #10035
+4 ; Reference to ^DD("DD" supported by IA #10017
+5 ; Reference to ^PS(55 supported by IA #787
+6 ; Reference to ^PSDRUG supported by IA #25
+7 ; Reference to ^PSRX supported by IA #780
+8 ; Reference to ^VA(200 supported by IA #10060
+9 ; Reference to $$SITE^VASITE supported by IA #10112
+10 ; Reference to $$FMTE^XLFDT() supported by IA #10103
+11 ; Reference to ^PSDRUG supported by IA #221
+12 ; Reference to ^XMD supported by IA #10070
+13 ; Reference to ^DIC supported by DBIA #2051
+14 ; Reference to ^DIE supported by DBIA #2053
+15 ; Reference to ^DIQ supported by DBIA #2056
+16 ; Reference to ^DIK supported by DBIA #10013
+17 ; Reference to MIX^DIC1 supported by DBIA #10007
+18 ; Reference to FILE^DICN supported by DBIA #10009
+19 ; Reference to ^%DTC supported by DBIA #10000
+20 ; Reference to ^%DT supported by DBIA #10003
+21 ;
START ;
+1 ;
+2 DO DT^DICRW
KILL ^TMP($JOB,"YSCLXMSG")
+3 SET YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
+4 SET YSCLST=$PIECE($$SITE^VASITE,U,3)
+5 SET YSCLSTN=$PIECE($$SITE^VASITE,U,2)
+6 ;Determine station number
+7 IF $GET(PSCLOZ)
GOTO UNREG
+8 SET X=XQSUB
XECUTE ^%ZOSF("UPPERCASE")
SET YSCLSUB=Y
+9 IF YSCLSUB["FILE603.01"
GOTO LKUP^YSCLSRV3
+10 DO ADD2TXT($SELECT(YSDEBUG:"DEBUG ",1:"")_YSCLSUB_" triggered at "_YSCLST_" by "_XMFROM_" on "_XQDATE)
+11 IF YSCLSUB["DELETEALL"
GOTO DELALL
+12 ;The first line of the message tells who requested the action and when
+13 Begin DoDot:1
+14 SET YSACTION=$SELECT(YSCLSUB["REMOVE"!(YSCLSUB["DELETE"):"data deleted",YSCLSUB["REPORT":"report generated",YSCLSUB["REBUILD":"data verified",YSCLSUB["UPDATE":"data updated",YSCLSUB["DATESET":"date set",1:"CONT")
+15 IF YSACTION="CONT"
SET YSACTION=$SELECT(YSCLSUB["DEMOG RESET":"Demographics Flag Reset",YSCLSUB["DEBUG":"Debug Mode set",YSCLSUB["AUTH":"Authorization",YSCLSUB["LOCK":"Lock",1:"Site Lock")
+16 DO ADD2TXT($SELECT(YSDEBUG:"DEBUG ",1:"")_YSACTION_" at "_YSCLST)
End DoDot:1
+17 ;The second line tells when the server is activated and no data can be
+18 ;gathered from the MailMan message. This line gets replaced if the
+19 ;server finds something to do.
+20 IF YSCLSUB["REMOVE"!(YSCLSUB["DELETE")
GOTO DELETE
+21 ;If the subject contains the word REMOVE or DELETE delete those entries from the list.
+22 IF YSCLSUB["REPORT"
GOTO REPORT
+23 ;If the subject contains "REPORT" send a report of the currently registered patients to the Clozapine group on Forum
+24 ;I YSCLSUB["REBUILD" G REBUILD
+25 IF YSCLSUB["RESEND"
GOTO RESEND
+26 IF YSCLSUB["UPDATE"
GOTO UPDATE
+27 ;I YSCLSUB["CHECKSUM" G CSUM^YSCLSRV1
+28 IF YSCLSUB["DATESET"
GOTO DSET
+29 IF YSCLSUB["DEBUG"
GOTO DEBUG
+30 IF YSCLSUB["PATIENT"
GOTO ^YSCLSRV3
+31 IF YSCLSUB["LOCKOUT"
GOTO LOCK^YSCLSRV3
+32 IF YSCLSUB="DEMOG RESET"
GOTO DEMOG^YSCLSRV3
+33 IF YSCLSUB["AUTHORIZE"
GOTO AUTH^YSCLSRV3
+34 IF YSCLSUB="OVERRIDE"
GOTO OVRRID^YSCLSRV2
+35 IF YSCLSUB="CLAPI"
GOTO CLAPI^YSCLSRV2
+36 IF YSCLSUB="CL1API"
GOTO CL1API^YSCLSRV2
+37 IF YSCLSUB["DISCON"
GOTO DCON^YSCLSRV2
+38 FOR
XECUTE XMREC
if XMER<0
QUIT
SET XMRG=$TRANSLATE(XMRG,"- ","")
Begin DoDot:1
+39 ;Verify that + of site number matches local site number
+40 IF XMRG'?2U5N1","9N1","1U
SET YSCLER=" is in error and was not added at "
DO OUT
QUIT
+41 IF $PIECE(XMRG,",")'?2U5N
SET YSCLER=" is not a valid Clozapine number "
DO OUT
QUIT
+42 IF $PIECE(XMRG,",",2)'?9N
SET YSCLER=" An SSN must be 9 numbers "
DO OUT
QUIT
+43 IF $PIECE(XMRG,",",3)'="B"
IF $PIECE(XMRG,",",3)'="W"
IF $PIECE(XMRG,",",3)'="M"
SET YSCLER=" You must specify Weekly, Biweekly, or Monthly "
DO OUT
QUIT
+44 ;Validate the format of the data in the message and report the error.
+45 ;Do not add data for records where the SSN sent is not in the local database
+46 SET DIC="^DPT("
SET DIC(0)="X"
SET D="SSN"
SET X=$PIECE(XMRG,",",2)
+47 NEW YSFMARRY,YSFREQ
DO LIST^DIC(2,,.09,,,,X,"SSN",,,"YSFMARRY")
+48 SET DFN=$GET(YSFMARRY("DILIST",2,1))
IF DFN=""
SET YSCLER=" SSN does not exist at "
DO OUT
QUIT
+49 ;I '$D(^DPT("SSN",X)) S YSCLER=" SSN does not exist at " D OUT Q
+50 KILL YSFMARRY
DO LIST^DIC(603.01,,1,,,,$PIECE(XMRG,","),,,,"YSFMARRY")
+51 IF $DATA(YSFMARRY("DILIST","ID",1,1))
Begin DoDot:2
+52 SET YSCLER=" Clozapine # is in use by "_YSFMARRY("DILIST","ID",1,1)_" at "
End DoDot:2
DO OUT
QUIT
+53 ;I $D(^YSCL(603.01,"B",$P(XMRG,","))) S YSCLX=$O(^YSCL(603.01,"B",$P(XMRG,","),"")) S:YSCLX]"" YSCLX=$P(^YSCL(603.01,YSCLX,0),U,2),YSCLER=" Clozapine # is in use by "_$P($G(^DPT(YSCLX,0)),U)_" at " D OUT Q
+54 DO MIX^DIC1
SET YSCLPT=+Y
IF Y=-1
SET YSCLER=" could not be added at "
DO OUT
QUIT
+55 ;Add the data and report any errors to the Roll-Up group at Forum.
+56 ; default to weekly
KILL DD
SET DIC="^YSCL(603.01,"
SET YSFREQ=$PIECE(XMRG,",",3)
if YSFREQ=""
SET YSFREQ="W"
+57 SET X=$PIECE(XMRG,",")
SET DIC("DR")="1////"_YSCLPT_";2////"_$SELECT("BMW"[YSFREQ:YSFREQ,1:"W")
SET DIC(0)="Z"
KILL DO
DO FILE^DICN
+58 KILL YSFMARRY
DO LIST^DIC(603.01,,".01E;1E;2E",,,,$PIECE(XMRG,","),,,,"YSFMARRY")
+59 IF $DATA(YSFMARRY("DILIST","ID",1,1))
Begin DoDot:2
End DoDot:2
+60 SET YSCLER=" assigned to "_YSFMARRY("DILIST","ID",1,1)_" at "
DO OUT
End DoDot:1
+61 ;
EXIT ;If all went well, report that too.
+1 SET YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
+2 SET XMDUN="NCCC LOGGER"
SET XMDUZ=".5"
SET XMSUB=$SELECT(YSDEBUG:"DEBUG ",YSCLSUB["DEBUG":"DEBUG ",1:"")_YSCLST_" NCCC ENROLLER ("_$$NOW^XLFDT_")"
+3 ;
+4 ;/MZR -Begin modifications for YS*5.01*122
+5 KILL XMY
NEW YSPROD,YSXMZ
+6 SET YSPROD=$$GET1^DIQ(8989.3,1,501,"I")
+7 if YSPROD
Begin DoDot:1
+8 IF 'YSDEBUG
SET XMY("G.CLOZAPINE ROLL-UP@DOMAIN.EXT")=""
QUIT
+9 SET XMY("G.CLOZAPINE DEBUG@FO-DALLAS.DOMAIN.EXT")=""
End DoDot:1
+10 if 'YSPROD
SET XMY("G.CLOZAPINE ROLL-UP")=""
SET XMY("G.PSOCLOZ")=""
+11 ;/MZR - End modifications for YS*5.01*122
+12 ;
+13 ; add mail group info to message text
Begin DoDot:1
+14 DO ADD2TXT(" ")
+15 NEW G
SET G="G."
FOR
SET G=$ORDER(XMY(G))
if G=""
QUIT
DO ADD2TXT(" Sent to: "_G)
+16 DO ADD2TXT(" ")
DO ADD2TXT($JUSTIFY("*** END OF REPORT ***",45))
End DoDot:1
+17 ; Mail the errors and successes back to the Roll-Up group at Forum.
+18 DO SENDMSG^XMXAPI(DUZ,XMSUB,$NAME(^TMP($JOB,"YSCLXMSG")),.XMY,"",.YSXMZ)
+19 ;
+20 KILL ^TMP($JOB,"YSCLXMSG")
+21 KILL %,%DT,%H,D,DA,DD,DIC,DIE,DIK,RET,X,XMDUN,XMDUZ,XMER,XMFROM
+22 KILL XMREC,XMRG,XMSUB,XMTEXT,XMY,XMZ,XQDATE,XQSUB,Y,YSA,YSACTION,YSCLTYPE
+23 KILL YSCL28,YSCLA,YSCLAA,YSCLB,YSCLC,YSCLDA,YSCLDA1,YSCLDATA,YSCLDEA1
+24 KILL YSCLDFN,YSCLDM,YSCLDOC,YSCLDOM,YSCLDR,YSCLDRA,YSCLDRB,YSCLDTA,YSCLERR
+25 KILL YSCLDUZ,YSCLED,YSCLER,YSCLFDA,YSCLFRQ,YSCLLNT,YSCLNM,YSCLOVR,YSCLSITE
+26 KILL YSCLPT,YSCLRPT,YSCLSD1,YSCLSDT,YSCLSSN,YSCLST,YSCLSTN,YSCLSUB,YSCLTC
+27 KILL YSCLRX,YSCLSAND,YSCLWB,YSCLX,YSCLYN,YSDEBUG,YSI,YSOFF,YSPR,ZTQUEUED,ZTSK
+28 QUIT
+29 ;/RBN Begin mods - YS*5.01*122
UNREG IF $GET(PSCLOZ)
Begin DoDot:1
+1 ;Verify that + of site number matches local site number
+2 IF XMRG'?1U4.6N1",".U1",".U1","4N
SET YSCLER=" is in error and was not added at "
DO OUT
QUIT
+3 IF $PIECE(XMRG,",")'?1U4.6N
SET YSCLER=" is not a valid Clozapine number "
DO OUT
QUIT
+4 IF $PIECE(XMRG,",",4)'?4N
SET YSCLER=" An SSN must be 4 numbers "
DO OUT
QUIT
+5 ;Validate the format of the data in the message and report the error.
+6 ;Do not add data for records where the SSN sent is not in the local database
+7 SET DIC="^DPT("
SET DIC(0)="X"
SET D="SSN"
SET X=SSN
+8 NEW YSFMARRY
DO LIST^DIC(2,,.09,,,,X,"SSN",,,"YSFMARRY")
+9 SET DFN=$GET(YSFMARRY("DILIST",2,1))
IF DFN=""
SET YSCLER=" SSN does not exist at "
DO OUT
QUIT
+10 KILL YSFMARRY
DO LIST^DIC(603.01,,1,,,,$PIECE(XMRG,","),,,,"YSFMARRY")
+11 IF $DATA(YSFMARRY("DILIST","ID",1,1))
Begin DoDot:2
+12 SET YSCLER=" Clozapine # is in use by "_YSFMARRY("DILIST","ID",1,1)_" at "
End DoDot:2
DO OUT
QUIT
+13 DO MIX^DIC1
SET YSCLPT=+Y
IF Y=-1
SET YSCLER=" could not be added at "
DO OUT
QUIT
+14 ;Add the data and report any errors to the Roll-Up group at Forum.
+15 KILL DD
SET DIC="^YSCL(603.01,"
SET X=$PIECE(XMRG,",")
SET DIC("DR")="1////"_YSCLPT_";2////"_"W"
KILL DO
DO FILE^DICN
+16 KILL YSFMARRY
DO LIST^DIC(603.01,,1,,,,$PIECE(XMRG,","),,,,"YSFMARRY")
+17 IF $DATA(YSFMARRY("DILIST","ID",1,1))
SET YSCLER=" assigned to "_YSFMARRY("DILIST","ID",1,1)_" at "
DO OUT
End DoDot:1
QUIT
+18 ;/RBN End mods - YS*5.01*122
+19 QUIT
DELETE ;Allow the NCCC users to delete clozapine registration at the individual sites
+1 IF XQSUB["DELETEALL"
GOTO DELALL
+2 FOR
XECUTE XMREC
if XMER<0
QUIT
SET XMRG=$TRANSLATE(XMRG,"- ","")
Begin DoDot:1
+3 IF XMRG="**++**DELETEALL**++**"
DO DELALL
QUIT
+4 NEW YSFMARRY
DO LIST^DIC(603.01,,1,,,,$PIECE(XMRG,","),,,,"YSFMARRY")
+5 IF '$DATA(YSFMARRY("DILIST","ID",1,1))
SET YSCLER=" "_$PIECE(XMRG,",")_" is not registered at "
DO OUT
QUIT
+6 ;I '$D(^YSCL(603.01,"B",$P(XMRG,","))) S YSCLER=" "_$P(XMRG,",")_" is not registered at " D OUT Q
+7 NEW YSFMARRY
DO LIST^DIC(2,,.09,,,,$PIECE(XMRG,",",2),"SSN",,,"YSFMARRY")
+8 SET YSCLDFN=$GET(YSFMARRY("DILIST",2,1))
IF YSCLDFN=""
SET YSCLER=" "_$PIECE(XMRG,",",2)_" is not a valid SSN at "
DO OUT
QUIT
+9 ;S YSCLDFN=$O(^DPT("SSN",$P(XMRG,",",2),"")) I YSCLDFN="" S YSCLER=" "_$P(XMRG,",")_" is not a valid SSN at " D OUT Q
+10 KILL YSFMARRY
DO LIST^DIC(603.01,,1,"I",,,YSCLDFN,"C",,,"YSFMARRY")
+11 IF '$DATA(YSFMARRY("DILIST","ID",1,1))
SET YSCLER=" "_$PIECE(XMRG,",",2)_" is not registered at "
DO OUT
QUIT
+12 ;I '$D(^YSCL(603.01,"C",YSCLDFN)) S YSCLER=" "_$P(XMRG,",",2)_" is not registered at " D OUT Q
+13 ;I YSCLA="" S YSCLER=" "_$P(XMRG,",")_" is not a valid entry at " D OUT Q
SET YSCLA=YSFMARRY("DILIST",2,1)
+14 ;K ^YSCL(603.01,YSCLA),^YSCL(603.01,"B",$P(XMRG,","),YSCLA),^YSCL(603.01,"C",YSCLDFN,YSCLA)
+15 SET DIK="^YSCL(603.01,"
SET DA=YSCLA
DO ^DIK
+16 SET YSCLER=" removed at "
DO OUT
+17 ;I $D(^YSCL(603.01,"C",+Y)) K ^YSCL(603.01,YSCLA),^YSCL(603.01,"B",$P(XMRG,","),YSCLA),^YSCL(603.01,"C",YSCLDFN,YSCLA) S YSCLER=" removed at " D OUT Q ;RLM 9-29-99 ADDED QUIT
End DoDot:1
+18 GOTO EXIT
DELALL ;Delete all patients in file 603.01
+1 ;
+2 DO ADD2TXT("The deletion of ALL patients in File #603.01 has been disabled.")
+3 DO ADD2TXT("No action taken.")
+4 GOTO EXIT
+5 ;
+6 NEW YSFMARRY,DFN,YSCLA,YSCLREGN
+7 DO LIST^DIC(603.01,,"1;2","I",,,,"C",,,"YSFMARRY")
+8 FOR I=1:1
if '$DATA(YSFMARRY("DILIST",2,I))
QUIT
SET YSCLA=YSFMARRY("DILIST",2,I)
if YSCLA
Begin DoDot:1
+9 SET DFN=YSFMARRY("DILIST",1,I)
SET YSCLREGN=YSFMARRY("DILIST","ID",I,.01)
+10 SET YSCLER=YSCLREGN_", "_$$GET1^DIQ(2,DFN,.09)_", ("_YSFMARRY("DILIST","ID",I,2)_") deleted at "
DO OUT
+11 ;K ^YSCL(603.01,YSCLA)
SET DIK="^YSCL(603.01,"
SET DA=YSCLA
DO ^DIK
End DoDot:1
+12 QUIT
REPORT ;send report of current registrations to the Clozapine group on Forum
+1 DO REPORT^YSCLSRV2
GOTO EXIT
OUT ;
+1 DO ADD2TXT(XMRG_YSCLER_YSCLST)
QUIT
+2 ;Build the text for the return message here.
REBUILD ;
+1 DO REBUILD^YSCLSRV2
GOTO EXIT
UPDATE ;Update record with Monthly, Weekly or Bi-weekly status
+1 NEW YSARRAY
DO LIST^DIC(603.01,,,"I",,,,,,,"YSARRAY")
+2 FOR I=1:1
if '$DATA(YSARRAY("DILIST",2,I))
QUIT
Begin DoDot:1
+3 SET YSARRAY(YSARRAY("DILIST",2,I))=YSARRAY("DILIST",1,I)
+4 SET YSARRAY("B",YSARRAY("DILIST",1,I))=YSARRAY("DILIST",2,I)
End DoDot:1
+5 KILL YSARRAY("DILIST")
+6 FOR
XECUTE XMREC
if XMER<0
QUIT
SET XMRG=$TRANSLATE(XMRG,"- ","")
Begin DoDot:1
+7 IF XMRG'?2U5N1","9N1","1U
SET YSCLER=" is in error and was not added at "
DO OUT
QUIT
+8 IF $PIECE(XMRG,",")'?2U5N
SET YSCLER=" is not a valid Clozapine number format "
DO OUT
QUIT
+9 IF $PIECE(XMRG,",",2)'?9N
SET YSCLER=" An SSN must be 9 numbers "
DO OUT
QUIT
+10 ;RLM 06/15/05
IF $PIECE(XMRG,",",3)'="B"
IF $PIECE(XMRG,",",3)'="W"
IF $PIECE(XMRG,",",3)'="M"
SET YSCLER=" You must specify Monthly, Weekly or Biweekly "
DO OUT
QUIT
+11 SET YSCLNM=$PIECE(XMRG,",")
SET YSCLSSN=$PIECE(XMRG,",",2)
SET YSCLWB=$PIECE(XMRG,",",3)
+12 IF '$DATA(YSARRAY("B",YSCLNM))
SET YSCLER=" does not exist at "
DO OUT
QUIT
+13 NEW YSFMARRY
DO LIST^DIC(2,,.09,,,,YSCLSSN,"SSN",,,"YSFMARRY")
+14 SET YSCLDA=$GET(YSFMARRY("DILIST",2,1))
IF 'YSCLDA
SET YSCLER=" SSN does not exist at "
DO OUT
QUIT
+15 KILL YSFMARRY
DO LIST^DIC(603.01,,1,"I",,,YSCLDA,"C",,,"YSFMARRY")
+16 SET YSCLDA1=$GET(YSFMARRY("DILIST",2,1))
IF 'YSCLDA1
SET YSCLER=" SSN not in Clozapine file "
DO OUT
QUIT
+17 Begin DoDot:2
+18 SET DIE=603.01
SET DA=YSCLDA1
SET DR="2///"_YSCLWB
DO ^DIE
+19 ;06/15/05
SET YSCLER=" "_YSCLNM_" ("_$$GET1^DIQ(2,YSCLDA,.09)_") updated to "_$SELECT(YSCLWB="M":"Monthly",YSCLWB="W":"Weekly",YSCLWB="B":"Bi-weekly",1:"Unknown")_" at "
DO OUT
End DoDot:2
End DoDot:1
+20 GOTO EXIT
RESEND ;Trigger retransmission of Clozapine data
+1 XECUTE XMREC
+2 IF $LENGTH(XMRG,U)<1!($LENGTH(XMRG,U)>2)
SET YSCLER=" is an invalid date(s), RESEND not triggered at "
DO OUT
GOTO EXIT
+3 SET YSCLSTDT=$PIECE(XMRG,U,1)
+4 KILL %DT
SET X=YSCLSTDT
SET %DT="P"
DO ^%DT
IF Y=-1
SET YSCLER=" is an invalid start date, RESEND not triggered at "
DO OUT
GOTO EXIT
+5 SET X1=Y
SET X2=-1
DO C^%DTC
SET YSCLSTDT=X
+6 IF $LENGTH(XMRG,U)>1
SET YSCLEDDT=$PIECE(XMRG,U,2)
KILL %DT
SET X=YSCLEDDT
SET %DT="P"
DO ^%DT
IF Y=-1
SET YSCLER=" is an invalid end date, RESEND not triggered at "
DO OUT
GOTO EXIT
+7 SET X1=Y
SET X2=1
DO C^%DTC
SET YSCLEDDT=X
+8 IF $LENGTH(XMRG,U)=1
SET X1=YSCLSTDT
SET X2=2
DO C^%DTC
SET YSCLEDDT=X
+9 SET X1=YSCLEDDT
SET X2=YSCLSTDT
DO ^%DTC
IF X<0
SET YSCLER=" ending date cannot be less than start date, RESEND not triggered at "
DO OUT
GOTO EXIT
+10 NEW YSCLREX
+11 SET YSCLREX=1
+12 SET (YSCLTRDT,YSCLSDT)=YSCLSTDT
+13 DO REXMIT^YSCLTST5
+14 SET Y=YSCLSDT
XECUTE ^DD("DD")
SET YSCLER=" - Resend triggered (local task #"_$GET(ZTSK)_") by "_XMFROM_" for "_Y_" at "
DO OUT
+15 GOTO EXIT
DSET ;Set the day of the week for the roll-up to run.
+1 XECUTE XMREC
if XMER<0
QUIT
SET X=$TRANSLATE(XMRG,"- ","")
+2 SET YSOFF=$SELECT(X="SUNDAY":0,X="MONDAY":1,X="TUESDAY":2,X="WEDNESDAY":3,X="THURSDAY":4,X="FRIDAY":5,X="SATURDAY":6,1:7)
+3 IF YSOFF>6
DO ADD2TXT(X_" isn't a valid day of the week.")
GOTO EXIT
+4 ;S $P(^YSCL(603.03,1,0),U,2)=X
SET DIE="^YSCL(603.03,"
SET DA=1
SET DR="2////"_X
DO ^DIE
+5 DO ADD2TXT("Run day set to "_X)
+6 GOTO EXIT
+7 QUIT
DEBUG ;Turn debug mode on and off.
+1 IF YSCLSUB["DEBUG ON"
Begin DoDot:1
+2 DO ADD2TXT("Debug Mode is "_$SELECT(YSDEBUG:"already",1:"now")_" ON at "_YSCLSTN)
+3 ;S $P(^YSCL(603.03,1,0),U,3)=1
SET DIE="^YSCL(603.03,"
SET DA=1
SET DR="3////1"
DO ^DIE
End DoDot:1
+4 IF YSCLSUB["DEBUG OFF"
Begin DoDot:1
+5 DO ADD2TXT("Debug Mode is "_$SELECT('YSDEBUG:"already",1:"now")_" OFF at "_YSCLSTN)
+6 ;S $P(^YSCL(603.03,1,0),U,3)=0
SET DIE="^YSCL(603.03,"
SET DA=1
SET DR="3////0"
DO ^DIE
End DoDot:1
+7 GOTO EXIT
+8 ;
ADD2TXT(L) ; add line L to the Message text
+1 if '$DATA(L)
QUIT
IF L=""
SET L=" "
+2 NEW C
SET C=$GET(^TMP($JOB,"YSCLXMSG",0))+1
SET ^(0)=C
SET ^TMP($JOB,"YSCLXMSG",C,0)=L
+3 QUIT
+4 ;