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

BQIIPCME.m

Go to the documentation of this file.
  1. BQIIPCME ;GDIT/HS/ALA-Get IPC Monthly Data Export by Provider ; 11 Oct 2011 4:10 PM
  1. ;;2.7;ICARE MANAGEMENT SYSTEM;**1**;Dec 19, 2017;Build 12
  1. ;
  1. ;
  1. RET(DATA,DATE,PLIST) ;EP -- BQI IPC PROV MON EXPORT NDW
  1. NEW UID,II,HDR,C1,C2,C3,C4,NAME,HEAD,HX,PEC,SORT,QFL,PCT,CT,DDATA,CPER,PPER,TIT,BQMON
  1. NEW BN,LIST,FAC,ASUFAC,DBID
  1. ;S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S UID=$J
  1. ;S DATA=$NA(^TMP("BQIIPCME",UID))
  1. S DATA=$NA(^BQIDATA1(UID))
  1. K @DATA
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIIPCME D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ; If a list of IENs, process them instead of entire panel
  1. I $D(PLIST)>0 D
  1. . I $D(PLIST)>1 D
  1. .. S LIST="",BN=""
  1. .. F S BN=$O(PLIST(BN)) Q:BN="" S LIST=LIST_PLIST(BN)
  1. .. K PLIST S PLIST=LIST
  1. ;
  1. ; Get current IPC
  1. S CRIPC=$P($G(^BQI(90508,1,11)),U,1)
  1. I CRIPC'="IPCMH" S CRIPC="IPCMH"
  1. S CRN=$O(^BQI(90508,1,22,"B",CRIPC,"")) I CRN="" Q
  1. S ASUFAC=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10)
  1. S DBID=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),1)),U,3)
  1. ;
  1. K Z
  1. S HDR="T00010ASUFAC^T00050PROVIDER^T00015DB_ID^T00060IPC_MEAS^T00015TDATE^T00030NUMERATOR^T00030DENOMINATOR"
  1. ;S @DATA@(II)=HDR
  1. ;S @DATA@(II)=HDR_$C(30)
  1. ;
  1. S (C1,C2,C3,C4,CT,PCT)=0
  1. I $G(PLIST)="" S PROV="" F S PROV=$O(^BQIPROV("AD",DATE,PROV)) Q:PROV="" D RTE(PROV)
  1. I $G(PLIST)'="" F BQI=1:1 S PROV=$P(PLIST,$C(28),BQI) Q:PROV="" D RTE(PROV)
  1. ;
  1. S PRV=""
  1. F S PRV=$O(DDATA(PRV)) Q:PRV="" D
  1. . S ID=""
  1. . F S ID=$O(DDATA(PRV,ID)) Q:ID="" D
  1. .. I '$D(Z(PRV,ID,DATE)) Q
  1. .. S FDATA=ASUFAC_U_DBID_U_DDATA(PRV,ID)_Z(PRV,ID,DATE)_U
  1. .. S FDATA=$$TKO^BQIUL1(FDATA,"^")
  1. .. I $P(FDATA,U,4)=0 S $P(FDATA,U,4)=""
  1. .. I $P(FDATA,U,5)=0 S $P(FDATA,U,5)=""
  1. .. ;S II=II+1,@DATA@(II)=FDATA_$C(30)
  1. .. S II=II+1,@DATA@(II)=FDATA
  1. ;
  1. DONE ;
  1. K Z,IPRD,IPRN,MEAS,MSDN,MSNN,NA,NDA,NO,NUM1,NUM2,PIEN,PROV,PRVR,PTMN,T,TAG,TEAM,TMM,TMN,TOTP,TPRD,TPRN
  1. K FDATA,FLNM,FTOTF,FTOTP,GP,GPRD,GPRN,I,ID,IDD,IDN,IID,DLAYGO,DOD,DPCP,BQITOTP
  1. WRITE ;
  1. S FLNM=$S('$$PROD^XUPROD():"IPCZ",1:"IPC")
  1. S ZTQUEUED=1
  1. NEW XBGL,XBQ,XBQTO,XBNAR,XBMED,XBFLT,XBUF,XBFN
  1. S XBMED="F",XBQ="N",XBFLT=1,XBF=UID,XBE=UID
  1. S XBGL="BQIDATA1"
  1. S XBNAR="IPC DATA WAREHOUSE EXPORT"
  1. S ASUFAC=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10) ;asufac for file name
  1. S XBFN=FLNM_"_"_ASUFAC_"_"_$$FDATE(DT)_".txt"
  1. S XBS1="DATA WAREHOUSE SEND"
  1. S XBUF=$P($G(^AUTTSITE(1,1)),"^",2)
  1. I XBUF="" S XBUF=$P($G(^XTV(8989.3,1,"DEV")),"^",1)
  1. ;
  1. D ^XBGSAVE
  1. K @DATA,ZTQUEUED,FLN,ASUFAC,XBS1
  1. K V,VAL,VISIT,WDA,XBFLG,XBFLG(1),XBPAFN,XBS1,YEAR,YES,ZISHC,ZISHDA1,ZTQUEUED
  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. RTE(PRV) ;EP
  1. ;S DDATA=""
  1. S PRVR=$P($G(^VA(200,PRV,"NPI")),U,1)
  1. ; If provider does not have a National Provider ID
  1. I PRVR="" D
  1. . S ASUFAC=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10)
  1. . S DBID=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),1)),U,3)
  1. . S PRVR=DBID_"_"_PRV
  1. ;S DDATA=PRVR_U
  1. S CYR=$E(DT,1,3)
  1. S FAC=$$HME^BQIGPUTL()
  1. NEW %,%H,BGPHOME,BQIH,BQIINDF,BQIINDG,BQIMEASF,BQIMEASG,BQIROU,BQIY,BQIYR
  1. D INP^BQINIGHT
  1. ;
  1. S IDD=0
  1. F S IDD=$O(^BQI(90508,1,22,CRN,1,IDD)) Q:'IDD D
  1. . S ID=$P(^BQI(90508,1,22,CRN,1,IDD,0),U,1),MEAS=$P(^(0),U,4),IID=$P(^(0),U,1)
  1. . I ID="" Q
  1. . I $P(^BQI(90508,1,22,CRN,1,IDD,0),U,7)=1 Q
  1. . ;S NID=$$NID(ID) I NID="" S NID=ID
  1. . NEW DA,IENS
  1. . S DA(2)=1,DA(1)=CRN,DA=IDD,IENS=$$IENS^DILF(.DA)
  1. . S CAT=$$GET1^DIQ(90508.221,IENS,.03,"E")
  1. . I CAT="" D
  1. .. S CODE=ID
  1. .. S RIEN=$O(^BQI(90506.1,"B",CODE,"")) I RIEN="" Q
  1. .. S CAT=$$GET1^DIQ(90506.1,RIEN_",",3.02,"E")
  1. . ;
  1. . S DDATA(PRV,ID)=PRVR_U_IID_U_MEAS_U_$$DATE(DATE)_U
  1. . I IID="IPC_PEMP" D Q
  1. .. S IDN=$O(^BQIFAC(FAC,30,"B",IID,"")) I IDN="" D Q
  1. ... S $P(Z(PRV,ID,DATE),U,1)=""
  1. ... S $P(Z(PRV,ID,DATE),U,2)=""
  1. .. S MSDN=$O(^BQIFAC(FAC,30,IDN,1,"B",DATE,""))
  1. .. I MSDN="" Q
  1. .. S DEN=+$P(^BQIFAC(FAC,30,IDN,1,MSDN,0),U,2),NUM=+$P(^BQIFAC(FAC,30,IDN,1,MSDN,0),U,3)
  1. .. S $P(Z(PRV,ID,DATE),U,1)=NUM,$P(Z(PRV,ID,DATE),U,2)=DEN
  1. . ;
  1. . I IID="IPC_CCTM" D Q
  1. .. S TMN=$O(^BSDPCT("AB",PRV,"")) I TMN="" Q
  1. .. S $P(Z(PRV,ID,DATE),U,1)=""
  1. .. S $P(Z(PRV,ID,DATE),U,2)=""
  1. .. S TMN="" F S TMN=$O(^BSDPCT("AB",PRV,TMN)) Q:TMN="" D
  1. ... S TMC=$O(^BQITEAM(TMN,10,"B",IID,"")) I TMC="" Q
  1. ... S TMV=$O(^BQITEAM(TMN,10,TMC,10,"B",DATE,"")) I TMV="" Q
  1. ... S DEN=+$P(^BQITEAM(TMN,10,TMC,10,TMV,0),U,2),NUM=+$P(^BQITEAM(TMN,10,TMC,10,TMV,0),U,3)
  1. ... S $P(Z(PRV,ID,DATE),U,1)=NUM,$P(Z(PRV,ID,DATE),U,2)=DEN
  1. . ;
  1. . S IDN=$O(^BQIPROV(PRV,30,"B",IID,"")) I IDN="" D Q
  1. .. S $P(Z(PRV,ID,DATE),U,1)=""
  1. .. S $P(Z(PRV,ID,DATE),U,2)=""
  1. . D
  1. .. S MSDN=$O(^BQIPROV(PRV,30,IDN,1,"B",DATE,""))
  1. .. I MSDN="" Q
  1. .. S DEN=+$P(^BQIPROV(PRV,30,IDN,1,MSDN,0),U,2),NUM=+$P(^BQIPROV(PRV,30,IDN,1,MSDN,0),U,3)
  1. .. I IID="IPC_TOTP" D Q
  1. ... S $P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+DEN
  1. .. I IID="IPC_REVG" D Q
  1. ... I DEN=0 S $P(Z(PRV,ID,DATE),U,1)="",$P(Z(PRV,ID,DATE),U,2)="" Q
  1. ... I DEN'=0,NUM=0 S $P(Z(PRV,ID,DATE),U,1)=$P($G(Z(PRV,ID,DATE)),U,1)+0,$P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+DEN Q
  1. ... I DEN'=0,NUM'=0 S $P(Z(PRV,ID,DATE),U,1)=$P($G(Z(PRV,ID,DATE)),U,1)+NUM,$P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+DEN Q
  1. .. I DEN=0 S $P(Z(PRV,ID,DATE),U,1)=$P($G(Z(PRV,ID,DATE)),U,1)+0,$P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+0 Q
  1. .. I DEN'=0,NUM=0 S $P(Z(PRV,ID,DATE),U,1)=$P($G(Z(PRV,ID,DATE)),U,1)+0,$P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+DEN Q
  1. .. I NUM'=0 S $P(Z(PRV,ID,DATE),U,1)=$P($G(Z(PRV,ID,DATE)),U,1)+NUM,$P(Z(PRV,ID,DATE),U,2)=$P($G(Z(PRV,ID,DATE)),U,2)+DEN
  1. Q
  1. ;
  1. NID(ID) ;EP
  1. NEW MDATA,IDIN
  1. I $P(ID,"_",1)'=BQIYR Q ID
  1. S IDIN=$P(ID,"_",2)
  1. S MDATA=$G(@BQIMEASG@(IDIN,17))
  1. Q $P(MDATA,U,8)
  1. ;
  1. FDATE(D) ;
  1. Q (1700+$E(D,1,3))_$E(D,4,5)_$E(D,6,7)
  1. ;
  1. DATE(DATE) ;EP
  1. NEW BQMON,BEGDT,CYR,BQDTE,EDAY,EDATE
  1. S BQMON=+$E(DATE,4,5)
  1. S BEGDT=$E(DATE,1,5)_"01"
  1. S CYR=$E(DT,1,3)
  1. S BQDTE=$P($T(BQM+BQMON),";;",2)
  1. S EDAY="31^"_($$LEAP^XLFDT2($P(BQDTE,U,2))+28)_"^31^30^31^30^31^31^30^31^30^31"
  1. S EDATE=$E(DATE,1,5)_$P(EDAY,U,BQMON)
  1. Q $$FMTMDY^BQIUL1(EDATE)
  1. ;
  1. BQM ;
  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
  1. ;;12^CYR