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

BQITASK7.m

Go to the documentation of this file.
  1. BQITASK7 ;GDIT/HS/ALA-MU Performance Job ; 30 Sep 2011 1:06 PM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**3,4**;Apr 18, 2012;Build 66
  1. ;
  1. NIN ;EP -- BQI UPDATE MU Performance monthly
  1. ;
  1. I $G(DUZ(2))="" D
  1. . D DZ^BQITASK1 M DUZ=^XTMP("BQIRMDR","DUZ")
  1. ;
  1. NEW DESC,BJOB,BCJOB,BQPROH
  1. S BQPROH=+$P(^BQI(90508,1,12),U,7)
  1. S BQIMUDTM=$$NOW^XLFDT(),BQIMUDT=$P(BQIMUDTM,".",1),BQIMUTIM=$P(BQIMUDTM,".",2)
  1. S CDOW=$$DOW^XLFDT(BQIMUDT,1)
  1. I CDOW'=6,CDOW'=0,BQPROH,$E(BQIMUTIM,1,2)+1>6,$E(BQIMUTIM,1,2)+1<18 D Q
  1. . S ZTDTH=BQIMUDT_".183"
  1. . S ZTDESC="MU Performance Monthly Compile",ZTRTN="NIN^BQITASK7",ZTIO=""
  1. . D ^%ZTLOAD
  1. . S BQIUPD(90508,"1,",12.06)=ZTSK
  1. . D FILE^DIE("","BQIUPD","ERROR")
  1. . K ZTDESC,ZTRTN,ZTIO,ZTDTH,ZTSK
  1. ;
  1. ; Set the DATE/TIME MU STARTED field
  1. NEW DA,BQIMUTIM,BQIMUDT,CDOW,BQIMUDTM,STOP
  1. S DA=$O(^BQI(90508,0)) I 'DA Q
  1. S BQIUPD(90508,DA_",",8.04)=$$NOW^XLFDT()
  1. S BQIUPD(90508,DA_",",8.06)=1
  1. D FILE^DIE("","BQIUPD","ERROR")
  1. K BQIUPD
  1. K ^XTMP("BQIMUMNPP")
  1. S ^XTMP("BQIMUMNPP",0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"Monthly MU Performance Provider List"
  1. ;
  1. S BGPPROV=$P(^BQI(90508,1,12),U,4),BCJOB=$P(^BQI(90508,1,12),U,6)
  1. S STOP=0
  1. F S BGPPROV=$O(^BQI(90508,1,14,"B",BGPPROV)) Q:BGPPROV="" D Q:STOP
  1. . D PMON^BQIMUPRS(BGPPROV)
  1. . S $P(^BQI(90508,1,12),U,4)=BGPPROV
  1. . S ^XTMP("BQIMUMNPP",BGPPROV)=$P(^BQI(90508,1,9),U,1)_U_$P(^BQI(90508,1,9),U,2)
  1. . ; If not prohibited, keep running
  1. . S BQPROH=+$P(^BQI(90508,1,12),U,7)
  1. . I 'BQPROH Q
  1. . ; If prohibited, check the date and time to see if the job needs to stop
  1. . S BQIMUDTM=$$NOW^XLFDT(),BQIMUDT=$P(BQIMUDTM,".",1),BQIMUTIM=$P(BQIMUDTM,".",2)
  1. . ; If it is a holiday, keep running
  1. . I $D(^HOLIDAY("B",DT)) Q
  1. . S CDOW=$$DOW^XLFDT(BQIMUDT,1)
  1. . ; If day of week is Saturday, keeping running even if prohibited
  1. . I CDOW=6 Q
  1. . ; If day of week is Sunday, keeping running even if prohibited
  1. . I CDOW=0 Q
  1. . ;If the time plus 3 hours is less than 6 am or greater than 6 pm keep going
  1. . I $E(BQIMUTIM,1,2)+3<6 Q
  1. . I $E(BQIMUTIM,1,2)+3>18 Q
  1. . S STOP=1
  1. . S ZTDTH=BQIMUDT_".183"
  1. . S ZTDESC="MU Performance Continue Monthly Compile",ZTRTN="NIN^BQITASK7",ZTIO=""
  1. . D ^%ZTLOAD
  1. . S BQIUPD(90508,"1,",12.06)=ZTSK
  1. . D FILE^DIE("","BQIUPD","ERROR")
  1. . K ZTDESC,ZTRTN,ZTIO,ZTDTH,ZTSK
  1. ;
  1. HOS ; Hospital CQ
  1. NEW APCMFAC,PGLOB,PROU
  1. S GLOBAL=$NA(^TMP("BQIMUP",$J)) K @GLOBAL
  1. S BGPBD=$P(^BQI(90508,1,9),U,1),BGPED=$P(^BQI(90508,1,9),U,2)
  1. S APCMED=BGPED,APCMBD=BGPBD,APCMRPT=1
  1. S APCMPED=$$FMADD^XLFDT(BGPED,-30),APCMPBD=$$FMADD^XLFDT(BGPBD,-60)
  1. K APCMATTE,APCMIND
  1. S APCMFAC=$$HME^BQIGPUTL(),BQIPROV(APCMFAC)="",APCMRPTT=2,APCMDEMO="E"
  1. K APCMATTE,APCMIND
  1. ;F X="S1.009.H","S1.012.H","S1.013.H","S1.014.H","S1.018.H","S1.022.H","S1.023.H","S1.024.H" S APCMATTE(X,APCMFAC)=""
  1. ;gather up measures for this report
  1. S PGLOB=$$CURPGL^BQIMUTAB()
  1. S PROU=$$CURPRT^BQIMUTAB()
  1. S X=0 F S X=$O(@PGLOB@(X)) Q:X'=+X I $P(@PGLOB@(X,0),U,2)="H" D
  1. . S ID=$P(@PGLOB@(X,0),U,1)
  1. . I $P(@PGLOB@(X,0),U,6)'="R" Q
  1. . S @GLOBAL@(APCMFAC,ID,"CURR")="",@GLOBAL@(APCMFAC,ID,"PREV")="",APCMATTE(ID,APCMFAC)=""
  1. . S APCMIND(X)=""
  1. ;
  1. ; Check if connection to server is working
  1. S CONN=1
  1. I PGLOB="^APCM24OB" D PHRC^BQIMUPRS I 'CONN D
  1. . NEW MN
  1. . S MN=$O(@PGLOB@("B","S2.025.H",""))
  1. . I MN'="" K APCMIND(MN)
  1. ;
  1. S APCMWPP=1,APCMMETH="E"
  1. ;I $T(BQI^APCM11E1)'="" D BQI^APCM11E1(.GLOBAL,.BQIPROV)
  1. D @("BQI^"_PROU_"(.GLOBAL,.BQIPROV)")
  1. ;
  1. S FAC=$$HME^BQIGPUTL()
  1. S BGPBD=$P(^BQI(90508,1,9),U,1),BGPED=$P(^BQI(90508,1,9),U,2)
  1. S BQTDT=$E(BGPBD,1,5)_"00"
  1. S BQTMN=$O(^BQIFAC(FAC,40,"B",BQTDT,""))
  1. I BQTMN="" D UPH
  1. ; Already data there, don't recalculate and quit
  1. ;I $G(^BQIFAC(FAC,40,BQTMN,1,1,0))'="" Q
  1. K CDEN,CNUM,CEXC,PDEN,PNUM,PEXC,CSORT,PSORT,MTOT
  1. D STORH(40)
  1. K @GLOBAL,CSORT,PSORT
  1. ;
  1. ; Set the DATE/TIME MU STOPPED field
  1. NEW DA
  1. S DA=$O(^BQI(90508,0)) I 'DA Q
  1. S BQIUPD(90508,DA_",",8.05)=$$NOW^XLFDT()
  1. S BQIUPD(90508,DA_",",8.06)="@"
  1. S BQIUPD(90508,DA_",",12.04)=+BGPPROV
  1. I +BGPPROV=0 D
  1. . S BMDT=$P(^BQI(90508,1,9),U,1),BMDT=$$FMADD^XLFDT(BMDT,1)
  1. . S BMDT=$E(BMDT,1,5)_"00"
  1. . I $D(^XTMP("BQIMMONP",BMDT)) K ^XTMP("BQIMMONP",BMDT)
  1. . S BQIUPD(90508,DA_",",12.06)="@"
  1. D FILE^DIE("","BQIUPD","ERROR")
  1. K BQIUPD,APCMMETH
  1. ; Create and send export files
  1. Q
  1. ;
  1. STORH(NODE) ;
  1. NEW CVALUE,PVALUE,CT,I,MSN,FAC,PGLOB
  1. I '$D(@GLOBAL) Q
  1. S FAC=$$HME^BQIGPUTL()
  1. S PGLOB=$$CURPGL^BQIMUTAB()
  1. ;
  1. I NODE=40 D Q
  1. . S ID="",CT=0
  1. . F S ID=$O(@GLOBAL@(FAC,ID)) Q:ID="" D
  1. .. S IIEN=$O(@PGLOB@("B",ID,"")) I IIEN="" Q
  1. .. I $P(@PGLOB@(IIEN,0),"^",2)'="H" Q
  1. .. S CDEN=$P($G(@GLOBAL@(FAC,ID,"CURR")),"^",1),CNUM=$P($G(@GLOBAL@(FAC,ID,"CURR")),"^",2)
  1. .. S CEXC=$P($G(@GLOBAL@(FAC,ID,"CURR")),"^",3)
  1. .. S CT=CT+1,^BQIFAC(FAC,NODE,BQTMN,1,CT,0)=ID_U_CDEN_U_CNUM_U_$$CURREP^BQIMUTAB()
  1. .. I CEXC'="" S ^BQIFAC(FAC,NODE,BQTMN,1,CT,1)=CEXC
  1. .. S ^BQIFAC(FAC,NODE,BQTMN,1,"B",ID,CT)=""
  1. . NEW DIK,DA
  1. . S DIK="^BQIFAC(",DA=FAC D IX^DIK
  1. Q
  1. ;
  1. MED(ITM,LIST) ;EP - Find Median for LIST
  1. ; Input
  1. ; ITM - Which measure to check list for
  1. ; LIST - By ITM, the list of sorted values
  1. NEW CNT,MID,CT,PVAL,VAL,TOT,DFN,MED
  1. S CNT=$G(LIST(ITM))
  1. I CNT=1 Q $O(LIST(ITM,""))_U_1
  1. I CNT=2 D Q (TOT/CNT)_U_CNT
  1. . S TOT=0,VAL=""
  1. . F S VAL=$O(LIST(ITM,VAL)) Q:VAL="" D
  1. .. S DFN="" F S DFN=$O(LIST(ITM,VAL,DFN)) Q:DFN="" S TOT=TOT+VAL
  1. ;
  1. ;S MID=(CNT+1)\2
  1. S MID=CNT\2
  1. S CT=0,VAL="",QFL=0,MED="",TOT=0
  1. F S VAL=$O(LIST(ITM,VAL)) Q:VAL="" D Q:QFL
  1. . S DFN=""
  1. . F S DFN=$O(LIST(ITM,VAL,DFN)) Q:DFN="" D
  1. .. S CT=CT+1,NVAL=$O(LIST(ITM,VAL))
  1. .. I CT=MID S TOT=TOT+VAL+NVAL,MED=(TOT/2),QFL=1 Q
  1. .. S PVAL=VAL
  1. Q MED_U_CNT
  1. ;
  1. UPH ;EP Update Hospital
  1. NEW BEGDT,ENDT,TMFRAME,XX,V,I,ERROR,BQIUPD
  1. S BEGDT=$P($G(^BQI(90508,1,9)),U,1),ENDT=$P($G(^BQI(90508,1,9)),U,2)
  1. ;
  1. I $G(^BQIFAC(FAC,40,0))="" S ^BQIFAC(FAC,40,0)="^90505.64D^^"
  1. S BQDATE=$E(BEGDT,1,5)_"00"
  1. NEW DA,X,IENS
  1. S DA(1)=FAC,DIC="^BQIFAC("_DA(1)_",40,",X=BQDATE,DIC(0)="LNZ",DLAYGO=90505.64,DIC("P")=DLAYGO
  1. D ^DIC
  1. S DA=+Y I DA=-1 Q
  1. S BQTMN=DA
  1. Q