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

BQIFLAG.m

Go to the documentation of this file.
  1. BQIFLAG ;PRXM/HC/ALA-Get Flag indicator ; 06 Sep 2006 2:34 PM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. Q
  1. ;
  1. RET(OWNR,BQIPREF) ;EP -- Returns the flag preferences for a user
  1. NEW ADIEN,ADESC,PARMS,MPARMS,TMFRAME,NM,NAME,Y,X,TDT,FDT,%DT
  1. S ADIEN=0
  1. F S ADIEN=$O(^BQICARE(OWNR,10,"B",ADIEN)) Q:'ADIEN D
  1. . ; If the flag entry is inactive, quit
  1. . I $P(^BQI(90506,ADIEN,0),U,2)=1 Q
  1. . K PARMS,MPARMS
  1. . S ADESC=$P(^BQI(90506,ADIEN,0),U,1)
  1. . ; Check for the user preferences timeframe for flags
  1. . D GPARMS^BQIPLFLG(DUZ,ADESC,.PARMS,.MPARMS)
  1. . S NM=""
  1. . I $O(PARMS(NM))="",'$D(MPARMS) Q
  1. . F S NM=$O(PARMS(NM)) Q:NM="" S @NM=PARMS(NM)
  1. . I $G(TMFRAME)="" Q
  1. . I TMFRAME["T-" S %DT="",X=TMFRAME D ^%DT S FDT=Y
  1. . I $G(DT)="" D DT^DICRW
  1. . S TDT=DT
  1. . S BQIPREF(ADIEN)=FDT_U_TDT
  1. Q
  1. ;
  1. FPAT(PDFN,OWNR,BQIPREF,TYPE) ;EP -- Checks if the patient has an active flag for the user and the user preferences
  1. NEW FLG,QFLG,FDT,FDTM,TDT,REC,STAT
  1. S TYPE=$G(TYPE,"")
  1. S FLG="",QFLG=0
  1. F S FLG=$O(BQIPREF(FLG)) Q:FLG="" D Q:QFLG
  1. . S FDT=$P(BQIPREF(FLG),U,1),TDT=$P(BQIPREF(FLG),U,2)
  1. . S FDTM=FDT
  1. . F S FDTM=$O(^BQIPAT("AF",PDFN,FLG,FDTM)) Q:FDTM=""!(FDTM\1>TDT) D Q:QFLG
  1. .. S REC=0
  1. .. F S REC=$O(^BQIPAT("AF",PDFN,FLG,FDTM,REC)) Q:REC="" D Q:QFLG
  1. ... S STAT=+$P($G(^BQIPAT(PDFN,10,FLG,5,REC,1,OWNR,0)),U,2)
  1. ... I STAT,TYPE="" Q
  1. ... I STAT,TYPE="S" Q
  1. ... I STAT,TYPE="A" S QFLG=1 Q
  1. ... S QFLG=1
  1. Q QFLG
  1. ;
  1. UPU(BDFN,USR) ;EP -- Update user entry
  1. NEW DIC,DA,DLAYGO,X,DINUM,Y,BQIPREF,FLAG,FDTM,RIEN
  1. D RET^BQIFLAG(USR,.BQIPREF)
  1. S FLAG=""
  1. F S FLAG=$O(BQIPREF(FLAG)) Q:FLAG="" D
  1. . S FDTM=""
  1. . F S FDTM=$O(^BQIPAT("AF",BDFN,FLAG,FDTM)) Q:FDTM="" D
  1. .. S RIEN=""
  1. .. F S RIEN=$O(^BQIPAT("AF",BDFN,FLAG,FDTM,RIEN)) Q:RIEN="" D
  1. ... I $G(^BQIPAT(BDFN,10,FLAG,5,RIEN,0))="" D Q
  1. .... K ^BQIPAT("AF",BDFN,FLAG,FDTM,RIEN)
  1. .... K ^BQIPAT("AD",FLAG,BDFN,FDTM,RIEN)
  1. .... K ^BQIPAT("AE",FLAG,FDTM,BDFN,RIEN)
  1. ... I $P(^BQIPAT(BDFN,10,FLAG,5,RIEN,0),U,2)'=FDTM D
  1. .... K ^BQIPAT("AF",BDFN,FLAG,FDTM,RIEN)
  1. .... K ^BQIPAT("AD",FLAG,BDFN,FDTM,RIEN)
  1. .... K ^BQIPAT("AE",FLAG,FDTM,BDFN,RIEN)
  1. ... S DA(3)=BDFN,DA(2)=FLAG,DA(1)=RIEN
  1. ... I '$D(^BQIPAT(DA(3),10,DA(2),5,DA(1),1,0)) S ^BQIPAT(DA(3),10,DA(2),5,DA(1),1,0)="^90507.5151P^^"
  1. ... ; for each user that has this patient in a panel, add a user record so
  1. ... ; that each user's action/status for this patient and flag can be recorded
  1. ... I $D(^BQIPAT(DA(3),10,DA(2),5,DA(1),1,USR)) Q
  1. ... S (X,DINUM)=USR,DIC="^BQIPAT("_DA(3)_",10,"_DA(2)_",5,"_DA(1)_",1,"
  1. ... S DIC(0)="L",DLAYGO=90507.5151
  1. ... K DO,DD D FILE^DICN
  1. Q
  1. ;
  1. SXAD ; Set the AD cross-reference
  1. ;BQIPAT("AD",Flag IEN,Patient IEN,Record DTM,Record IEN)
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" S ^BQIPAT("AD",DA(1),DA(2),BQIDTM,DA)=""
  1. Q
  1. ;
  1. KXAD ; Kill the cross-reference
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" K ^BQIPAT("AD",DA(1),DA(2),BQIDTM,DA)
  1. Q
  1. ;
  1. SXAE ; Set the AE cross-reference
  1. ; BQIPAT("AE",Flag IEN,Record DTM,Patient IEN,Record IEN)
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" S ^BQIPAT("AE",DA(1),BQIDTM,DA(2),DA)=""
  1. Q
  1. ;
  1. KXAE ; Kill the AE cross-reference
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" K ^BQIPAT("AE",DA(1),BQIDTM,DA(2),DA)
  1. Q
  1. ;
  1. SXAF ; Set the AF cross-reference
  1. ; BQIPAT("AF",Patient IEN,Flag IEN,Record DTM,Record IEN)
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" S ^BQIPAT("AF",DA(2),DA(1),BQIDTM,DA)=""
  1. Q
  1. ;
  1. KXAF ; Kill the AF cross-reference
  1. NEW BQIDTM
  1. S BQIDTM=$P(^BQIPAT(DA(2),10,DA(1),5,DA,0),U,2)
  1. I BQIDTM'="" K ^BQIPAT("AF",DA(2),DA(1),BQIDTM,DA)
  1. Q