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

APCMVAEM.m

Go to the documentation of this file.
  1. APCMVAEM ; IHS/CMI/LAB - V2 MED BY PROV SUB RTN KFOX ;
  1. ;;1.0;IHS MU PERFORMANCE REPORTS;**5,6**;MAR 26, 2012;Build 65
  1. START ;Set beginning/ending sort dates for ORDERS
  1. S %DT="AE",%DT("A")="Enter Start Date range: " D ^%DT
  1. I (Y'>0)!(X["^")!(X="") D EXIT Q
  1. S CPSTART=Y
  1. K %DT,%DT("A"),X,Y
  1. S Y=CPSTART D DD^%DT S CPSTART(0)=Y
  1. ;
  1. S %DT="AE",%DT("A")="Enter Ending Date range: " D ^%DT
  1. I (Y'>0)!(X["^")!(X="") D EXIT Q
  1. S CPSEND=Y
  1. K %DT,%DT("A"),X,Y
  1. S Y=CPSEND D DD^%DT S OEND(0)=Y
  1. S (CNT("UNIT DOSE","TR"),CNT("UNIT DOSE"))=0
  1. K ^TMP($J)
  1. P55 ; LOOP 55 UNIT DOSE
  1. S CPSDATE=CPSTART F S CPSDATE=$O(^PS(55,"AUDS",CPSDATE)) Q:CPSDATE>CPSEND!('+CPSDATE) D
  1. .S CPSDFN=0 F S CPSDFN=$O(^PS(55,"AUDS",CPSDATE,CPSDFN)) Q:'+CPSDFN D
  1. ..S CPS55=0 F S CPS55=$O(^PS(55,"AUDS",CPSDATE,CPSDFN,CPS55)) Q:'+CPS55 D
  1. ...;COUNT POSSIBLE DOSES DUE FOR ORDER.
  1. ...S CPSPOS=0
  1. ...S CPSFRE=$P($G(^PS(55,CPSDFN,5,+CPS55,2)),U,6),CPSTOP=$P($G(^PS(55,CPSDFN,5,+CPS55,2)),U,4),CPSSCH=$P($G(^PS(55,CPSDFN,5,+CPS55,0)),U,7)
  1. ...Q:CPSTOP<CPSDATE
  1. ...I CPSFRE="D"&(CPSSCH="C") S CPSN=$L($P($G(^PS(55,CPSDFN,5,+CPS55,2)),U,1),"-") S X2=CPSDATE,X1=$S(CPSTOP<DT:DT,1:CPSTOP) D ^%DTC S CPSPOS=CPSN*X
  1. ...I +CPSFRE&(CPSSCH="C") D
  1. ....S CPSS1=0,CPSS1=(24-$E($P(CPSDATE,".",2),1,2))*60 ;MINS FOR FIRST DATE
  1. ....IF CPSTOP>DT D NOW^%DTC S CPSS1=CPSS1+($E($P(%,".",2),1,2)*60) ; MINS FOR MIDNIGHT LAST DATE
  1. ....IF CPSTOP<DT S CPSS1=CPSS1+($E($P(CPSTOP,".",2),1,2)*60) ;MINS FOR MIDNIGHT LAST DATE
  1. ....S X1=CPSDATE,X2=+1 D C^%DTC S X2=X,X1=$S(CPSTOP>DT:DT,1:CPSTOP) D ^%DTC S CPSPOS=((X*1440)+CPSS1)/CPSFRE
  1. ....;S X1=DT,X2=+1 D C^%DTC S CPSNDT=X S X2=CPSDATE,X1=$S(CPSTOP>DT:CPSNDT,1:CPSTOP) D ^%DTC S CPSPOS=((X*1440)+CPSS1)/CPSFRE
  1. ...I CPSSCH="C"!(CPSSCH="P") S CNT("UNIT DOSE")=CNT("UNIT DOSE")+1
  1. ...;LOOK 53.79 FOR DOSE TRACKED.
  1. ...I CPSSCH="P" S CPSPOS=1 ;PRNS TO ONE
  1. ...Q:+CPSPOS<0!(CPSPOS=0)
  1. ...S CPSQ=$S(CPSSCH="P":1,CPSSCH="C":1,1:0)
  1. ...Q:CPSQ=0
  1. ...;W !,CPSSCH
  1. ...S (CPSPSB,CPSN1)=0 F S CPSN1=$O(^PSB(53.79,"AORDX",CPSDFN,CPS55_"U",CPSN1)) Q:'+CPSN1 S CPSPSB=CPSPSB+1
  1. ...Q:CPSPSB<CPSPOS
  1. ...S CNT("UNIT DOSE","TR")=CNT("UNIT DOSE","TR")+1 S ^TMP($J,"BCMA","TRUD",CPSDFN,CPS55)=CPSPOS_U_CPSPSB
  1. ...;W !,CPS55,U,CPSPOS,U,CPSPSB,U,CPSSCH
  1. IV ;LOOP IVS
  1. S (CNT("IV","TR"),CNT("IV"))=0
  1. S CPSDATE=CPSTART F S CPSDATE=$O(^PS(55,"AIVS",CPSDATE)) Q:CPSDATE>CPSEND!('+CPSDATE) D
  1. .S CPSDFN=0 F S CPSDFN=$O(^PS(55,"AIVS",CPSDATE,CPSDFN)) Q:'+CPSDFN D
  1. ..S CPS55=0 F S CPS55=$O(^PS(55,"AIVS",CPSDATE,CPSDFN,CPS55)) Q:'+CPS55 D
  1. ...S CNT("IV")=CNT("IV")+1,(CPSPSB,CPSPOS)=0
  1. ...S CPSTYPE=$P($G(^PS(55,CPSDFN,"IV",CPS55,0)),U,4)
  1. ...I CPSTYPE="P"!(CPSTYPE="S") D
  1. ....S CPSFRE=$P($G(^PS(55,CPSDFN,"IV",CPS55,0)),U,15) I +CPSFRE S CPSTOP=$P($G(^PS(55,CPSDFN,"IV",CPS55,0)),U,3) S X2=CPSDATE,X1=$S(CPSTOP<DT:DT,1:CPSTOP) D ^%DTC S CPSPOS=(X*1440)/CPSFRE
  1. ....I CPSFRE="O" S CPSPOS=1 ;ONCE
  1. ...;COUND TOTAL NUMBER OF IV BAGS FOR ORDER
  1. ...I $D(^PS(55,CPSDFN,"IV",+CPS55,"BCMA"))&(CPSTYPE'="P")&(CPSTYPE'="S") S (CPSPOS,CPSNUM)=0 F S CPSNUM=$O(^PS(55,CPSDFN,"IV",+CPS55,"BCMA",CPSNUM)) Q:'+CPSNUM S CPSPOS=CPSPOS+1
  1. ...;NO LABELS
  1. ...I '$D(^PS(55,CPSDFN,"IV",+CPS55,"BCMA"))&(CPSTYPE'="P")&(CPSTYPE'="S") D
  1. ....S CPSVOL=$P($G(^PS(55,CPSDFN,"IV",CPS55,"SOL",1,0)),U,2),CPSRAT=$P($G(^PS(55,CPSDFN,"IV",CPS55,0)),U,8)
  1. ....S CPSTOP=$P($G(^PS(55,CPSDFN,"IV",CPS55,0)),U,3)
  1. ....S CPSS1=0,CPSS1=(24-$E($P(CPSDATE,".",2),1,2))*60 ;MINS FOR FIRST DATE
  1. ....IF CPSTOP>DT D NOW^%DTC S CPSS1=CPSS1+($E($P(%,".",2),1,2)*60) ; MINS FOR MIDNIGHT LAST DATE
  1. ....IF CPSTOP<DT S CPSS1=CPSS1+($E($P(CPSTOP,".",2),1,2)*60) ;MINS FOR MIDNIGHT LAST DATE
  1. ....S X1=CPSDATE,X2=+1 D C^%DTC S X2=X,X1=$S(CPSTOP>DT:DT,1:CPSTOP) D ^%DTC S CPSPOS=(((((+CPSRAT*24)*X)+CPSS1)+CPSS1)\+CPSVOL)
  1. ...Q:'+CPSPOS&('+$G(CPSRAT)) ;NO POSSIBLE FOUND AND NO INFUSTION RATE BAIL THIS ONE.
  1. ...;LOOK IN BCMA FOR IVS
  1. ...S (CPSNUM,CPSPSB)=0 F S CPSNUM=$O(^PSB(53.79,"AUID",CPSDFN,CPS55_"V",CPSNUM)) Q:'+CPSNUM S CPSPSB=CPSPSB+1 D
  1. ....;W !,CPS55,U,CPSPOS,U,CPSPSB
  1. ....Q:CPSPSB<CPSPOS
  1. ....S CNT("IV","TR")=CNT("IV","TR")+1 S ^TMP($J,"BCMA","IV",CPSDFN,CPS55,CPSNUM)=CPSPOS_U_CPSPSB
  1. ..;NEXT FIND BCMA TOTAL MEDS GIVE ON UD AND MATCH IV ORDERS.
  1. PRT ;
  1. S (CNTT,CNTTR)=0
  1. W !,?5,"Meaningfull Use Stage II Report From " S Y=CPSTART D DD^%DT W Y_" TO " S Y=CPSEND D DD^%DT W Y
  1. D NOW^%DTC S Y=% D DD^%DT W !,?45,"Run Date/Time:"_Y
  1. W !,"Order Type",?15,"Total Orders",?30," %100 Tracked"
  1. W ! F J=1:1:IOM W "-"
  1. W ! F I="UNIT DOSE","IV" W I,?17,$G(CNT(I)),?35,$G(CNT(I,"TR")),! S CNTT=CNTT+$G(CNT(I)),CNTTR=CNTTR+$G(CNT(I,"TR"))
  1. W ! F J=1:1:IOM W "-"
  1. W !,?17,CNTT,?35,CNTTR
  1. EXIT ;
  1. Q