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

BQIPLRF.m

Go to the documentation of this file.
  1. BQIPLRF ;PRXM/HC/ALA-Panel Refresh ; 11 Jul 2006 10:05 AM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**1**;Apr 18, 2012;Build 43
  1. ;
  1. Q
  1. ;
  1. ALOG(DATA,FAKE) ;EP -- BQI AUTOPOP LOGIN
  1. NEW UID,II,USR,PNL,LGLOB,LOCK,X,CSTA,PLIDEN,LFLG
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J),II=0
  1. S DATA=$NA(^TMP("BQIPLRF",UID))
  1. K @DATA
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIPLRF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S @DATA@(II)="I00010RESULT"_$C(30)
  1. ;
  1. S USR=DUZ,PNL=""
  1. ;
  1. I $O(^BQICARE(USR,1,"AC","A",PNL))="" G DLOG
  1. ;
  1. F S PNL=$O(^BQICARE(USR,1,"AC","A",PNL)) Q:'PNL D
  1. . ; Lock panel to be repopulated
  1. . S LOCK=$$LCK(USR,PNL)
  1. . ; If not able to lock panel, clear status, send notification and go to next one
  1. . I 'LOCK D Q
  1. .. D STA(USR,PNL)
  1. .. D NNOTF(USR,PNL)
  1. . ;
  1. . ; Check if locked panel has panel filters
  1. . NEW PLSUCC,SUBJECT,LOCK,POWNR,PPLIEN
  1. . S PLSUCC=$$CPFL^BQIPLUTL(USR,PNL)
  1. . ; If panel contains panel filters and were not successful in being locked,
  1. . ; clear status, send notification and go to next panel in list
  1. . I 'PLSUCC D Q
  1. .. D STA(USR,PNL)
  1. .. D ULK(USR,PNL)
  1. .. S SUBJECT="Unable to lock panel(s) that are filters for panel: "_$P(^BQICARE(USR,1,PNL,0),U,1)
  1. .. S LOCK="0^"_$P(PLSUCC,U,2),POWNR=$P(PLSUCC,U,4),PPLIEN=$P(PLSUCC,U,5)
  1. .. I $P(PLSUCC,U,3)'="" S BMXSEC=$P(PLSUCC,U,3),SUBJECT=""
  1. .. D NNOTF(USR,PNL,SUBJECT)
  1. . ;
  1. . ; Check if panel is a panel filter
  1. . S PLIDEN=USR_$C(26)_$P(^BQICARE(USR,1,PNL,0),"^",1)
  1. . I $D(^BQICARE("AD",PLIDEN)) D Q:LFLG
  1. .. S LFLG=0 D PFILL^BQIPLUTL(USR,PNL,PLIDEN)
  1. .. ; If not able to lock any of the owning panels, unlock owning panel, clear status, unlock panel and quit
  1. .. I LFLG D PFILU^BQIPLUTL(USR,PNL,PLIDEN),STA(USR,PNL),ULK(USR,PNL)
  1. . ; Set status to currently running
  1. . D STA(USR,PNL,1)
  1. ;
  1. ; Refresh panel list
  1. D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(USR,0))
  1. ;
  1. K PLIDEN
  1. S PNL=""
  1. F S PNL=$O(^BQICARE(USR,1,"AC","A",PNL)) Q:'PNL D
  1. . ; For each panel, check current status, if not currently running, quit
  1. . S CSTA=+$$CSTA(USR,PNL) I 'CSTA Q
  1. . ; repopulate
  1. . D POP^BQIPLPP("",USR,PNL,"",USR)
  1. . ; Reset description
  1. . NEW DA,IENS
  1. . S DA(1)=USR,DA=PNL,IENS=$$IENS^DILF(.DA)
  1. . K DESC
  1. . D DESC^BQIPDSCM(USR,PNL,.DESC)
  1. . ;D PEN^BQIPLDSC(USR,PNL,.DESC)
  1. . D WP^DIE(90505.01,IENS,5,"","DESC")
  1. . K DESC
  1. . ; clear status
  1. . D STA(USR,PNL)
  1. . ; unlock panel
  1. . D ULK(USR,PNL)
  1. . ; unlock any panels that are filters
  1. . D CPFLU^BQIPLUTL(USR,PNL)
  1. . ; unlock any owning panels
  1. . S PLIDEN=USR_$C(26)_$P(^BQICARE(USR,1,PNL,0),"^",1)
  1. . I $D(^BQICARE("AD",PLIDEN)) D PFILU^BQIPLUTL(USR,PNL,PLIDEN)
  1. . ; refresh panel list
  1. . D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(USR,PNL))
  1. ;
  1. ; refresh flag list
  1. D EVT("BQI REFRESH FLAG LIST",USR)
  1. ;
  1. DLOG S II=II+1,@DATA@(II)="1"_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. K PLIDEN
  1. Q
  1. ;
  1. MAN(DATA,OWNR,PLIEN,RETAIN) ;EP -- BQI MANUAL POP
  1. NEW UID,II,LGLOB,LOCK,X,PLIDEN,LFLG
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J),II=0
  1. S DATA=$NA(^TMP("BQIPLRF",UID))
  1. K @DATA
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIPLRF D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S RETAIN=$G(RETAIN,"")
  1. S LOCK=$$LCK(OWNR,PLIEN)
  1. I 'LOCK D G EXT
  1. . D STA(OWNR,PLIEN)
  1. . D NNOTF(OWNR,PLIEN)
  1. ;
  1. ; Check if panel contains panel filters and try to lock them
  1. NEW PLSUCC,SUBJECT,LOCK,POWNR,PPLIEN
  1. S PLSUCC=$$CPFL^BQIPLUTL(OWNR,PLIEN)
  1. I 'PLSUCC D G EXT
  1. . D STA(OWNR,PLIEN)
  1. . S SUBJECT="Unable to lock panel(s) that are filters for panel: "_$P(^BQICARE(OWNR,1,PLIEN,0),U,1)
  1. . S LOCK="0^"_$P(PLSUCC,U,2),POWNR=$P(PLSUCC,U,4),PPLIEN=$P(PLSUCC,U,5)
  1. . I $P(PLSUCC,U,3)'="" S BMXSEC=$P(PLSUCC,U,3),SUBJECT=""
  1. . D NNOTF(OWNR,PLIEN,SUBJECT)
  1. ;
  1. ; Check if panel is a panel filter and try to lock all panels using this one
  1. S PLIDEN=OWNR_$C(26)_$P(^BQICARE(OWNR,1,PLIEN,0),"^",1)
  1. I $D(^BQICARE("AD",PLIDEN)) D I LFLG G EXT
  1. . S LFLG=0 D PFILL^BQIPLUTL(OWNR,PLIEN,PLIDEN)
  1. . I LFLG D PFILU^BQIPLUTL(OWNR,PLIEN,PLIDEN),STA(OWNR,PLIEN),ULK(OWNR,PLIEN) Q
  1. D STA(OWNR,PLIEN,1)
  1. ;
  1. S @DATA@(II)="I00010RESULT"_$C(30)
  1. ;
  1. D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(OWNR,PLIEN))
  1. ;
  1. K PLIDEN
  1. ; populate panel
  1. D POP^BQIPLPP("",OWNR,PLIEN,RETAIN)
  1. ; Reset description
  1. NEW DA,IENS
  1. S DA(1)=OWNR,DA=PLIEN,IENS=$$IENS^DILF(.DA)
  1. K DESC
  1. D DESC^BQIPDSCM(OWNR,PLIEN,.DESC)
  1. ;D PEN^BQIPLDSC(OWNR,PLIEN,.DESC)
  1. D WP^DIE(90505.01,IENS,5,"","DESC")
  1. K DESC
  1. ;
  1. D STA(OWNR,PLIEN)
  1. D ULK(OWNR,PLIEN)
  1. D CPFLU^BQIPLUTL(OWNR,PLIEN)
  1. S PLIDEN=OWNR_$C(26)_$P(^BQICARE(OWNR,1,PLIEN,0),"^",1)
  1. I $D(^BQICARE("AD",PLIDEN)) D PFILU^BQIPLUTL(OWNR,PLIEN,PLIDEN)
  1. ;
  1. EXT D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(OWNR,PLIEN))
  1. D EVT("BQI REFRESH FLAG LIST",OWNR)
  1. ;
  1. S II=II+1,@DATA@(II)="1"_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. ;
  1. K RETAIN,OWNR,PLIEN,PLIDEN
  1. Q
  1. ;
  1. LCK(USR,PNL) ;EP -- Try to lock panel
  1. S LGLOB=$NA(^TMP("BQIPLRF",UID))
  1. D LOCK^BQIPLLK(.LGLOB,USR,PNL)
  1. I $G(BMXSEC) Q 0
  1. ; Strip off trailing $C(30)
  1. I $P($G(@LGLOB@(1)),U,1)=0 Q 0_U_$$TKO^BQIUL1($P(@LGLOB@(1),U,3),$C(30))
  1. Q 1
  1. ;
  1. ULK(USR,PNL) ;EP -- Unlock panel
  1. S LGLOB=$NA(^TMP("BQIPLRF",UID))
  1. D UNLOCK^BQIPLLK(.LGLOB,USR,PNL)
  1. K ^TMP("BQIPLLK",UID)
  1. Q
  1. ;
  1. EVT(NAME,PARMS) ;EP -- Raise the event
  1. D EVENT^BMXMEVN(NAME,PARMS)
  1. Q
  1. ;
  1. STA(USR,PNL,VAL) ;EP -- Set status
  1. I $G(VAL)="" S VAL="@"
  1. NEW DA,IENS
  1. S DA(1)=USR,DA=PNL,IENS=$$IENS^DILF(.DA)
  1. S BQIUPD(90505.01,IENS,3.4)=$G(VAL)
  1. D FILE^DIE("","BQIUPD","ERROR")
  1. K BQIUPD
  1. Q
  1. ;
  1. CSTA(USR,PNL) ;EP -- Current status value
  1. NEW DA,IENS
  1. S DA(1)=USR,DA=PNL,IENS=$$IENS^DILF(.DA)
  1. Q $$GET1^DIQ(90505.01,IENS,3.4,"I")
  1. ;
  1. NOT(USR,PNL,LCKBY) ;EP -- Send a notification
  1. NEW SUBJECT,DA,IENS,USRNM
  1. S DA(1)=USR,DA=PNL,IENS=$$IENS^DILF(.DA)
  1. S USRNM=$$GET1^DIQ(200,USR_",",.01,"E")
  1. S SUBJECT="Panel "_$$GET1^DIQ(90505.01,IENS,.01,"E")_" was unable to be autorefreshed"
  1. I $G(LCKBY)]"" S SUBJECT=SUBJECT_" because it was locked by "_$S(LCKBY[USRNM:"you",1:LCKBY)
  1. D ADD^BQINOTF("",USR,SUBJECT)
  1. Q
  1. ;
  1. ERR ;
  1. ;
  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 $G(USR)'=""&($G(PNL)'="") D
  1. . D STA(USR,PNL)
  1. . D ULK(USR,PNL)
  1. . D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(USR,PNL))
  1. I $G(OWNR)'=""&($G(PLIEN)'="") D
  1. . D STA(OWNR,PLIEN)
  1. . D ULK(OWNR,PLIEN)
  1. . D EVT("BQI REFRESH PANEL LIST",$$PLID^BQIUG1(OWNR,PLIEN))
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)="-1"_$C(30)
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. NNOTF(OWNR,PLIEN,SUBJECT) ;EP - Not able to lock notification message
  1. S SUBJECT=$G(SUBJECT,"")
  1. I $G(BMXSEC)=""&(SUBJECT="") D NOT(OWNR,PLIEN,$P(LOCK,U,2)) Q
  1. I SUBJECT="" S SUBJECT="Unable to lock because "_BMXSEC
  1. D ADD^BQINOTF("",OWNR,SUBJECT)
  1. Q