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

BQIRGASP.m

Go to the documentation of this file.
  1. BQIRGASP ;VNGT/HS/ALA-Asthma Patient ; 06 Mar 2009 3:58 PM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;**1,2**;May 24, 2016;Build 14
  1. ;
  1. ;
  1. EN(DATA,DFN,SOURCE) ;EP - BQI REFRESH PATIENT CARE MGT
  1. ; Input
  1. ; DFN - Patient internal entry number
  1. ; SOURCE - The Care Managment Source Type (full name e.g. Asthma)
  1. ;
  1. NEW UID,II,BQDFN,SRCN,SRC,RESULT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP(UID,"BQIRGASP"))
  1. K @DATA
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIRMPAT D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S @DATA@(II)="I00010RESULT^T00050MSG"_$C(30)
  1. S BQDFN=$G(DFN,""),SOURCE=$G(SOURCE,"")
  1. I BQDFN="" S RESULT=-1_U_"No patient selected" G DONE
  1. ;
  1. I SOURCE'="" D G DONE
  1. . S SRCN=$O(^BQI(90506.5,"B",SOURCE,"")) I SRCN="" S RESULT=-1_U_SOURCE_" not found" Q
  1. . S SRC=$P(^BQI(90506.5,SRCN,0),U,2)
  1. . D PAT(BQDFN,SRC)
  1. . S RESULT=1_U
  1. ;
  1. I SOURCE="" D G DONE
  1. . K ^BQIPAT(DFN,60)
  1. . ; If flag is set for nightly/weekly
  1. . S SRIEN=""
  1. . F S SRIEN=$O(^BQI(90506.5,"AD",1,SRIEN)) Q:SRIEN="" D
  1. .. I $P($G(^BQI(90506.5,SRIEN,0)),"^",10)=1 Q
  1. .. ;I $P($G(^BQI(90506.5,SRIEN,0)),"^",16)'=1 Q
  1. .. S SOURCE=$P($G(^BQI(90506.5,SRIEN,0)),"^",1)
  1. .. S SRC=$P($G(^BQI(90506.5,SRIEN,0)),U,2)
  1. .. D PAT(BQDFN,SRC)
  1. .. S RESULT=1_U
  1. ;
  1. DONE ;
  1. S II=II+1,@DATA@(II)=RESULT_$C(30)
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. PAT(BQDFN,SRC) ;EP - Get all Care Mgmt data for a patient
  1. ;
  1. NEW DA,IENS,DIC,PSRIEN,SRIEN,CDRIEN,X,Y,CODE,DLAYGO,DIC,HDR,IEN,ORD,V
  1. NEW BQIUPD,VALUE,VISIT,OTHER,STVW,VAL,VSDTM,CT,ASN,%ANS,APCHSBWR,R,T,W
  1. NEW APCHSDAT,APCHSTEX,APCHSTXN,LPAP,%1,%ANS,%DT,%X,%Y,AIEN,AMQQTAXN,LT,M
  1. NEW APCHC,APCHCPT,APCHLAST,APCHRF,BD,C,D,D0,DAT1,DAT2,DATE,E,ED,G,H,J
  1. S SRIEN=$O(^BQI(90506.5,"C",SRC,"")) I SRIEN="" Q
  1. ; Check for bad records
  1. I $O(^BQIPAT(BQDFN,60,"B",SRIEN,""))="" D
  1. . S ASN=0
  1. . F S ASN=$O(^BQIPAT(BQDFN,60,ASN)) Q:'ASN D
  1. .. I $G(^BQIPAT(BQDFN,60,ASN,0))'="",$P($G(^BQIPAT(BQDFN,60,ASN,0)),U,1)'=SRIEN Q
  1. .. I $G(^BQIPAT(BQDFN,60,ASN,0))'="",$P($G(^BQIPAT(BQDFN,60,ASN,0)),U,1)=SRIEN Q
  1. .. K ^BQIPAT(BQDFN,60,ASN)
  1. ;
  1. S DA(1)=BQDFN,X=$P(^BQI(90506.5,SRIEN,0),U,1),DIC(0)="L",DLAYGO=90507.56
  1. S DIC="^BQIPAT("_DA(1)_",60,"
  1. I $G(^BQIPAT(BQDFN,60,0))="" S ^BQIPAT(BQDFN,60,0)="^90507.56P^^"
  1. D ^DIC
  1. S (PSRIEN,DA)=+Y
  1. S IENS=$$IENS^DILF(.DA)
  1. S BQIUPD(90507.56,IENS,.02)=$$NOW^XLFDT()
  1. ;
  1. I $G(SRC)="DM" D
  1. . S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J),BDMJOB=UID,BDMBTH=$H
  1. . S CYR=$P($G(^BQI(90508,1,"DM")),U,1),BDMDMRG=$P($G(^BQI(90508,1,"DM")),"^",2)
  1. . S CIEN=$O(^BQI(90508,1,21,"B",CYR,"")) I CIEN="" Q
  1. . S PGTHR=$P(^BQI(90508,1,21,CIEN,0),U,2),PGRF=$P(^(0),U,4)
  1. . K ^XTMP(PGRF,BDMJOB) S ^XTMP(PGRF,0)=$$FMADD^XLFDT(DT,1)_"^"_DT_"^iCare DM AUDIT"
  1. . S BDMRBD=DT,BDMADAT=DT,BDMTYPE="P",BDMRED=$$FMADD^XLFDT(BDMADAT,-365)
  1. . S BDMBDAT=$$FMADD^XLFDT(BDMADAT,-365),BDMPD=DFN
  1. . D @("GATHER^"_PGTHR)
  1. ;
  1. ; Check for Alternate display order first
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AF",SRC,ORD)) Q:ORD="" D
  1. . S AIEN=""
  1. . F S AIEN=$O(^BQI(90506.1,"AF",SRC,ORD,AIEN)) Q:AIEN="" D UPD(AIEN)
  1. ;
  1. ; Check for normal display order
  1. S ORD=""
  1. F S ORD=$O(^BQI(90506.1,"AD",SRC,ORD)) Q:ORD="" D
  1. . S AIEN=""
  1. . F S AIEN=$O(^BQI(90506.1,"AD",SRC,ORD,AIEN)) Q:AIEN="" D UPD(AIEN)
  1. ;
  1. ; Check for site-populated fields
  1. S AIEN=0 F S AIEN=$O(^BQI(90506.5,SRIEN,10,AIEN)) Q:'AIEN D
  1. . S EXEC=$G(^BQI(90506.5,SRIEN,10,AIEN,3)) I EXEC="" Q
  1. . X EXEC
  1. . S CODE=$P(^BQI(90506.5,SRIEN,10,AIEN,0),"^",1)
  1. . D FILD
  1. Q
  1. ;
  1. UPD(AIEN) ; EP - Update values
  1. ;I $$GET1^DIQ(90506.1,AIEN_",",.1,"I")=1 Q
  1. I $P($G(^BQI(90506.1,AIEN,0)),"^",10)=1 Q
  1. S STVW=AIEN,VAL="",VISIT="",OTHER=""
  1. D CVAL(BQDFN)
  1. S CODE=$P($G(^BQI(90506.1,AIEN,0)),U,1) I CODE="" Q
  1. I VAL'="" D
  1. . I CODE="DM_TOBUSE" S VAL=$P(VAL,U,2)
  1. . I CODE="DM_A1C" S VAL=$P(VAL,U,2)_" ("_$$FMTMDY^BQIUL1($P(VAL,U,1))_")"
  1. . I CODE="DM_CREAT"!(CODE="DM_TCHOL")!(CODE="DM_HDL")!(CODE="DM_LDL")!(CODE="DM_TRIG") S VAL=$P(VAL,U,1)_"("_$P(VAL,U,2)_")"
  1. . I CODE="DM_EGFR"!(CODE="DM_UACR") S VAL=$P(VAL,U,2)_" ("_$P(VAL,U,3)_")"
  1. . I CODE="DM_TBTEST" S VAL=$P(VAL,"|",1)
  1. . I CODE="DM_TBRES" S VAL=$P(VAL,"|",3)
  1. ;
  1. I VAL="",CODE="DM_DMTYP" D
  1. . D CURR
  1. . D @("TYPEDM^"_PGTHR) I BDMTYDM'="" S VAL=BDMTYDM
  1. D FILD
  1. Q
  1. ;
  1. FILD ;EP - File the data
  1. S DA(2)=BQDFN,DA(1)=PSRIEN,X=CODE,DIC(0)="L",DLAYGO=90507.561
  1. S DIC="^BQIPAT("_DA(2)_",60,"_DA(1)_",1,"
  1. I $G(^BQIPAT(BQDFN,60,PSRIEN,1,0))="" S ^BQIPAT(BQDFN,60,PSRIEN,1,0)="^90507.561^^"
  1. D ^DIC I +Y=-1 K DD,DO D FILE^DICN
  1. S (CDRIEN,DA)=+Y
  1. S IENS=$$IENS^DILF(.DA)
  1. S BQIUPD(90507.561,IENS,.02)=$G(VAL)
  1. S BQIUPD(90507.561,IENS,.03)=$G(DATE)
  1. S BQIUPD(90507.561,IENS,.04)=$G(VISIT)
  1. S BQIUPD(90507.561,IENS,.05)=$G(OTHER)
  1. K VAL,OTHER,DATE,VISIT
  1. I $D(BQIUPD)>0 D FILE^DIE("","BQIUPD","ERROR")
  1. Q
  1. ;
  1. CVAL(DFN) ; Get demographic values
  1. ;Parameters
  1. ; FIL = FileMan file number
  1. ; FLD = FileMan field number
  1. ; EXEC = If an executable is needed to determine value
  1. ; HDR = Header value
  1. ;the executable expects the value to be returned in variable VAL
  1. NEW FIL,FLD,EXEC,RCODE,RGIEN,RIEN,RHDR,MVALUE,CODE
  1. S FIL=$P($G(^BQI(90506.1,STVW,0)),"^",5)
  1. S FLD=$P($G(^BQI(90506.1,STVW,0)),"^",6)
  1. S EXEC=$G(^BQI(90506.1,STVW,5))
  1. S HDR=$P($G(^BQI(90506.1,STVW,0)),"^",8)
  1. I $G(DFN)="" S VAL="" Q
  1. ;
  1. I $G(EXEC)'="" X EXEC Q
  1. ;
  1. I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. Q
  1. ;
  1. S RCODE=$$GET1^DIQ(90506.1,STVW_",",.01,"E")
  1. S RGIEN=$O(^BQI(90506.3,"AC",CRIEN,"")),VAL=""
  1. I RGIEN'="" D Q:VAL'=""
  1. . S RIEN=$O(^BQI(90506.3,RGIEN,10,"AC",RCODE,""))
  1. . I RIEN'="",$P($G(^BQI(90506.3,RGIEN,10,RIEN,1)),U,1)="M" D Q
  1. .. S RHDR=$P(^BQI(90506.3,RGIEN,10,RIEN,0),U,2),MVALUE=""
  1. .. NEW SNAME,SRIEN,SORD,SXREF,SIEN
  1. .. S SNAME=$P(^BQI(90506.3,RGIEN,10,RIEN,0),U,1)
  1. .. S SRIEN=$O(^BQI(90506.3,"B",SNAME,"")) I SRIEN="" Q
  1. .. S SORD="",SXREF=$S($D(^BQI(90506.3,SRIEN,10,"AF")):"AF",1:"C")
  1. .. F S SORD=$O(^BQI(90506.3,SRIEN,10,SXREF,SORD)) Q:SORD="" D
  1. ... S SIEN=""
  1. ... F S SIEN=$O(^BQI(90506.3,SRIEN,10,SXREF,SORD,SIEN)) Q:SIEN="" D
  1. .... I $P(^BQI(90506.3,SRIEN,10,SIEN,0),U,4)'="S" Q
  1. .... S CODE=$P(^BQI(90506.3,SRIEN,10,SIEN,0),U,7) I CODE="" Q
  1. .... S STVW=$O(^BQI(90506.1,"B",CODE,"")) I STVW="" Q
  1. .... I $P($G(^BQI(90506.1,STVW,0)),"^",10)=1 Q
  1. .... NEW FIL,FLD,EXEC
  1. .... S FIL=$P($G(^BQI(90506.1,STVW,0)),"^",5)
  1. .... S FLD=$P($G(^BQI(90506.1,STVW,0)),"^",6)
  1. .... S EXEC=$G(^BQI(90506.1,STVW,1))
  1. .... S HDR=RHDR
  1. .... I $G(DFN)="" S VAL="" Q
  1. .... ;
  1. .... I $G(EXEC)'="" X EXEC S VAL=VAL_$S(VAL'="":$C(10),1:"") Q
  1. .... I FIL'="",FLD'="" S VAL=$$GET1^DIQ(FIL,DFN_",",FLD,"E")
  1. .... S VALUE=VALUE_VAL_$S(VAL'="":$C(10),1:"")
  1. .... S VAL=VALUE
  1. ... S MVALUE=MVALUE_$$TKO^BQIUL1(VAL,$C(10))
  1. .. S VAL=MVALUE
  1. Q
  1. ;
  1. CURR ;EP - Get current DM Audit information
  1. S CYR=$P($G(^BQI(90508,1,"DM")),U,1)
  1. S CIEN=$O(^BQI(90508,1,21,"B",CYR,"")) I CIEN="" Q
  1. S PGTHR=$P(^BQI(90508,1,21,CIEN,0),U,2),PGRF=$P(^(0),U,4)
  1. Q