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

BQIMUPRS.m

Go to the documentation of this file.
  1. BQIMUPRS ;VNGT/HS/ALA-Update a single provider ; 27 Apr 2011 8:28 AM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**3,4**;Apr 18, 2012;Build 66
  1. ;
  1. MON(BGPPROV) ;EP - Monthly CQM Process
  1. NEW BGPBEN,BGPRTYPE,BGP0RPTH,BGPMUT,BGPMUYF,BGPBD,BGPED,BGPTP,BGPINDT
  1. NEW BQTDT,BQTMN,BQIGREF,DFN,CDEN,CNUM,CEXC,NUM
  1. ; Current
  1. S BGPBEN=3
  1. S BGPRTYPE=4,BGP0RPTH="A",BGPMUT="P",BGPMUYF=90595.11
  1. S (BGPBD,BGPED,BGPTP,BGPINDT)=""
  1. S BGPBD=$P(^BQI(90508,1,12),U,8),BGPED=$P(^BQI(90508,1,12),U,9)
  1. S BQTDT=$E(BGPBD,1,5)_"00"
  1. S BQTMN=$O(^BQIPROV(BGPPROV,50,"B",BQTDT,""))
  1. I BQTMN="" D UPD(50)
  1. S BGPPBD="",BGPPED=""
  1. ; Baseline
  1. S BGPBBD=BGPPBD,BGPBED=BGPPED
  1. S BQIGREF=$NA(^TMP("BQICQM",$J)) K @BQIGREF
  1. D IND("E")
  1. I $G(DUZ(2))="" D
  1. . D DZ^BQITASK1 M DUZ=^XTMP("BQIRMDR","DUZ")
  1. D BQI^BGPMUEPD(.BQIGREF,BGPPROV)
  1. K CDEN,CNUM,CEXC,NUM
  1. S DFN=""
  1. F S DFN=$O(@BQIGREF@(BGPPROV,DFN)) Q:DFN="" D
  1. . S I=""
  1. . F S I=$O(@BQIGREF@(BGPPROV,DFN,"C",I)) Q:I="" D
  1. .. S CDEN(I)=$G(CDEN(I))+$P($G(@BQIGREF@(BGPPROV,DFN,"C",I)),U,1)
  1. .. S NUM=$P($G(@BQIGREF@(BGPPROV,DFN,"C",I)),U,2)
  1. .. I NUM>1,$$FMTE^BQIUL1(NUM)'?.N S NUM=1
  1. .. S CNUM(I)=$G(CNUM(I))+NUM
  1. .. S CEXC(I)=$G(CEXC(I))+$P($G(@BQIGREF@(BGPPROV,DFN,"C",I)),U,3)
  1. .. ;S ^XTMP("BQIMCQMPT",DFN,BGPPROV,BQTDT,I)=$G(@BQIGREF@(BGPPROV,DFN,"C",I))
  1. D STORP(50)
  1. K @BQIGREF
  1. Q
  1. ;
  1. STORP(NODE) ;EP - Store data
  1. I '$D(@BQIGREF) Q
  1. ;
  1. S BQTMN=$O(^BQIPROV(BGPPROV,NODE,"B",BQTDT,""))
  1. I BQTMN="" D UPD(NODE)
  1. S FAC=$$HME^BQIGPUTL()
  1. ;
  1. I NODE=50 D Q
  1. . S $P(^BQIPROV(BGPPROV,2),U,1)=$$NOW^XLFDT()
  1. . S CT=0
  1. . S I=0 F S I=$O(^BGPMUIND(90596.11,I)) Q:'I D
  1. .. S MSN=$P(^BGPMUIND(90596.11,I,0),U,1)
  1. .. I $G(^BGPMUIND(90595.11,MSN,0))="" Q
  1. .. I $P(^BGPMUIND(90595.11,MSN,0),U,4)="H" Q
  1. .. S ID=$P(^BGPMUIND(90596.11,I,0),"^",4)
  1. .. S CT=CT+1,^BQIPROV(BGPPROV,NODE,BQTMN,1,CT,0)=ID_U_$G(CDEN(I))_U_$G(CNUM(I))_U_$G(CEXC(I))
  1. .. S ^BQIPROV(BGPPROV,NODE,BQTMN,1,"B",ID,CT)=""
  1. .. S ^BQIPROV(BGPPROV,NODE,BQTMN,1,0)="^90505.451^"_CT_"^"_CT
  1. .. ;
  1. .. ; Set up by providers divisions
  1. .. NEW NODE,BQTMN
  1. .. S DV=0,NODE=80
  1. .. F S DV=$O(^VA(200,BGPPROV,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(80)
  1. ... S DN=$O(^BQIFAC(DV,NODE,BQTMN,1,"B",ID,"")) I DN="" S DN=CT
  1. ... I $G(^BQIFAC(DV,NODE,BQTMN,1,DN,0))="" S ^BQIFAC(DV,NODE,BQTMN,1,DN,0)=ID,^BQIFAC(DV,NODE,BQTMN,1,"B",ID,DN)=""
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,2)=$P($G(^BQIFAC(DV,NODE,BQTMN,1,DN,0)),U,2)+$G(CDEN(I))
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,3)=$P($G(^BQIFAC(DV,NODE,BQTMN,1,DN,0)),U,3)+$G(CNUM(I))
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,4)=$P($G(^BQIFAC(DV,NODE,BQTMN,1,DN,0)),U,4)+$G(CEXC(I))
  1. ;
  1. I NODE=40 D Q
  1. . NEW PGLOB
  1. . S PGLOB=$$CURPGL^BQIMUTAB()
  1. . S ID="",CT=0
  1. . F S ID=$O(@GLOBAL@(BGPPROV,ID)) Q:ID="" D
  1. .. S IIEN=$O(@PGLOB@("B",ID,"")) I IIEN="" Q
  1. .. I $P(@PGLOB@(IIEN,0),"^",6)'="R" Q
  1. .. S CDEN=$P($G(@GLOBAL@(BGPPROV,ID,"CURR")),"^",1),CNUM=$P($G(@GLOBAL@(BGPPROV,ID,"CURR")),"^",2)
  1. .. S CEXC=$P($G(@GLOBAL@(BGPPROV,ID,"CURR")),"^",3)
  1. .. S CT=CT+1,^BQIPROV(BGPPROV,NODE,BQTMN,1,CT,0)=ID_U_CDEN_U_CNUM_U_$$CURREP^BQIMUTAB()
  1. .. I CEXC'="" S ^BQIPROV(BGPPROV,NODE,BQTMN,1,CT,1)=CEXC
  1. .. S ^BQIPROV(BGPPROV,NODE,BQTMN,1,"B",ID,CT)=""
  1. .. S ^BQIPROV(BGPPROV,NODE,BQTMN,1,0)="^90505.441^"_CT_"^"_CT
  1. .. ;
  1. .. ; set up by providers divisions
  1. .. NEW DV,DN,NODE,BQTMN
  1. .. S DV=0,NODE=70
  1. .. F S DV=$O(^VA(200,BGPPROV,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(70)
  1. ... S DN=$O(^BQIFAC(DV,NODE,BQTMN,1,"B",ID,"")) I DN="" S DN=CT
  1. ... I $G(^BQIFAC(DV,NODE,BQTMN,1,DN,0))="" S ^BQIFAC(DV,NODE,BQTMN,1,DN,0)=ID,^BQIFAC(DV,NODE,BQTMN,1,"B",ID,DN)=""
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,2)=$P($G(^BQIFAC(DV,NODE,BQTMN,1,DN,0)),U,2)+CDEN
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,3)=$P($G(^BQIFAC(DV,NODE,BQTMN,1,DN,0)),U,3)+CNUM
  1. ... S $P(^BQIFAC(DV,NODE,BQTMN,1,DN,0),U,4)=$$CURREP^BQIMUTAB()
  1. ... I CEXC'="" S ^BQIFAC(DV,NODE,BQTMN,1,DN,1)=CEXC
  1. . NEW DIK,DA
  1. . S DIK="^BQIPROV(",DA=BGPPROV D IX^DIK
  1. Q
  1. ;
  1. IND(TY) ; EP - Set indicators
  1. ; Input
  1. ; TY = Type (H=Hospital)
  1. K BGPIND
  1. I TY'="H" D
  1. . S X=0 F S X=$O(^BGPMUIND(90595.11,X)) Q:'X I $P(^BGPMUIND(90595.11,X,0),U,4)'="H" S BGPIND(X)=""
  1. I TY="H" D
  1. . S X=0 F S X=$O(^BGPMUIND(90595.11,X)) Q:'X I $P(^BGPMUIND(90595.11,X,0),U,4)="H" S BGPIND(X)=""
  1. Q
  1. ;
  1. UPD(NODE) ;EP
  1. NEW BEGDT,ENDT,TMFRAME,XX,V,I,ERROR,BQIUPD,BQDATE
  1. ;
  1. I NODE=50 D
  1. . S BEGDT=$P($G(^BQI(90508,1,12)),U,8),ENDT=$P($G(^BQI(90508,1,12)),U,9)
  1. . S BQDATE=$E(BEGDT,1,5)_"00"
  1. . I $G(^BQIPROV(BGPPROV,50,0))="" S ^BQIPROV(BGPPROV,50,0)="^90505.45D^^"
  1. I NODE=40 D
  1. . S BEGDT=$P($G(^BQI(90508,1,9)),U,1),ENDT=$P($G(^BQI(90508,1,9)),U,2)
  1. . S BQDATE=$E(BEGDT,1,5)_"00"
  1. . I $G(^BQIPROV(BGPPROV,40,0))="" S ^BQIPROV(BGPPROV,40,0)="^90505.44D^^"
  1. I NODE=70 D
  1. . S BEGDT=$P($G(^BQI(90508,1,9)),U,1),ENDT=$P($G(^BQI(90508,1,9)),U,2)
  1. . S BQDATE=$E(BEGDT,1,5)_"00"
  1. . I $G(^BQIFAC(FAC,70,0))="" S ^BQIFAC(FAC,70,0)="^90505.67D^^"
  1. I NODE=80 D
  1. . S BEGDT=$P($G(^BQI(90508,1,12)),U,8),ENDT=$P($G(^BQI(90508,1,12)),U,9)
  1. . S BQDATE=$E(BEGDT,1,5)_"00"
  1. . I $G(^BQIFAC(FAC,80,0))="" S ^BQIFAC(FAC,80,0)="^90505.68D^^"
  1. ;
  1. NEW DA,X,IENS,Y,DIC,DLAYGO
  1. I NODE=50 S DA(1)=BGPPROV,DIC="^BQIPROV("_DA(1)_",50,",X=BQDATE,DIC(0)="LNZ",DLAYGO=90505.45,DIC("P")=DLAYGO
  1. I NODE=40 S DA(1)=BGPPROV,DIC="^BQIPROV("_DA(1)_",40,",X=BQDATE,DIC(0)="LNZ",DLAYGO=90505.44,DIC("P")=DLAYGO
  1. I NODE=70 S DA(1)=FAC,DIC="^BQIFAC("_DA(1)_",70,",X=BQDATE,DIC(0)="LNZ",DLAYGO=90505.67,DIC("P")=DLAYGO
  1. I NODE=80 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
  1. ;
  1. PMON(BGPPROV) ;EP - Monthly Performance Process
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQI1POJB D UNWIND^%ZTER"
  1. ;
  1. ; Set the DATE/TIME MU STARTED field
  1. NEW DA
  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. S BQIUPD(90508,DA_",",24.1)=$G(ZTSK)
  1. D FILE^DIE("","BQIUPD","ERROR")
  1. K BQIUPD
  1. ;
  1. ; one month period
  1. NEW APCMED,APCMBD,APCMRPT,APCMPBD,APCMPED,APCMTIME,APCMRPTT,BQIPROV,APCMATTE,APCMIND
  1. NEW APCM100R,APCM13ON,APCM2ON,APCMECHI,APCMIMME,APCMN565,APCMOFFV,APCMRCIS,APCMTRAE
  1. NEW APCM4D,APCMAGEB,APCMAGEE,APCMBDAT,APCMBT,APCMEDAT,APCMEP,APCMET,APCMFILN,APCMGBL
  1. NEW APCMH,APCMHV,APCMIC,APCMJ,APCMP,APCMSEX,APCMVALU,APCMWPP,APCMX,BEGDT,BQIGREF,BQTDT
  1. NEW BQTMN,CDEN,CEXC,CNUM,CT,DFN,ENDT,F,FAC,GLOBAL,ID,IIEN,LABSNO,SD,PGLOB,PROU
  1. ;
  1. S PGLOB=$$CURPGL^BQIMUTAB()
  1. S PROU=$$CURPRT^BQIMUTAB()
  1. S BEGDT=$P($G(^BQI(90508,1,9)),U,1),ENDT=$P($G(^BQI(90508,1,9)),U,2)
  1. S BQTDT=$E(BEGDT,1,5)_"00"
  1. S APCMED=ENDT,APCMBD=BEGDT,APCMRPT=1,APCMDEMO="E"
  1. S APCMPED=$$FMADD^XLFDT(APCMED,-30),APCMPBD=$$FMADD^XLFDT(APCMBD,-60)
  1. S APCMTIME=1,APCMRPTT=1
  1. S GLOBAL=$NA(^TMP("BQIMUP1",$J))
  1. ;F X="S1.010.EP","S1.013.EP","S1.014.EP","S1.015.EP","S1.018.EP","S1.020.EP","S1.024.EP","S1.025.EP" D
  1. ;. S BQIPROV(BGPPROV)=""
  1. ;. S APCMATTE(X,BGPPROV)=""
  1. ;gather up measures for this report
  1. S X=0 F S X=$O(@PGLOB@(X)) Q:X'=+X I $P(@PGLOB@(X,0),U,2)="E" D
  1. . S ID=$P(@PGLOB@(X,0),U,1)
  1. . I $P(@PGLOB@(X,0),U,6)'="R" Q
  1. . S @GLOBAL@(BGPPROV,ID,"CURR")="",@GLOBAL@(BGPPROV,ID,"PREV")="",APCMATTE(ID,BGPPROV)=""
  1. . S BQIPROV(BGPPROV)="",APCMIND(X)=""
  1. ;
  1. ; Check if connection to server is working
  1. S CONN=1
  1. I PGLOB="^APCM24OB" D PHRC I 'CONN D
  1. . NEW MN
  1. . S MN=$O(@PGLOB@("B","S2.026.EP",""))
  1. . I MN'="" K APCMIND(MN)
  1. ;
  1. I $G(DUZ(2))="" D
  1. . D DZ^BQITASK1 M DUZ=^XTMP("BQIRMDR","DUZ")
  1. ;
  1. S APCMWPP=1
  1. ;I $T(BQI^APCM11E1)'="" D BQI^APCM11E1(.GLOBAL,.BQIPROV)
  1. D @("BQI^"_PROU_"(.GLOBAL,.BQIPROV)")
  1. ;
  1. S BQIGREF=GLOBAL
  1. D STORP(40)
  1. K @GLOBAL
  1. Q
  1. ;
  1. PHRC ;EP - Check if PHR is installed, if performance report is 2014
  1. I $T(PHR^BPHRMUPM)="" Q
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIMUPRS D UNWIND^%ZTER"
  1. ;
  1. NEW BPHRP,EXEC,RESULT,BPHRR,BDT,EDT
  1. S BDT=DT,EDT=DT
  1. K BPARRAY
  1. D GETS^DIQ(90670.2,"1,","**","E","BPARRAY")
  1. S BPHRP("URLROOT")=$G(BPARRAY(90670.2,"1,",.02,"E"))
  1. S BPHRP("SERVICEPATH")=$G(BPARRAY(90670.2,"1,",.11,"E"))
  1. S BPHRP("PORT")=$G(BPARRAY(90670.2,"1,",.03,"E"))
  1. S BPHRP("TIMEOUT")=$G(BPARRAY(90670.2,"1,",.05,"E"))
  1. S BPHRP("USER")=$G(BPARRAY(90670.2,"1,",.07,"E"))
  1. S BPHRP("PASS")=$G(BPARRAY(90670.2,"1,",.08,"E"))
  1. ; Pass Patient ICN and BDT and EDT to web service call
  1. S BPHRP("EUID")=$G(BPHREUID)
  1. ; Change BDT and EDT to appropriate dates from FileMan date
  1. S BPHRP("FROM")=$$DATE^BPHRMUPM(BDT)_"T00:00:00"_$$TMZ^BPHRMUPM()
  1. S BPHRP("TO")=$$DATE^BPHRMUPM(EDT)_"T23:59:59"_$$TMZ^BPHRMUPM()
  1. ;
  1. ; Returns data
  1. S EXEC="S STS=##class(BPHR.WebServiceCalls).PMQueryRequest(.BPHRP,.BPHRR)" X EXEC
  1. I $P($G(STS),U,1)=0,$P(STS,U,2)["ERROR" S CONN=0
  1. Q
  1. ;
  1. ERR ;EP - Error trap
  1. I $ZE["<ZSOAP>" S CONN=0
  1. D ^%ZTER
  1. Q