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

YSCLSRV2.m

Go to the documentation of this file.
  1. YSCLSRV2 ;DALOI/RLM,HEC/HRUBOVCAK,NCR/MCF - Clozapine data server ; Jun 06, 2023@13:48
  1. ;;5.01;MENTAL HEALTH;**69,90,92,154,166,227**;Dec 30, 1994;Build 17
  1. ;
  1. ; Reference to ^%ZOSF supported by IA #10096
  1. ; Reference to ^DPT supported by IA #10035
  1. ; Reference to ^DD("DD" supported by IA #10017
  1. ; Reference to ^PS(55 supported by IA #787
  1. ; Reference to ^PSDRUG supported by IA #25
  1. ; Reference to ^PSRX supported by IA #780
  1. ; Reference to ^VA(200 supported by IA #10060
  1. ; Reference to $$SITE^VASITE supported by IA #10112
  1. ; Reference to $$FMTE^XLFDT() supported by IA #10103
  1. ; Reference to ^PSDRUG supported by IA #221
  1. ; Reference to ^LAB(60 supported by IA #333
  1. ; Reference to ^%DT supported by DBIA #10003
  1. ;
  1. REPORT ;send report of current registrations to the Clozapine group on Forum
  1. ;
  1. S XMRG="",YSCLA=0 F S YSCLA=$O(^YSCL(603.01,YSCLA)) Q:'YSCLA S YSCLDTA=$G(^YSCL(603.01,YSCLA,0)) D
  1. . I YSCLDTA="" S YSCLER="Clozapine Patient List damaged at " D OUT Q
  1. . N YSDFN,YSDPT0 S YSDFN=+$P(YSCLDTA,U,2),YSDPT0=$G(^DPT(YSDFN,0))
  1. . I YSCLDTA="" S YSCLER="Clozapine Patient List patient info missing for IEN: "_YSCLA_" at " D OUT Q
  1. . S YSCLWB=$P(YSCLDTA,U,3),YSCLWB=$S(YSCLWB="M":"Monthly",YSCLWB="W":"Weekly",YSCLWB="B":"Bi-weekly",1:"Unknown")
  1. . S YSCLER=$P(YSCLDTA,U)_" is assigned to "_$P(YSDPT0,U)_" ("_$P(YSDPT0,U,9)_") "_YSCLWB_" at " D OUT
  1. D ADD2TXT^YSCLSERV("==========")
  1. D ADD2TXT^YSCLSERV(" Linked Tests:")
  1. S YSCLA=0 F S YSCLA=$O(^YSCL(603.04,1,1,YSCLA)) Q:'YSCLA D
  1. . D ADD2TXT^YSCLSERV($P(^LAB(60,$P(^YSCL(603.04,1,1,YSCLA,0),U,1),0),U))
  1. . S YSCLTYPE=$P(^YSCL(603.04,1,1,YSCLA,0),U,2),YSCLRPT=$P(^YSCL(603.04,1,1,YSCLA,0),U,3)
  1. . S YSCLTA=" reports "_$S(YSCLTYPE="W":"WHITE BLOOD COUNT",YSCLTYPE="A":"ABSOLUTE NEUTROPHIL COUNT",YSCLTYPE="N":"NEUTROPHIL PERCENT",YSCLTYPE="S":"SEGS %",YSCLTYPE="B":"BANDS %",YSCLTYPE="T":"BANDS A",YSCLTYPE="C":"SEGS A")
  1. . D ADD2TXT^YSCLSERV(YSCLTA_" "_$S(YSCLRPT:"K/units",1:"units"))
  1. D ADD2TXT^YSCLSERV("==========")
  1. ;D OPTION^%ZTLOAD("YSCL WEEKLY TRANSMISSION","LIST") D
  1. ; . S ZTSK="" F S ZTSK=$O(LIST(ZTSK)) Q:ZTSK="" D
  1. ; . . D STAT^%ZTLOAD D ADD2TXT^YSCLSERV("Local Task # "_ZTSK_" is "_$S('ZTSK(0):" not ",1:"")_"defined with a status of "_ZTSK(2)
  1. D ADD2TXT^YSCLSERV(" Run day is: "_$P(^YSCL(603.03,1,0),U,2))
  1. D ADD2TXT^YSCLSERV(" Debug Mode is: "_$S($P(^YSCL(603.03,1,0),U,3):"On.",1:"Off."))
  1. D ADD2TXT^YSCLSERV("Last Run Date (start) is: "_$$FMTE^XLFDT($P(^YSCL(603.03,1,0),U,4)))
  1. D ADD2TXT^YSCLSERV(" Last Run Date (stop) is: "_$$FMTE^XLFDT($P(^YSCL(603.03,1,0),U,5)))
  1. D ADD2TXT^YSCLSERV("Last Demographic date is: "_$$FMTE^XLFDT($P(^YSCL(603.03,1,0),U,6)))
  1. Q
  1. OUT D ADD2TXT^YSCLSERV(XMRG_YSCLER_YSCLST) Q
  1. ;Build the text for the return message here.
  1. REBUILD ;
  1. S XMRG="",(YSCLA,YSCLLNT)=1 F S YSCLA=$O(^PS(55,"ASAND1",YSCLA)) W:'$D(ZTQUEUED) "." Q:YSCLA="" D
  1. . S YSCLB=$O(^PS(55,"ASAND1",YSCLA,"")) I YSCLB="" S YSCLER=" record is in error (1) at " D OUT Q
  1. . I '$D(^PS(55,YSCLB,0)) S YSCLER=" record is in error (2) at " D OUT Q
  1. . S YSCLB=$P(^PS(55,YSCLB,0),U) I YSCLB="" S YSCLER=" record is in error (3) at " D OUT Q
  1. . I '$D(^PS(55,YSCLB,"SAND")) S YSCLER=" record is in error (4) at " D OUT Q
  1. . S DIC="^DPT(",DIC(0)="X",D="SSN",(YSCLSSN,X)=$P(^DPT(YSCLB,0),U,9)
  1. . I $D(^YSCL(603.01,"B",YSCLA)) S YSCLX=$O(^YSCL(603.01,"B",YSCLA,"")) S:YSCLX]"" YSCLX=$P(^YSCL(603.01,YSCLX,0),U,2),YSCLER=" Clozapine # "_YSCLA_" is in use by "_$P($G(^DPT(YSCLX,0)),U)_" at " D OUT Q
  1. . D MIX^DIC1 S YSCLPT=+Y I Y=-1 S YSCLER=" could not be added at " D OUT Q
  1. . K DD S DIC="^YSCL(603.01,",X=YSCLA,DIC("DR")="1////"_YSCLPT K DO D FILE^DICN
  1. . S YSCLX=$O(^YSCL(603.01,"B",YSCLA,"")) S:YSCLX]"" YSCLX=$P(^YSCL(603.01,YSCLX,0),U,2),YSCLER=","_YSCLSSN_" assigned to "_$P($G(^DPT(YSCLX,0)),U)_" at " D OUT
  1. Q
  1. OVRRID ;Update record with Monthly, Weekly or Bi-weekly status
  1. N YSPTMUOK S YSPTMUOK=1
  1. F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
  1. . I XMRG'?2U5N1","9N1",".E S YSCLER=" is in error and was not added at " D OUT Q
  1. . I $P(XMRG,",")'?2U5N S YSCLER=" is not a valid Clozapine number format " D OUT Q
  1. . I $P(XMRG,",",2)'?9N S YSCLER=" An SSN must be 9 numbers " D OUT Q
  1. . K %DT S X=$P(XMRG,",",3),%DT="F" D ^%DT I Y=-1 S YSCLER=" is an invalid date, over-ride authorization not filed at " D OUT Q
  1. . S YSCLOVR=Y
  1. . S YSCLNM=$P(XMRG,","),YSCLSSN=$P(XMRG,",",2),YSCLWB=$P(XMRG,",",3)
  1. . I '$D(^YSCL(603.01,"B",YSCLNM)) S YSCLER=" does not exist at " D OUT Q
  1. . S YSCLDA=$O(^DPT("SSN",YSCLSSN,0))
  1. . I YSCLDA="" S YSCLER=" SSN does not exist at " D OUT Q
  1. . I $O(^YSCL(603.01,"B",YSCLNM,0))="" S YSCLER=" SSN not in Clozapine file " D OUT Q
  1. . I $O(^DPT("SSN",YSCLSSN,YSCLDA)) S YSCLER=" SSN has more than one owner " D OUT Q
  1. . ; JCH - Begin PSO*7*612 Handle multiple Clozapine Numbers for the same patient
  1. . S YSCLDA1=$O(^YSCL(603.01,"B",YSCLNM,0)) ; IEN from B x-ref for NCCC number
  1. . ; Check all Clozapine Numbers associated with patient in 603.01, not just the first/oldest entry
  1. . I YSCLDA1'=$O(^YSCL(603.01,"C",YSCLDA,0)) S YSPTMUOK=0 N YSPTNUM S YSPTNUM=0 F S YSPTNUM=$O(^YSCL(603.01,"C",YSCLDA,YSPTNUM)) Q:'YSPTNUM!$G(YSPTNUOK) I YSCLDA1=YSPTNUM S YSPTMUOK=1
  1. . I '$G(YSPTMUOK) S YSCLER=YSCLNM_" is not assigned to "_" SSN ("_YSCLSSN_","_$P(^DPT(YSCLDA,0),U)_") at " D OUT
  1. . I YSPTMUOK!($O(^YSCL(603.01,"B",YSCLNM,0))=$O(^YSCL(603.01,"C",YSCLDA,0))) D
  1. . . ; JCH - End PSO*7*612
  1. . . S YSCLDA1=$O(^YSCL(603.01,"B",YSCLNM,0)) S $P(^YSCL(603.01,YSCLDA1,0),U,4)=YSCLOVR
  1. . . S Y=YSCLOVR D DD^%DT S YSCLER=" "_YSCLNM_" ("_$P(^DPT(YSCLDA,0),U)_") authorized for over-ride on "_Y_" at " D OUT
  1. . . K ^XTMP("PSJ4D-"_+$G(YSCLDA)),^XTMP("PSO4D-"_+$G(YSCLDA)) ; JCH - PSO*7*612. Local Overrides are now obsolete, replaced by NCCC Override.
  1. G EXIT^YSCLSERV
  1. ;
  1. CLAPI ;
  1. F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
  1. . ;Verify that a valid Clozapine number is listed
  1. . S YSCLDA=$E(XMRG,1,7)
  1. . I YSCLDA'?2U5N S YSCLER=" is not a valid Clozapine number " D OUT Q
  1. . S YSCLDA=$O(^YSCL(603.01,"B",YSCLDA,"")),YSCLDA=$P($G(^YSCL(603.01,YSCLDA,0)),U,2)
  1. . I 'YSCLDA S YSCLER=" is not in the local database." D OUT Q
  1. . S YSCLNM=$$CL^YSCLTST2(YSCLDA) S YSCLER=" = "_YSCLNM_" at " D OUT
  1. . Q
  1. G EXIT^YSCLSERV
  1. CL1API ;
  1. F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
  1. . ;Verify that a valid Clozapine number is listed
  1. . S YSA=$P(XMRG,U,1),YSCLDA=$P(XMRG,U,2)
  1. . I YSCLDA'?2U5N S YSCLER=" is not a valid Clozapine number " D OUT Q
  1. . S YSCLDA=$O(^YSCL(603.01,"B",YSCLDA,"")),YSCLDA=$P($G(^YSCL(603.01,YSCLDA,0)),U,2)
  1. . I 'YSCLDA S YSCLER=" is not in the local database." D OUT Q
  1. . D CL1^YSCLTST2(YSCLDA,YSA) D
  1. . . S YSCLDA1="" F S YSCLDA1=$O(^TMP($J,"PSO",YSCLDA1)) Q:'YSCLDA1 S YSCLER=" = "_YSCLDA_"="_(9999999-YSCLDA1)_" = "_^TMP($J,"PSO",YSCLDA1)_" at " D OUT
  1. . Q
  1. G EXIT^YSCLSERV
  1. ;
  1. DCON ;
  1. N DR,YSA,YSCLDA,YSCLSTAT
  1. F X XMREC Q:XMER<0 S XMRG=$TR(XMRG,"- ","") D
  1. . ;Verify that a valid Clozapine number is listed
  1. . S (YSA,YSCLDA)=$E(XMRG,1,7)
  1. . I YSCLDA'?2U5N S YSCLER=" is not a valid Clozapine number " D OUT Q
  1. . S YSCLDA=$O(^YSCL(603.01,"B",YSCLDA,"")),YSCLDA=$P($G(^YSCL(603.01,YSCLDA,0)),U,2)
  1. . I 'YSCLDA S YSCLER=" is not in the local database." D OUT Q
  1. . ; YS*5.01*227 - I $P(^PS(55,YSCLDA,"SAND"),U,2)'="D" S YSCLER=YSA_" is not discontinued" D OUT Q
  1. . ; - S YSCLER=YSA_" was "_$P(^PS(55,YSCLDA,"SAND"),U,2)_" is now ""A"" " D OUT
  1. . ; - S $P(^PS(55,YSCLDA,"SAND"),U,2)="A"
  1. . ;
  1. . ; YS*5.01*227 - begin logic to toggle between "A" and "D". Active and Discontinued.
  1. . D PSS^PSS781(YSCLDA,YSA,"YSDC")
  1. . S YSCLSTAT=$P(^TMP($J,"YSDC",YSCLDA,54),U,1)
  1. . S DR=$S(YSCLSTAT="A":"D",YSCLSTAT="D":"A",1:0)
  1. . I DR=0 S YSCLER=" is neither in the Active or Discontinued state and cannot be toggled at site " D OUT Q
  1. . S YSCLSTAT=$S(YSCLSTAT="A":"Discontinued",YSCLSTAT="D":"Active",1:0) ; set to opposite status.
  1. . D WRT^PSS781(YSCLDA,DR,"YSDC")
  1. . I '^TMP($J,"YSDC",0) K ^TMP($J,"YSDC") S YSCLER="Failed to set patient status to "_YSCLSTAT_" at site " D OUT Q
  1. . K ^TMP($J,"YSDC")
  1. . S YSCLER=" has been toggled to a status of "_YSCLSTAT_" at site " D OUT
  1. . ; end
  1. G EXIT^YSCLSERV ; YS^5.01^227 - set up to send mail.
  1. Q
  1. ;