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

BEXRREJ.m

Go to the documentation of this file.
  1. BEXRREJ ;IHS/CMI/DAY - BEX - Refill Rejections Percentage Report ; 12 Mar 2012 7:15 PM
  1. ;;1.0;BEX TELEPHONE REFILL SYSTEM;**4,5**;MAR 12, 2012;Build 1
  1. ;
  1. ;Prints the Refill Rejections Percentage Report
  1. ;
  1. W #
  1. ;
  1. W !,"Refill Rejections Percentage Report"
  1. W !
  1. W !,"This option prints a list of Transactions that were processed within"
  1. W !,"a selected date/time range."
  1. W !
  1. ;
  1. K BEXDIV
  1. S BEXDIV=0
  1. S BEXSITE=0
  1. S BEXQUIT=0
  1. ;
  1. W !,"Press Enter to select ALL Pharmacy Divisions, or"
  1. F D Q:BEXQUIT=1
  1. .K DIC,DIR,DIE,DA,DR,DO,DD
  1. .S DIC(0)="AEQMZ"
  1. .S DIC("A")="Select a Pharmacy Division: "
  1. .S DIC=59
  1. .D ^DIC
  1. .K DIC,DIE,DIR,DA,DD,DR,DO
  1. .I X="" S BEXQUIT=1 Q
  1. .I Y<0 S BEXQUIT=1 Q
  1. .S BEXSITE=+Y
  1. .S BEXDIV=BEXDIV+1
  1. .S Y=$P($G(^PS(59,BEXSITE,"INI")),U)
  1. .I +Y S BEXDIV(Y)=""
  1. ;
  1. ;
  1. ;
  1. ;--------------------------------------------------------------------
  1. BEGDATE ;EP - Come here if end date is before begin date
  1. ;---------------------------------------------------------------------
  1. ;
  1. W !
  1. K DIRUT
  1. K %DT
  1. S %DT("A")="Select the Beginning Date/Time: "
  1. S %DT="AET"
  1. D ^%DT
  1. K %DT
  1. I ($D(DIRUT))!(Y<0) W !!,"No Beginning Date selected" G EOJ
  1. S BEXBEG=Y
  1. ;
  1. W !
  1. K DIRUT
  1. K %DT
  1. S %DT("A")="Select the Ending Date/Time: "
  1. S %DT="AET"
  1. D ^%DT
  1. K %DT
  1. I ($D(DIRUT))!(Y<0) W !!,"No Ending Date selected" G EOJ
  1. S BEXEND=Y
  1. I $P(BEXEND,".",2)="" S BEXEND=BEXEND_".240000"
  1. ;
  1. I BEXBEG>BEXEND W !!,"Beginning Date is later than the Ending Date. Try Again!",! G BEGDATE
  1. ;
  1. W !
  1. S XBRP="LIST^BEXRREJ"
  1. S XBRX="EOJ^BEXRREJ"
  1. S XBNS="BEX"
  1. D ^XBDBQUE
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. EOJ ;EP - End of Job Processing
  1. ;---------------------------------------------------------------
  1. ;
  1. X ^%ZIS("C")
  1. I $E(IOST)="C" W ! K DIR S DIR(0)="E" D ^DIR K DIR
  1. K BEX
  1. D EN^XBVK("BEX")
  1. K DIR,DIE,DIC,DD,DA,DR
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. LIST ;EP - Entry Point from XBDBQUE
  1. ;---------------------------------------------------------------
  1. ;
  1. ;
  1. W #
  1. D HEADER
  1. ;
  1. K BEXTOT
  1. S BEXTOT=0
  1. S BEXTOT("REJECTS")=0
  1. S BEXTOT("TOO EARLY")=0
  1. S BEXTOT("DISCONTINUED")=0
  1. S BEXTOT("CANCELLED")=0
  1. S BEXTOT("NO REFILLS")=0
  1. S BEXTOT("EXPIRED")=0
  1. S BEXTOT("DUE EXPIRE")=0
  1. S BEXTOT("RESTOCKED")=0
  1. ;
  1. S BEXQUIT=0
  1. S BEXEXIT=0
  1. ;
  1. S BEXDATE=$O(^VEXHRX0(19080.1,"C",BEXBEG),-1)
  1. F S BEXDATE=$O(^VEXHRX0(19080.1,"C",BEXDATE)) Q:'BEXDATE D Q:BEXQUIT=1
  1. .;
  1. .I BEXDATE>BEXEND S BEXQUIT=1 Q
  1. .;
  1. .;This loops around to some non-numeric dates
  1. .I +BEXDATE<BEXBEG S BEXQUIT=1 Q
  1. .;
  1. .S BEXIEN=0
  1. .F S BEXIEN=$O(^VEXHRX0(19080.1,"C",BEXDATE,BEXIEN)) Q:'BEXIEN D Q:BEXQUIT=1
  1. ..;
  1. ..S BEX(0)=$G(^VEXHRX0(19080.1,BEXIEN,0))
  1. ..I BEX(0)="" Q
  1. ..;
  1. ..;Restrict to non-Pharmacy Type
  1. ..I $P(BEX(0),U,4)="P" Q
  1. ..;
  1. ..D PARSE^BEXRUTL
  1. ..;
  1. ..;Screen by Division
  1. ..I +BEXDIV,BEXDVIEN="" Q
  1. ..I +BEXDIV,'$D(BEXDIV(BEXDVIEN)) Q
  1. ..;
  1. ..D TOTAL
  1. ;
  1. S BEXQUIT=0
  1. ;Loop through sort array
  1. S BEXDAT=0
  1. F S BEXDAT=$O(BEXTOT(BEXDAT)) Q:'BEXDAT D Q:BEXQUIT=1 Q:BEXEXIT=1
  1. .;
  1. .W !
  1. .S Y=BEXDAT
  1. .W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3)
  1. .;
  1. .W ?30,"TOO EARLY",?49,$J($P(BEXTOT(BEXDAT),U,3),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,3),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"DISCONTINUED",?49,$J($P(BEXTOT(BEXDAT),U,4),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,4),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"CANCELLED",?49,$J($P(BEXTOT(BEXDAT),U,5),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,5),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"NO REFILLS",?49,$J($P(BEXTOT(BEXDAT),U,6),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,6),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"EXPIRED",?49,$J($P(BEXTOT(BEXDAT),U,7),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,7),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"DUE EXPIRE",?49,$J($P(BEXTOT(BEXDAT),U,8),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,8),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .W ?30,"RESTOCKED",?49,$J($P(BEXTOT(BEXDAT),U,9),6)
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U,9),$P(BEXTOT(BEXDAT),U,2)),!
  1. .;
  1. .;
  1. .W ?2,"TOTAL TRANSACTIONS "
  1. .W $J($P(BEXTOT(BEXDAT),U,2),6)
  1. .;
  1. .W ?30,"TOTAL REJECTS "
  1. .W $J($P(BEXTOT(BEXDAT),U),6)
  1. .;
  1. .W ?58,"PERCENT "
  1. .W $$PERCENT($P(BEXTOT(BEXDAT),U),$P(BEXTOT(BEXDAT),U,2))
  1. .;
  1. .W !
  1. .W "----------------------------------------------------------------------------"
  1. .W !
  1. .;
  1. .I $Y>(IOSL-12) D
  1. ..I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR S:X="^" BEXEXIT=1 K DIR
  1. ..I BEXEXIT=1 Q
  1. ..D HEADER
  1. ;
  1. W !
  1. ;
  1. W "GRAND TOTALS"
  1. ;Write Totals for each type
  1. W ?30,"TOO EARLY"
  1. W ?49,$J(BEXTOT("TOO EARLY"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("TOO EARLY"),BEXTOT),!
  1. ;
  1. W ?30,"DISCONTINUED"
  1. W ?49,$J(BEXTOT("DISCONTINUED"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("DISCONTINUED"),BEXTOT),!
  1. ;
  1. W ?30,"CANCELLED"
  1. W ?49,$J(BEXTOT("CANCELLED"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("CANCELLED"),BEXTOT),!
  1. ;
  1. W ?30,"NO REFILLS"
  1. W ?49,$J(BEXTOT("NO REFILLS"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("NO REFILLS"),BEXTOT),!
  1. ;
  1. W ?30,"EXPIRED"
  1. W ?49,$J(BEXTOT("EXPIRED"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("EXPIRED"),BEXTOT),!
  1. ;
  1. W ?30,"DUE EXPIRE"
  1. W ?49,$J(BEXTOT("DUE EXPIRE"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("DUE EXPIRE"),BEXTOT),!
  1. ;
  1. W ?30,"RESTOCKED"
  1. W ?49,$J(BEXTOT("RESTOCKED"),6)
  1. W ?58,"PERCENT "
  1. W $$PERCENT(BEXTOT("RESTOCKED"),BEXTOT),!
  1. ;
  1. W !
  1. W ?2,"TOTAL TRANSACTIONS "
  1. W $J(BEXTOT,6)
  1. W ?30,"TOTAL REJECTS "
  1. W $J(BEXTOT("REJECTS"),6)
  1. W ?58,"PERCENT ",$$PERCENT(BEXTOT("REJECTS"),BEXTOT)
  1. W !
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. ;---------------------------------------------------------------
  1. ;
  1. W #
  1. W !,"REPORT: Refill Rejections Percentage Report"
  1. W " for "
  1. I +BEXSITE W $$GET1^DIQ(59,BEXSITE,.01)
  1. I +BEXSITE=0 W "all Divisions"
  1. W !,"DATE RUN: " S Y=DT X ^DD("DD") W Y
  1. W !,"PARAMETERS: "
  1. ;
  1. W "Between "
  1. S Y=BEXBEG
  1. W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3)
  1. X ^DD("DD")
  1. W "@"
  1. I $P(Y,"@",2)]"" W $E($P(Y,"@",2),1,5)
  1. I $P(Y,"@",2)="" W "00:00"
  1. ;
  1. W " and "
  1. S Y=BEXEND
  1. W $E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3)
  1. X ^DD("DD")
  1. W "@"
  1. I $P(Y,"@",2)]"" W $E($P(Y,"@",2),1,5)
  1. I $P(Y,"@",2)="" W "00:00"
  1. ;
  1. W !
  1. W "-------------------------------------------------------------------------------"
  1. W !
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. PERCENT(X,Y) ;EP - Calculate Percent
  1. ;---------------------------------------------------------------
  1. ;
  1. I X=0 Q " 0.00%"
  1. I Y=0 Q " 0.00%"
  1. S Z=X/Y
  1. S Z=$J(Z,4,4)
  1. S Z=$E(Z,3,4)_"."_$E(Z,5,6)_"%"
  1. I $E(Z)=0 S Z=" "_$E(Z,2,99)
  1. Q Z
  1. ;
  1. ;
  1. ;-----------------------------------------------------------------
  1. TOTAL ;EP - Add up totals
  1. ;-----------------------------------------------------------------
  1. ;
  1. ;We are adding up individual totals by reject type, but are not
  1. ;writing them at this time. In the future, the users may want them.
  1. ;
  1. S BEXTOT=BEXTOT+1
  1. ;
  1. ;Initialize Counters for this date
  1. I '$D(BEXTOT(BEXDAT)) S BEXTOT(BEXDAT)="0^0^0^0^0^0^0^0^0"
  1. ;
  1. ;Add to Total Transactions for this date
  1. S $P(BEXTOT(BEXDAT),U,2)=$P(BEXTOT(BEXDAT),U,2)+1
  1. ;
  1. ;Reject - Too Early (piece 3)
  1. I BEXRESLT="TOO EARLY" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("TOO EARLY")=BEXTOT("TOO EARLY")+1
  1. .S $P(BEXTOT(BEXDAT),U,3)=$P(BEXTOT(BEXDAT),U,3)+1
  1. ;
  1. ;Reject - Discontinued (piece 4)
  1. I BEXRESLT="DISCONTINUED" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("DISCONTINUED")=BEXTOT("DISCONTINUED")+1
  1. .S $P(BEXTOT(BEXDAT),U,4)=$P(BEXTOT(BEXDAT),U,4)+1
  1. ;
  1. ;Reject - Canceled (piece 5) - yes it is misspelled
  1. I BEXRESLT="CANCELED" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("CANCELLED")=BEXTOT("CANCELLED")+1
  1. .S $P(BEXTOT(BEXDAT),U,5)=$P(BEXTOT(BEXDAT),U,5)+1
  1. ;
  1. ;Reject - No Refills (piece 6)
  1. I BEXRESLT="NO REFILLS" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("NO REFILLS")=BEXTOT("NO REFILLS")+1
  1. .S $P(BEXTOT(BEXDAT),U,6)=$P(BEXTOT(BEXDAT),U,6)+1
  1. ;
  1. ;Reject - Expired (piece 7)
  1. I BEXRESLT="EXPIRED" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("EXPIRED")=BEXTOT("EXPIRED")+1
  1. .S $P(BEXTOT(BEXDAT),U,7)=$P(BEXTOT(BEXDAT),U,7)+1
  1. ;
  1. ;Reject - Due Expire
  1. I BEXRESLT="DUE EXPIRE" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("DUE EXPIRE")=BEXTOT("DUE EXPIRE")+1
  1. .S $P(BEXTOT(BEXDAT),U,8)=$P(BEXTOT(BEXDAT),U,8)+1
  1. ;
  1. ;Reject - Restocked
  1. I BEXRESLT="RESTOCKED" D Q
  1. .S $P(BEXTOT(BEXDAT),U)=$P(BEXTOT(BEXDAT),U)+1
  1. .S BEXTOT("REJECTS")=BEXTOT("REJECTS")+1
  1. .S BEXTOT("RESTOCKED")=BEXTOT("RESTOCKED")+1
  1. .S $P(BEXTOT(BEXDAT),U,9)=$P(BEXTOT(BEXDAT),U,9)+1
  1. ;
  1. Q
  1. ;