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

BQIIPCCT.m

Go to the documentation of this file.
  1. BQIIPCCT ;GDIT/HCSD/ALA-Continuity of Care Team ; 03 Oct 2017 9:37 AM
  1. ;;2.7;ICARE MANAGEMENT SYSTEM;;Dec 19, 2017;Build 23
  1. ;
  1. ;
  1. EN(BQDATE,BQFROM,BQTHRU) ;EP
  1. NEW BQDTE,BQMON,EDAY,ENDT,CYR,PYR,ID,FAC,BQITOTV,BQITOTR,BD,VISIT
  1. NEW DFN,VD,X,Y,BQA,DPCP,CLN,QFL,BEGDT,BQITOTP,FC,PRV,CRST,CRIPC,CRN
  1. NEW GLOB1,GLOB2,TOTP,TOTV,BQITOTM,GLOB3
  1. ;
  1. S QFL=0
  1. S CRST=$P($G(^BQI(90508,1,11)),U,2) S:CRST="" CRST=1
  1. S CRST="0"_CRST
  1. S CRIPC=$P($G(^BQI(90508,1,11)),U,1)
  1. S CRIPC="IPCMH"
  1. S CRN=$O(^BQI(90508,1,22,"B",CRIPC,"")) I CRN="" Q
  1. S GLOB3=$NA(^XTMP("BQITEAM")) K @GLOB3
  1. S @GLOB3@(0)=$$FMADD^XLFDT(DT,7)_U_DT_U_"Team IPC Compilation"
  1. ;
  1. I $G(BQDATE)'="",$G(WEEK)="" D
  1. . S BEGDT=$E(BQDATE,1,5)_"01",CYR=$E(BQDATE,1,3),BQMON=$E(BQDATE,4,5)
  1. . I $L(BQMON)=1 S BQMON="0"_BQMON
  1. . S EDAY="31^"_($$LEAP^XLFDT2(CYR)+28)_"^31^30^31^30^31^31^30^31^30^31"
  1. . S ENDT=$E(BQDATE,1,5)_$P(EDAY,U,+BQMON)
  1. ;
  1. I $G(BQDATE)="",$G(WEEK)="" D Q:QFL
  1. . I $E(DT,6,7)'=CRST S QFL=1 Q
  1. . S BQMON=$E(DT,4,5)-1,CYR=$E(DT,1,3),PYR=CYR-1
  1. . S BQDTE=$P($T(BQM+BQMON),";;",2)
  1. . I $L(BQMON)=1 S BQMON="0"_BQMON
  1. . S BEGDT=@($P(BQDTE,U,2))_$P(BQDTE,U,1)_"01"
  1. . S EDAY="31^"_($$LEAP^XLFDT2(CYR)+28)_"^31^30^31^30^31^31^30^31^30^31"
  1. . S ENDT=@($P(BQDTE,U,2))_$P(BQDTE,U,1)_$P(EDAY,U,+$P(BQDTE,U,1))
  1. . S BQDATE=$S(BQMON="01":PYR,1:CYR)_BQMON_"00"
  1. ;
  1. I $G(WEEK)="" D
  1. . S GLOB2=$NA(^XTMP("BQICCTM")) K @GLOB2
  1. . S @GLOB2@(0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"IPC Monthly Visits"
  1. I $G(WEEK)=1 D
  1. . S BEGDT=BQFROM-.9999,ENDT=BQTHRU,CRIPC="IPCMH",CRN=3
  1. . S GLOB2=$NA(^XTMP("BQICCTW")) K @GLOB2
  1. . S @GLOB2@(0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"IPC Weekly Visits"
  1. ;
  1. S ID="IPC_CCTM"
  1. ;
  1. ; check for divisions
  1. I $O(^BQI(90508,1,25,0))'="" D
  1. . S FAC="" F S FAC=$O(^BQI(90508,1,25,"B",FAC)) Q:FAC="" D
  1. .. D VIS K BQITOTM,@GLOB2
  1. .. D STOR
  1. ;
  1. I $O(^BQI(90508,1,25,0))="" S FAC=$$HME^BQIGPUTL() D
  1. . D VIS K BQITOTM,@GLOB2
  1. . D STOR
  1. ;
  1. S FAC=0,TNUM=0,TDEN=0
  1. F S FAC=$O(@GLOB3@(FAC)) Q:FAC="" D
  1. . S TEAM=""
  1. . F S TEAM=$O(@GLOB3@(FAC,TEAM)) Q:TEAM="" D
  1. .. I $P(@GLOB3@(FAC,TEAM),"^",1)=0,$P(@GLOB3@(FAC,TEAM),"^",2)=0 Q
  1. .. I $G(DEBUG)=1 W !,FAC,"|",TEAM,"|",@GLOB3@(FAC,TEAM)
  1. .. ;S TNUM=TNUM+$P(@GLOB3@(FAC,TEAM),"^",1),TDEN=TDEN+$P(@GLOB3@(FAC,TEAM),"^",2)
  1. .. S TNUM=TNUM+$P(@GLOB3@(FAC,TEAM),"^",1),TDEN=$P(@GLOB3@(FAC,TEAM),"^",2)
  1. .. I $G(WEEK)="" D STORT^BQIIPUTL(TEAM,ID,BQDATE,$P(@GLOB3@(FAC,TEAM),"^",2),$P(@GLOB3@(FAC,TEAM),"^",1))
  1. .. I $G(WEEK)=1 D STORTW^BQIIPUTL(TEAM,ID,BQFROM,BQTHRU,$P(@GLOB3@(FAC,TEAM),"^",2),$P(@GLOB3@(FAC,TEAM),"^",1))
  1. ;
  1. S FAC=$$HME^BQIGPUTL(),ID="IPC_CCTM"
  1. I $G(WEEK)="" D STORF^BQIIPUTL(FAC,ID,BQDATE,TDEN,TNUM)
  1. I $G(WEEK)=1 D STORFW^BQIIPUTL(FAC,ID,BQFROM,BQTHRU,TDEN,TNUM)
  1. Q
  1. ;
  1. STOR ;Store the data
  1. S TMN=0 F S TMN=$O(^BSDPCT(TMN)) Q:'TMN D
  1. . S TEAM=$P(^BSDPCT(TMN,0),"^",1)
  1. . I '$D(@GLOB3@(FAC,TEAM)) S @GLOB3@(FAC,TEAM)="0^0"
  1. Q
  1. ;
  1. VIS ; Find visits
  1. S BQITOTV=0,BQITOTR=0
  1. D TMS
  1. ;
  1. S BD=BEGDT
  1. F S BD=$O(^AUPNVSIT("B",BD)) Q:BD=""!(BD\1>ENDT) D
  1. . S VISIT=""
  1. . F S VISIT=$O(^AUPNVSIT("B",BD,VISIT)) Q:VISIT="" D
  1. .. I $G(^AUPNVSIT(VISIT,0))="" Q
  1. .. I $P(^AUPNVSIT(VISIT,0),U,11) Q
  1. .. ; skip E:EVENT (HISTORICAL);D:DAILY HOSP DATA;X:ANCILLARY PACKAGE DAILY visits
  1. .. Q:"EDX"[$P(^AUPNVSIT(VISIT,0),U,7)
  1. .. ; location of visit not facility
  1. .. S FC=$P(^AUPNVSIT(VISIT,0),U,6) Q:'FC
  1. .. Q:FC'=FAC
  1. .. ; if no diagnoses
  1. .. Q:'$D(^AUPNVPOV("AD",VISIT))
  1. .. S DFN=$P(^AUPNVSIT(VISIT,0),U,5) I DFN="" Q
  1. .. I $G(^AUPNPAT(DFN,0))="" Q
  1. .. I $G(^DPT(DFN,0))="" Q
  1. .. ; If no HRN for this facility
  1. .. I $G(^AUPNPAT(DFN,41,FAC,0))="" Q
  1. .. S VD=$P(^AUPNVSIT(VISIT,0),U,1)\1
  1. .. ; HRN is inactive
  1. .. S X=$S($P($G(^AUPNPAT(DFN,41,FAC,0)),U,3)="":1,$P($G(^AUPNPAT(DFN,41,FAC,0)),U,3)>VD:1,1:0)
  1. .. I 'X Q
  1. .. ; patient is deceased
  1. .. I $P($G(^DPT(DFN,.35)),U,1)'="" Q
  1. .. ; If no DPCP
  1. .. S DPCP=$P(^AUPNPAT(DFN,0),U,14) I DPCP="" Q
  1. .. S CLN=$P(^AUPNVSIT(VISIT,0),U,8) I CLN="" Q
  1. .. ; check against primary care clinic list
  1. .. I '$D(^BQI(90508,1,23,"B",CLN)) Q
  1. .. ; No primary provider
  1. .. S BQA=$$PRIMPROV^APCLV(VISIT,"I") I BQA="" Q
  1. .. S BQITOTV=BQITOTV+1 ; Denominator
  1. .. ; primary provider of visit
  1. .. S @GLOB2@(DFN,BQA)=""
  1. ;
  1. D TMB
  1. S TEAM=""
  1. F S TEAM=$O(BQITOTM(FAC,TEAM)) Q:TEAM="" D
  1. . I $P(BQITOTM(FAC,TEAM),"^",1)'=0 S $P(BQITOTM(FAC,TEAM),"^",2)=BQITOTV,@GLOB3@(FAC,TEAM)=BQITOTM(FAC,TEAM)
  1. Q
  1. ;
  1. TMS ;EP - Team setup
  1. I $G(WEEK)="" D
  1. . K ^XTMP("BQITEAMM")
  1. . S ^XTMP("BQITEAMM",0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"IPC Monthly Compile"
  1. . S GLOB1=$NA(^XTMP("BQITEAMM"))
  1. I $G(WEEK)=1 D
  1. . K ^XTMP("BQITEAMW")
  1. . S ^XTMP("BQITEAMW",0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"IPC Weekly Compile"
  1. . S GLOB1=$NA(^XTMP("BQITEAMW"))
  1. ;
  1. S TMN=0 F S TMN=$O(^BSDPCT(TMN)) Q:'TMN D
  1. . S TEAM=$P(^BSDPCT(TMN,0),"^",1)
  1. . S BQITOTM(FAC,TEAM)="0^0"
  1. . S TMM="" F S TMM=$O(^BSDPCT(TMN,1,"B",TMM)) Q:TMM="" D
  1. .. S DFN="" F S DFN=$O(^AUPNPAT("AK",TMM,DFN)) Q:DFN="" S @GLOB1@(FAC,TEAM,DFN)=""
  1. Q
  1. ;
  1. TMB ;EP - Is provider member of a team?
  1. S DFN=0,TOTP=0,TOTV=0
  1. F S DFN=$O(@GLOB2@(DFN)) Q:DFN="" D
  1. . S PRV=""
  1. . F S PRV=$O(@GLOB2@(DFN,PRV)) Q:PRV="" D
  1. .. S TOTP=$G(TOTP)+1
  1. .. S TMN=$O(^BSDPCT("AB",PRV,"")) I TMN="" Q
  1. .. S TEAM=$P(^BSDPCT(TMN,0),"^",1)
  1. .. I $D(@GLOB1@(FAC,TEAM,DFN)) S $P(BQITOTM(FAC,TEAM),"^",1)=$P($G(BQITOTM(FAC,TEAM)),"^",1)+1
  1. .. S TOTV=TOTV+1
  1. Q
  1. ;
  1. BQM ;
  1. ;;12^PYR
  1. ;;01^CYR
  1. ;;02^CYR
  1. ;;03^CYR
  1. ;;04^CYR
  1. ;;05^CYR
  1. ;;06^CYR
  1. ;;07^CYR
  1. ;;08^CYR
  1. ;;09^CYR
  1. ;;10^CYR
  1. ;;11^CYR