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

BQINOTF.m

Go to the documentation of this file.
  1. BQINOTF ;PRXM/HC/ALA-ICARE NOTIFICATIONS ; 27 Jun 2006 3:01 PM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;**2**;May 24, 2016;Build 14
  1. ;
  1. Q
  1. ;
  1. UPD(OWNR,PLIEN,MSG) ;EP - Update notifications
  1. ;
  1. I $G(OWNR)="" Q
  1. I $G(PLIEN)="" Q
  1. ;
  1. NEW SHRDZ,ERROR,SHAXCS,SHSTDT,SHENDT
  1. ;
  1. S SHRDZ=0
  1. F S SHRDZ=$O(^BQICARE(OWNR,1,PLIEN,30,SHRDZ)) Q:'SHRDZ D
  1. . I SHRDZ'=DUZ D
  1. .. S SHAXCS=$P(^BQICARE(OWNR,1,PLIEN,30,SHRDZ,0),U,2)
  1. .. S SHSTDT=$P(^BQICARE(OWNR,1,PLIEN,30,SHRDZ,0),U,3)
  1. .. S SHENDT=$P(^BQICARE(OWNR,1,PLIEN,30,SHRDZ,0),U,4)
  1. .. I SHSTDT'>DT,((SHENDT'<DT)!(SHENDT="")),SHAXCS'="I" D FIL(SHRDZ,MSG)
  1. ;
  1. I $G(OWNR)'=$G(DUZ) D FIL(OWNR,MSG)
  1. Q
  1. ;
  1. ADD(DATA,RECIP,SUBJ,BODY,SENT) ;EP -- BQI ADD NOTIFICATION
  1. ;Description
  1. ; RPC Call to add notifications
  1. ;Input
  1. ; RECIP - Recipients of message
  1. ; SUBJ - Subject of message
  1. ; BODY - Body of message (not in use yet)
  1. ; SENT - If background job sent the notification
  1. NEW UID,II,KK,ERROR,NDZ,NTDFTM,RESULT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQINOTF",UID))
  1. K @DATA
  1. ;
  1. S II=0,RESULT=1,SENT=$G(SENT,"")
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQINOTF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S @DATA@(II)="I00010RESULT"_$C(30)
  1. ;
  1. S NTDFTM=$$NOW^XLFDT()
  1. F KK=1:1 S NDZ=$P(RECIP,$C(28),KK) Q:NDZ="" D FIL(NDZ,SUBJ,.BODY,SENT)
  1. ;
  1. I $G(RECIP)="" D FIL(DUZ,SUBJ,.BODY,SENT)
  1. ;
  1. I $D(ERROR) S RESULT=-1
  1. S II=II+1,@DATA@(II)=RESULT_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. FIL(NDZ,TMSG,BODY,SENT) ;EP - Notify users
  1. ;Input parameters
  1. ; NDZ - IEN of person receiving notification
  1. ; TMSG - Subject of message
  1. ; BODY - Body of message (not being set at this time)
  1. ; SENT - will be 1 if sent by background job
  1. ;
  1. NEW NTDFTM,DLOG,LYR
  1. S NTDFTM=$$NOW^XLFDT()
  1. ;
  1. ; If person hasn't signed onto iCare in over a year, quit
  1. I $G(^BQICARE(NDZ,0))="" K ^BQICARE(NDZ) Q
  1. S DLOG=$P(^BQICARE(NDZ,0),U,6)\1,LYR=$$DATE^BQIUL1("T-365")
  1. I DLOG<LYR Q
  1. ;
  1. I $G(^BQICARE(NDZ,3,0))="" S ^BQICARE(NDZ,3,0)="^90505.12D^^"
  1. NEW DA,IENS,X,DIC,ERROR
  1. S DA(1)=NDZ,X=NTDFTM,DIC(0)="L",DIC="^BQICARE("_DA(1)_",3,"
  1. K DO,DD D FILE^DICN
  1. S DA=+Y I DA<0 Q
  1. S IENS=$$IENS^DILF(.DA)
  1. S BQINOTE(90505.12,IENS,.02)=$S($G(SENT)=1:"",1:DUZ)
  1. S BQINOTE(90505.12,IENS,.03)="N"
  1. S BQINOTE(90505.12,IENS,.04)=$G(TMSG)
  1. D FILE^DIE("","BQINOTE","ERROR")
  1. K BQINOTE
  1. I $D(BODY)>1 D WP^DIE(90505.12,IENS,1,"","BODY","ERROR")
  1. I $G(BODY)["^TMP" D WP^DIE(90505.12,IENS,1,"",BODY,"ERROR")
  1. ; Raise event to user that a new notification has been created
  1. I '$D(ERROR) D EVENT^BMXMEVN("BQI NOTIFICATION RECEIVED",NDZ_"~"_$G(TMSG))
  1. Q
  1. ;
  1. RET(DATA,FAKE) ; EP -- BQI GET NOTIFICATIONS
  1. ; Return notifications for a user
  1. ;
  1. NEW UID,II,NDATA,NTFN
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQINOTF",UID))
  1. K @DATA
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQINOTF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S @DATA@(II)="I00010NOTF_IEN^D00015NOTIFICATION_DATETIME^T00035FROM_WHOM^T00003STATUS^T00231SUBJECT^T01024BODY"_$C(30)
  1. ;
  1. S NTFN=0
  1. F S NTFN=$O(^BQICARE(DUZ,3,NTFN)) Q:'NTFN D
  1. . S II=II+1
  1. . S NDATA=^BQICARE(DUZ,3,NTFN,0)
  1. . NEW DA,IENS,NSTAT
  1. . S DA(1)=DUZ,DA=NTFN,IENS=$$IENS^DILF(.DA)
  1. . S NSTAT=$$GET1^DIQ(90505.12,IENS,.03,"E")
  1. . NEW BN,BODY
  1. . S BODY="",BN=0
  1. . F S BN=$O(^BQICARE(DUZ,3,NTFN,1,BN)) Q:'BN D
  1. .. S BODY=BODY_" "_^BQICARE(DUZ,3,NTFN,1,BN,0)
  1. . ;S BODY=$$TKO^BQIUL1(BODY,$C(10))
  1. . S BODY=$E(BODY,2,$L(BODY))
  1. . S @DATA@(II)=NTFN_"^"_$$FMTE^BQIUL1($P(NDATA,U,1))_"^"_$$GET1^DIQ(200,$P(NDATA,U,2)_",",.01,"E")_"^"_NSTAT_"^"_$P(NDATA,U,4)_"^"_BODY_$C(30)
  1. ;
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. MOD(DATA,NIEN,STAT) ;EP -- BQI UPDATE NOTIFICATION STATUS
  1. ; Modify the status of a notification
  1. NEW UID,II,DA,IENS,RESULT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQINOTF",UID))
  1. K @DATA
  1. ;
  1. I $G(NIEN)="" S BMXSEC="No notification record passed in." Q
  1. S II=0,RESULT=1
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQINOTF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S @DATA@(II)="I00010RESULT"_$C(30)
  1. ;
  1. S DA(1)=DUZ,DA=NIEN,IENS=$$IENS^DILF(.DA)
  1. S BQNUPD(90505.12,IENS,.03)=$G(STAT)
  1. D FILE^DIE("E","BQNUPD","ERROR")
  1. K BQNUPD
  1. I $D(ERROR) S RESULT=-1
  1. S II=II+1,@DATA@(II)=RESULT_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. CLR(DATA,NIEN) ;EP -- BQI CLEAR NOTIFICATIONS
  1. ; Clear notifications for user
  1. NEW UID,II,NTFN,DIK,DA
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQINOTF",UID))
  1. K @DATA
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQINOTF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S @DATA@(II)="I00010RESULT"_$C(30)
  1. ;
  1. ; If a particular notification IEN sent, just delete that one
  1. ; If no IEN, delete all notifications
  1. I $G(NIEN)="" S NTFN=0 F S NTFN=$O(^BQICARE(DUZ,3,NTFN)) Q:'NTFN D DEL
  1. I $G(NIEN)'="" S NTFN=NIEN D DEL
  1. ;
  1. S RESULT=1
  1. S II=II+1,@DATA@(II)=RESULT_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. DEL ; Delete the notification
  1. S DA(1)=DUZ,DA=NTFN,DIK="^BQICARE("_DA(1)_",3,"
  1. D ^DIK
  1. Q
  1. ;
  1. DUP(USR,SUBJECT,DATE) ;EP - Check for a duplicate message
  1. NEW MSN,OK,QFL
  1. S MSN=0,OK=1,QFL=0
  1. F S MSN=$O(^BQICARE(USR,3,MSN)) Q:'MSN D Q:QFL
  1. . I $P(^BQICARE(USR,3,MSN,0),U,4)=SUBJECT,$P(^(0),U,1)\1=DATE S OK=0,QFL=1
  1. Q OK