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

BQIMUDCQ.m

Go to the documentation of this file.
  1. BQIMUDCQ ;GDIT/HS/ALA-MU Clin Qual by Division ; 21 Nov 2012 3:56 PM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**3,4**;Apr 18, 2012;Build 66
  1. ;
  1. PROV(DATA,TMFRAME,PERIOD,PROV,CNT,DIV) ;EP -- BQI MU GET PROV CQM
  1. NEW UID,II,HDR,C1,C2,C3,C4,NAME,HEAD,HX,PEC,SORT,QFL,PCT,CT,DDATA,CPER,PPER
  1. NEW BJ,BQCDAR,BQDTM,BQPDAR,CRDT,CURDT,CYR,ID,MSN,NYR,PRDT,PYR,QQF
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIMUPCQM",UID))
  1. K @DATA
  1. S DIV=$G(DIV,"")
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIMUDCQ D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. D GTM^BQIMUTIM
  1. ;
  1. S HDR="T00050PROVIDER^T00035HIDE_PROV_SORT^T00030HIDE_CURR_PERIOD^T00030HIDE_PREV_PERIOD^"
  1. S HX=0,PEC=5
  1. F S HX=$O(^BGPMUIND(90596.11,HX)) Q:'HX D
  1. . S MSN=$P(^BGPMUIND(90596.11,HX,0),U,1)
  1. . I $G(^BGPMUIND(90595.11,MSN,0))="" Q
  1. . I $P(^BGPMUIND(90595.11,MSN,0),U,4)'="H" D
  1. .. S HDR=HDR_"T00005"_$P(^BGPMUIND(90596.11,HX,0),U,4)_"_CURR^T00005"_$P(^BGPMUIND(90596.11,HX,0),U,4)_"_PREV^"
  1. .. S HEAD($P(^BGPMUIND(90596.11,HX,0),U,4))=PEC,PEC=PEC+2
  1. S @DATA@(II)=HDR_"T00020HIDE_LAST_PROV"_$C(30)
  1. S (C1,C2,C3,C4,CT,PCT)=0
  1. S PROV=$G(PROV,"")
  1. I PROV="" S PROV=+PROV
  1. I PROV'="" D
  1. . S C1=+$P(PROV,":",2),C2=+$P(PROV,":",3),C3=+$P(PROV,":",4),C4=+$P(PROV,":",5),CT=+$P(PROV,":",6)
  1. . S PROV=$P(PROV,":",1)
  1. S CNT=$G(CNT,0),QFL=0,QQF=0
  1. I CT=0 D
  1. . I '$D(^BQIPROV(DUZ)) Q
  1. . I '$D(^BQI(90508,1,14,"B",DUZ)) Q
  1. . I $G(DIV)'="",'$D(^VA(200,DUZ,2,"B",DIV)) Q
  1. . I $D(^BQIPROV(DUZ)) D PFND(DUZ) D
  1. .. I QQF S QQF=0 Q
  1. .. S @DATA@(II)=@DATA@(II)_U_PROV_":"_C1_":"_C2_":"_C3_":"_C4_":"_CT_$C(30)
  1. .. F BJ=3:1:$L(@DATA@(II),U) I $P(@DATA@(II),U,BJ)="" S $P(@DATA@(II),U,BJ)="NDA"
  1. ;
  1. F S PROV=$O(^BQIPROV(PROV)) Q:'PROV D Q:QFL
  1. . I PROV=DUZ Q
  1. . I '$D(^BQI(90508,1,14,"B",PROV)) Q
  1. . I $G(DIV)'="",'$D(^VA(200,PROV,2,"B",DIV)) Q
  1. . I PROV'=DUZ D PFND(PROV) D
  1. .. I QQF S QQF=0 Q
  1. .. S @DATA@(II)=@DATA@(II)_U_PROV_":"_C1_":"_C2_":"_C3_":"_C4_":"_CT_$C(30)
  1. .. F BJ=3:1:$L(@DATA@(II),U) I $P(@DATA@(II),U,BJ)="" S $P(@DATA@(II),U,BJ)="NDA"
  1. .. I CNT'=0,PCT=CNT S QFL=1
  1. DONE ;
  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. NAM ;EP
  1. S C1=C1+1 S:C1=27 C2=C2+1,C1=1 S:C2=27 C3=C3+1,C2=1,C1=1 S:C3=27 C4=C4+1,C3=1,C2=1,C1=1 S NAME="PROVIDER "_$S(C4>0:$C(C4+64),1:"")_$S(C3>0:$C(C3+64),1:"")_$S(C2>0:$C(C2+64),1:"")_$S(C1>0:$C(C1+64),1:"")
  1. Q
  1. ;
  1. PFND(PRV) ; Find data
  1. NEW DATE,FAC,MN,MDATA,PRVR,CFROM,CTHRU,PFROM,PTHRU,IDN,CDEN,CNUM,CEXC,PDEN
  1. NEW PNUM,PEXC,CURR,PREV,SORT,USN,TYPE,DDATA,CQN,PQN,PDATA,CDATA
  1. ;
  1. S CT=CT+1,PCT=PCT+1
  1. I DUZ=PRV S PRVR=PRV_$C(28)_$P($G(^VA(200,PRV,0)),U,1),SORT=1_"_"_$P($G(^VA(200,PRV,0)),U,1)
  1. I '$D(^XUSEC("BQIZMUMGR",DUZ)),'$D(^XUSEC("BQIZMGR",DUZ)) D
  1. . I DUZ'=PRV D NAM S PRVR=PRV_$C(28)_NAME,SORT=2_"_"_NAME
  1. I $D(^XUSEC("BQIZMUMGR",DUZ))!($D(^XUSEC("BQIZMGR",DUZ))) D
  1. . I DUZ'=PRV S PRVR=PRV_$C(28)_$P($G(^VA(200,PRV,0)),U,1),SORT=1_"_"_$P($G(^VA(200,PRV,0)),U,1)
  1. S DDATA=$G(^BQIPROV(PRV,1))
  1. ;
  1. S II=II+1,@DATA@(II)=PRVR_U_SORT_U_CPER_U_PPER_U
  1. ;
  1. K BQCURR,BQPREV
  1. S CRDT=""
  1. F S CRDT=$O(BQCDAR(CRDT)) Q:CRDT="" D
  1. . S CQN=$O(^BQIPROV(PRV,50,"B",CRDT,""))
  1. . D CAGG
  1. ;
  1. S PRDT=""
  1. F S PRDT=$O(BQPDAR(PRDT)) Q:PRDT="" D
  1. . S PQN=$O(^BQIPROV(PRV,50,"B",PRDT,""))
  1. . D PAGG
  1. ;
  1. S HX=""
  1. F S HX=$O(HEAD(HX)) Q:HX="" D
  1. . S ID=HX,PEC=$G(HEAD(ID)) I PEC="" Q
  1. . S CDEN=$P($G(BQCURR(ID)),U,1),CNUM=$P($G(BQCURR(ID)),U,2),CEXC=$P($G(BQCURR(ID)),U,3)
  1. . I +CNUM=0 S CURR="0%"
  1. . I +CDEN'=0,+CNUM'=0 S CURR=(CNUM/CDEN)*100,CURR=$J(CURR,3,0)_"%",CURR=$$TRIM^BQIUL1(CURR," ")
  1. . I CDEN="",CNUM="",CEXC'="" S CURR="Excluded"
  1. . I CDEN="",CNUM="",CEXC="" S CURR=""
  1. . S PDEN=$P($G(BQPREV(ID)),U,1),PNUM=$P($G(BQPREV(ID)),U,2),PEXC=$P($G(BQPREV(ID)),U,3)
  1. . I +PNUM=0 S PREV="0%"
  1. . I +PDEN'=0,+PNUM'=0 S PREV=$J((PNUM/PDEN)*100,3,0)_"%",PREV=$$TRIM^BQIUL1(PREV," ")
  1. . I PDEN="",PNUM="",PEXC'="" S PREV="Excluded"
  1. . I PDEN="",PNUM="",PEXC="" S PREV=""
  1. . S $P(@DATA@(II),U,PEC)=CURR
  1. . S $P(@DATA@(II),U,PEC+1)=PREV
  1. K BQCURR,BQPREV
  1. ;
  1. Q
  1. ;
  1. CAGG ; Aggregate
  1. NEW ID
  1. S ID=""
  1. F S ID=$O(HEAD(ID)) Q:ID="" D
  1. . S BQCURR(ID)=$S(CQN="":"NDA",'$D(^BQIPROV(PRV,50,CQN,1)):"NDA",1:"N/A")
  1. ;
  1. I CQN="" Q
  1. S IDN=0
  1. F S IDN=$O(^BQIPROV(PRV,50,CQN,1,IDN)) Q:'IDN D
  1. . S (CDEN,CNUM,CEXC,CURR)=""
  1. . S CDATA=^BQIPROV(PRV,50,CQN,1,IDN,0)
  1. . S CDEN=$P(CDATA,U,2),CNUM=$P(CDATA,U,3),CEXC=$P(CDATA,U,4)
  1. . S ID=$P(CDATA,U,1)
  1. . S $P(BQCURR(ID),U,1)=$P($G(BQCURR(ID)),U,1)+CDEN
  1. . S $P(BQCURR(ID),U,2)=$P($G(BQCURR(ID)),U,2)+CNUM
  1. . S $P(BQCURR(ID),U,3)=$P($G(BQCURR(ID)),U,3)+CEXC
  1. Q
  1. ;
  1. PAGG ; Aggregate
  1. NEW ID
  1. S ID=""
  1. F S ID=$O(HEAD(ID)) Q:ID="" D
  1. . S BQPREV(ID)=$S(PQN="":"NDA",'$D(^BQIPROV(PRV,50,PQN,1)):"NDA",1:"N/A")
  1. ;
  1. I PQN="" Q
  1. S IDN=0
  1. F S IDN=$O(^BQIPROV(PRV,50,PQN,1,IDN)) Q:'IDN D
  1. . S (PDEN,PNUM,PEXC,PREV)=""
  1. . S PDATA=^BQIPROV(PRV,50,PQN,1,IDN,0)
  1. . S PDEN=$P(PDATA,U,2),PNUM=$P(PDATA,U,3),PEXC=$P(PDATA,U,4)
  1. . S ID=$P(PDATA,U,1)
  1. . S $P(BQPREV(ID),U,1)=$P($G(BQPREV(ID)),U,1)+PDEN
  1. . S $P(BQPREV(ID),U,2)=$P($G(BQPREV(ID)),U,2)+PNUM
  1. . S $P(BQPREV(ID),U,3)=$P($G(BQPREV(ID)),U,3)+PEXC
  1. Q
  1. ;
  1. HOV(DATA,TMFRAME,PERIOD,PROV,CNT,DIV) ;EP -- BQI MU GET PROV CQM HOVER
  1. NEW UID,II,HDR,C1,C2,C3,C4,NAME,HEAD,HX,PEC,SORT,QFL,PCT,CT,DDATA,CPER,PPER
  1. NEW BJ,BQCDAR,BQDTM,BQPDAR,CRDT,CURDT,CYR,ID,MSN,NYR,PRDT,PYR,QQF
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIMUDCQH",UID))
  1. K @DATA
  1. S DIV=$G(DIV,"")
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIMUPRV D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. D GTM^BQIMUTIM
  1. S HDR="T00050PROVIDER^T00035HIDE_PROV_SORT^T00030HIDE_CURR_PERIOD^T00030HIDE_PREV_PERIOD^"
  1. S HX=0,PEC=5
  1. F S HX=$O(^BGPMUIND(90596.11,HX)) Q:'HX D
  1. . S MSN=$P(^BGPMUIND(90596.11,HX,0),U,1)
  1. . I $G(^BGPMUIND(90595.11,MSN,0))="" Q
  1. . I $P(^BGPMUIND(90595.11,MSN,0),U,4)'="H" D
  1. .. S HDR=HDR_"T00005"_$P(^BGPMUIND(90596.11,HX,0),U,4)_"_CURR^T00005"_$P(^BGPMUIND(90596.11,HX,0),U,4)_"_PREV^"
  1. .. ;S HDR=HDR_"T00005CURR_"_$P(^BGPMUIND(90595.11,HX,0),U,1)_"^T00005PREV"_$P(^BGPMUIND(90595.11,HX,0),U,1)_"^"
  1. .. S HEAD($P(^BGPMUIND(90596.11,HX,0),U,4))=PEC,PEC=PEC+2
  1. S @DATA@(II)=HDR_"T00020HIDE_LAST_PROV"_$C(30)
  1. S (C1,C2,C3,C4,CT,PCT)=0
  1. S PROV=$G(PROV,"")
  1. I PROV="" S PROV=+PROV
  1. I PROV'="" D
  1. . S C1=+$P(PROV,":",2),C2=+$P(PROV,":",3),C3=+$P(PROV,":",4),C4=+$P(PROV,":",5),CT=+$P(PROV,":",6)
  1. . S PROV=$P(PROV,":",1)
  1. S CNT=$G(CNT,0),QFL=0,QQF=0
  1. I CT=0 D
  1. . I '$D(^BQIPROV(DUZ)) Q
  1. . I '$D(^BQI(90508,1,14,"B",DUZ)) Q
  1. . I $G(DIV)'="",'$D(^VA(200,DUZ,2,"B",DIV)) Q
  1. . I $D(^BQIPROV(DUZ)) D FND(DUZ) D
  1. .. I QQF S QQF=0 Q
  1. .. S @DATA@(II)=@DATA@(II)_U_PROV_":"_C1_":"_C2_":"_C3_":"_C4_":"_CT_$C(30)
  1. .. F BJ=3:1:$L(@DATA@(II),U) I $P(@DATA@(II),U,BJ)="" S $P(@DATA@(II),U,BJ)="No Data Available"
  1. ;
  1. F S PROV=$O(^BQIPROV(PROV)) Q:'PROV D Q:QFL
  1. . I PROV=DUZ Q
  1. . I '$D(^BQI(90508,1,14,"B",PROV)) Q
  1. . I $G(DIV)'="",'$D(^VA(200,PROV,2,"B",DIV)) Q
  1. . I PROV'=DUZ D FND(PROV) D
  1. .. I QQF S QQF=0 Q
  1. .. S @DATA@(II)=@DATA@(II)_U_PROV_":"_C1_":"_C2_":"_C3_":"_C4_":"_CT_$C(30)
  1. .. F BJ=3:1:$L(@DATA@(II),U) I $P(@DATA@(II),U,BJ)="" S $P(@DATA@(II),U,BJ)="No Data Available"
  1. .. I CNT'=0,PCT=CNT S QFL=1
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. FND(PRV) ; Find data
  1. NEW DATE,FAC,MN,MDATA,PRVR,CFROM,CTHRU,PFROM,PTHRU,IDN,CDEN,CNUM,CEXC,PDEN
  1. NEW PNUM,PEXC,CURR,PREV,SORT,USN,TYPE,CQN,PQN
  1. S CT=CT+1,PCT=PCT+1
  1. I DUZ=PRV S PRVR=PRV,SORT=""
  1. I '$D(^XUSEC("BQIZMUMGR",DUZ)),'$D(^XUSEC("BQIZMGR",DUZ)) D
  1. . I DUZ'=PRV D NAM S PRVR=PRV,SORT=""
  1. I $D(^XUSEC("BQIZMUMGR",DUZ))!($D(^XUSEC("BQIZMGR",DUZ))) D
  1. . I DUZ'=PRV S PRVR=PRV,SORT=""
  1. S II=II+1,@DATA@(II)=PRVR_U_SORT_U_CPER_U_PPER_U
  1. ;
  1. K BQCURR,BQPREV
  1. S CRDT=""
  1. F S CRDT=$O(BQCDAR(CRDT)) Q:CRDT="" D
  1. . S CQN=$O(^BQIPROV(PRV,50,"B",CRDT,""))
  1. . D CAGG
  1. ;
  1. S PRDT=""
  1. F S PRDT=$O(BQPDAR(PRDT)) Q:PRDT="" D
  1. . S PQN=$O(^BQIPROV(PRV,50,"B",PRDT,""))
  1. . D PAGG
  1. ;
  1. K BQCURR,BQPREV
  1. S CRDT=""
  1. F S CRDT=$O(BQCDAR(CRDT)) Q:CRDT="" D
  1. . S CQN=$O(^BQIPROV(PRV,50,"B",CRDT,""))
  1. . D CAGG
  1. ;
  1. S PRDT=""
  1. F S PRDT=$O(BQPDAR(PRDT)) Q:PRDT="" D
  1. . S PQN=$O(^BQIPROV(PRV,50,"B",PRDT,""))
  1. . D PAGG
  1. ;
  1. S HX=""
  1. F S HX=$O(HEAD(HX)) Q:HX="" D
  1. . S ID=HX,PEC=$G(HEAD(ID)) I PEC="" Q
  1. . S CDEN=$P($G(BQCURR(ID)),U,1),CNUM=$P($G(BQCURR(ID)),U,2),CEXC=$P($G(BQCURR(ID)),U,3)
  1. . I +CNUM=0 S CURR="Not Applicable"
  1. . I +CDEN'=0 S CURR="Numerator: "_+CNUM_" Denominator: "_CDEN
  1. . I CDEN="",CNUM="",CEXC'="" S CURR="Excluded"
  1. . I CDEN="",CNUM="",CEXC="" S CURR="Not Applicable"
  1. . S PDEN=$P($G(BQPREV(ID)),U,1),PNUM=$P($G(BQPREV(ID)),U,2),PEXC=$P($G(BQPREV(ID)),U,3)
  1. . I +PNUM=0 S PREV="Not Applicable"
  1. . I +PDEN'=0 S PREV="Numerator: "_+PNUM_" Denominator: "_PDEN
  1. . I PDEN="",PNUM="",PEXC'="" S PREV=PEXC
  1. . I PDEN="",PNUM="",PEXC="" S PREV="Not Applicable"
  1. . S $P(@DATA@(II),U,PEC)=CURR
  1. . S $P(@DATA@(II),U,PEC+1)=PREV
  1. K BQCURR,BQPREV
  1. Q
  1. ;
  1. CQM ;EP - Update BQIFAC for CQ data already processed
  1. NEW PRV
  1. S PRV=0
  1. F S PRV=$O(^BQIPROV(PRV)) Q:'PRV D
  1. . S DN=0
  1. . F S DN=$O(^BQIPROV(PRV,50,DN)) Q:'DN D
  1. .. S MN=0
  1. .. F S MN=$O(^BQIPROV(PRV,50,DN,1,MN)) Q:'MN D
  1. ... S BQDATE=$P(^BQIPROV(PRV,50,DN,0),"^",1)
  1. ... S MDATA=^BQIPROV(PRV,50,DN,1,MN,0)
  1. ... S ID=$P(MDATA,"^",1),CDEN=$P(MDATA,"^",2),CNUM=$P(MDATA,"^",3),CEXC=$P(MDATA,"^",4)
  1. ... S DV=0
  1. ... F S DV=$O(^VA(200,PRV,2,DV)) Q:'DV D
  1. .... I $G(^BQIFAC(DV,0))="" S ^BQIFAC(DV,0)=DV,^BQIFAC("B",DV,DV)=""
  1. .... S FAC=DV D UPD
  1. .... S VN=$O(^BQIFAC(DV,80,BQTMN,1,"B",ID,"")) I VN="" S VN=MN,^BQIFAC(DV,80,BQTMN,1,0)="^90505.681^"_VN_U_VN
  1. .... I $G(^BQIFAC(DV,80,BQTMN,1,VN,0))="" S ^BQIFAC(DV,80,BQTMN,1,VN,0)=ID,^BQIFAC(DV,80,BQTMN,1,"B",ID,VN)=""
  1. .... S $P(^BQIFAC(DV,80,BQTMN,1,VN,0),U,2)=$P($G(^BQIFAC(DV,80,BQTMN,1,VN,0)),U,2)+$G(CDEN)
  1. .... S $P(^BQIFAC(DV,80,BQTMN,1,VN,0),U,3)=$P($G(^BQIFAC(DV,80,BQTMN,1,VN,0)),U,3)+$G(CNUM)
  1. .... S $P(^BQIFAC(DV,80,BQTMN,1,VN,0),U,3)=$P($G(^BQIFAC(DV,80,BQTMN,1,VN,0)),U,4)+$G(CEXC)
  1. Q
  1. ;
  1. UPD ;EP
  1. I $G(^BQIFAC(FAC,80,0))="" S ^BQIFAC(FAC,80,0)="^90505.68D^^"
  1. ;
  1. NEW DA,X,IENS,Y,DIC,DLAYGO
  1. S DA(1)=FAC,DIC="^BQIFAC("_DA(1)_",80,",X=BQDATE,DIC(0)="LNZ",DLAYGO=90505.68,DIC("P")=DLAYGO
  1. D ^DIC
  1. S DA=+Y I DA=-1 Q
  1. S BQTMN=DA
  1. Q