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

YTQEVNT.m

Go to the documentation of this file.
  1. YTQEVNT ;SLC/KCM - MHA Protocol Events ; 1/25/2017
  1. ;;5.01;MENTAL HEALTH;**240**;Dec 30, 1994;Build 10
  1. ;
  1. Q
  1. ; IEN is always the administration IEN in 601.84
  1. ; TRIGGER identifies where the event was invoked
  1. ; DFN & TEST identify the patient and instrument for removals
  1. ; (since the 601.84 record is no longer available)
  1. ;
  1. ; Properties --
  1. ; action: update or remove
  1. ; object: admin, answers, results, or assessment (for all 3)
  1. ; trigger: identifies caller
  1. ; ien: pointer to 601.84
  1. ; dfn: pointer to 2
  1. ; test: short name of instrument
  1. ;
  1. UPADM(IEN,TRIGGER) ; fire event when administration is updated
  1. D UPSEND(IEN,TRIGGER,"admin")
  1. Q
  1. UPANS(IEN,TRIGGER) ; fire event when answers to administration are updated
  1. D UPSEND(IEN,TRIGGER,"answers")
  1. Q
  1. UPRSLT(IEN,TRIGGER) ; fire event when results for administration are updated
  1. D UPSEND(IEN,TRIGGER,"results")
  1. Q
  1. UPSEND(IEN,TRIGGER,OBJECT) ; do the actual update
  1. N YTQEVNT,YTQ101,YTQX,X
  1. I '$G(IEN) QUIT
  1. S YTQX=$G(^YTT(601.84,IEN,0)) Q:'$L(YTQX)
  1. I $P(YTQX,U,9)'="Y" QUIT ; only include completed administrations
  1. S YTQ101=$$FIND1^DIC(101,"","BX","YTQ EVENT") Q:'YTQ101
  1. S YTQEVNT("action")="update"
  1. S YTQEVNT("object")=OBJECT
  1. S YTQEVNT("trigger")=TRIGGER
  1. S YTQEVNT("ien")=IEN
  1. S YTQEVNT("dfn")=$P(YTQX,U,2)
  1. S YTQEVNT("test")=$P($G(^YTT(601.71,$P(YTQX,U,3),0)),U)
  1. S X=YTQ101_";ORD(101,"
  1. D EN^XQOR
  1. Q
  1. DELETE(IEN,DFN,TEST,TRIGGER) ; fire event when administration is deleted
  1. I '$G(IEN) QUIT
  1. I '$L(TEST) QUIT
  1. N YTQEVNT,YTQ101,X
  1. S YTQ101=$$FIND1^DIC(101,"","BX","YTQ EVENT") Q:'YTQ101
  1. S YTQEVNT("action")="remove"
  1. S YTQEVNT("object")="assessment"
  1. S YTQEVNT("trigger")=TRIGGER
  1. S YTQEVNT("ien")=$G(IEN)
  1. S YTQEVNT("dfn")=$G(DFN)
  1. S YTQEVNT("test")=$G(TEST)
  1. S X=YTQ101_";ORD(101,"
  1. D EN^XQOR
  1. Q
  1. ;
  1. ; -- test receiver --
  1. ;
  1. RECEIVE ; YTQ EVENT TEST RECEIVER (save event data in ^XTMP)
  1. ; store events in sequence by date, example:
  1. ; ^XTMP("YTQEVTST-3230919",n,property)=value
  1. ; ^XTMP("YTQEVTST-3230919","CNT")=n
  1. Q:$D(YTQEVNT)<10
  1. N NOW,TODAY,NODE,CNT
  1. S NOW=$$NOW^XLFDT,TODAY=$P(NOW,"."),NODE="YTQEVTST-"_TODAY
  1. I '$D(^XTMP(NODE,0)) S ^XTMP(NODE,0)=$$FMADD^XLFDT(TODAY,1)_U_TODAY_U_"MHA Event Tester"
  1. S ^XTMP(NODE,"CNT")=$G(^XTMP(NODE,"CNT"))+1,CNT=^("CNT")
  1. M ^XTMP(NODE,CNT)=YTQEVNT
  1. S ^XTMP(NODE,CNT,"user")=DUZ
  1. S ^XTMP(NODE,CNT,"ts")=NOW
  1. Q
  1. ;
  1. ; -- test receiver interactive monitor --
  1. ;
  1. MONITOR ; for testing events published by MHA
  1. ; this may be run from the command line to watch events as they are posted
  1. ; NOTE -- the monitor doesn't support crossing midnight if you are up late
  1. N NOW,TODAY,NODE,LAST,OUT,CNT,BUF,LOOPS
  1. W !,"MHA Event Test Monitor -- press Q or spacebar to exit",!
  1. S NOW=$$NOW^XLFDT,TODAY=$P(NOW,"."),NODE="YTQEVTST-"_TODAY,LOOPS=0
  1. S LAST=$G(^XTMP(NODE,"CNT"),0) ; start with most recent update
  1. S OUT=0 F D Q:OUT
  1. . S CNT=$O(^XTMP(NODE,LAST))
  1. . I CNT D SHOWEV(NODE,CNT) S LAST=CNT QUIT
  1. . R BUF:1 I $L(BUF),(" qQ^"[BUF) S OUT=1 QUIT
  1. . S LOOPS=LOOPS+1 W:LOOPS#8=0 "."
  1. Q
  1. SHOWEV(NODE,CNT) ; show a single event entry
  1. ; write timestamp action object:ien
  1. ; testName for patientName
  1. ; userLastName,initial (invoked from trigger)
  1. ;09/18/23@18:02:01 remove assessment:2342343
  1. ; CSI PARTNER VERSION for WINCHESTER,CHARLES EMERSON
  1. ; by JONES,M (invoked from edad)
  1. N X
  1. M X=^XTMP(NODE,CNT)
  1. Q:$D(X)<10
  1. W !,$$FMTE^XLFDT($G(X("ts")),"2ZS")
  1. W ?18,$G(X("action"))," ",$G(X("object")),":",$G(X("ien")),!
  1. W ?18,$G(X("test"))," for ",$P($G(^DPT(+$G(X("dfn")),0)),U),!
  1. W ?18,"by ",$P($G(^VA(200,+$G(X("user")),0)),U)
  1. W " (invoked from ",$G(X("trigger")),")",!
  1. Q
  1. ;
  1. CLEARALL ; clears all test event nodes in ^XTMP
  1. S NODE="YTQEVTST-" F S NODE=$O(^XTMP(NODE)) Q:($E(NODE,1,9)'="YTQEVTST-") D
  1. . W !,NODE
  1. . K ^XTMP(NODE)
  1. Q