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

BEXRHOR.m

Go to the documentation of this file.
  1. BEXRHOR ;IHS/CMI/DAY - BEX - Transactions by Hour Report ; 12 Mar 2012 7:14 PM
  1. ;;1.0;BEX TELEPHONE REFILL SYSTEM;**4,5**;MAR 12, 2012;Build 1
  1. ;
  1. ;Prints the Transactions by Hour Report
  1. ;
  1. W #
  1. ;
  1. W !,"Transactions by Hour 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 for ALL Pharmacy Divisions or you may"
  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,DR,DA,DD,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. W !
  1. K DIR
  1. S DIR("B")="N"
  1. S DIR("A")="Do you want TOTALS only"
  1. S DIR(0)="Y"
  1. S DIR("?")="Answering NO will print detailed transactions"
  1. D ^DIR
  1. K DIR
  1. I Y=0 S BEXRTYPE="DETAIL"
  1. I Y=1 S BEXRTYPE="TOTALS"
  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^BEXRHOR"
  1. S XBRX="EOJ^BEXRHOR"
  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 BEXEXIT=0 I $E(IOST)="C" W ! K DIR S DIR(0)="E" D ^DIR K DIR
  1. K ^BEXTMP($J,"BEXRHOR")
  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 ^BEXTMP($J,"BEXRHOR")
  1. K BEXTOT
  1. S BEXTOT=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. ..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. ;Now we loop the TMP global to write out detail within each time slot
  1. I BEXRTYPE="DETAIL" D
  1. .;
  1. .S BEXHOR=0
  1. .F S BEXHOR=$O(^BEXTMP($J,"BEXRHOR",BEXHOR)) Q:'BEXHOR D Q:BEXEXIT=1
  1. ..;
  1. ..D SUBHEAD
  1. ..D DETHEAD
  1. ..;
  1. ..S BEXIEN=0
  1. ..F S BEXIEN=$O(^BEXTMP($J,"BEXRHOR",BEXHOR,BEXIEN)) Q:'BEXIEN D Q:BEXEXIT=1
  1. ...;
  1. ...S BEX(0)=$G(^VEXHRX0(19080.1,BEXIEN,0))
  1. ...I BEX(0)="" Q
  1. ...;
  1. ...D PARSE^BEXRUTL
  1. ...;
  1. ...D DETAIL
  1. ;
  1. I BEXEXIT=1 Q
  1. ;
  1. ;Write Totals
  1. ;
  1. I BEXTOT>0 D
  1. .W !
  1. .W "-------------------------------------------------------------------------------"
  1. .W !
  1. .W "TOTALS by Hour"
  1. .W !
  1. .W "-------------------------------------------------------------------------------"
  1. .W !
  1. ;
  1. S BEXHOR=""
  1. F S BEXHOR=$O(BEXTOT(BEXHOR)) Q:'BEXHOR D
  1. .I BEXHOR=1 W "MIDNIGHT TO 1:00 AM"
  1. .I BEXHOR=2 W " 1:00 AM TO 2:00 AM"
  1. .I BEXHOR=3 W " 2:00 AM TO 3:00 AM"
  1. .I BEXHOR=4 W " 3:00 AM TO 4:00 AM"
  1. .I BEXHOR=5 W " 4:00 AM TO 5:00 AM"
  1. .I BEXHOR=6 W " 5:00 AM TO 6:00 AM"
  1. .I BEXHOR=7 W " 6:00 AM TO 7:00 AM"
  1. .I BEXHOR=8 W " 7:00 AM TO 8:00 AM"
  1. .I BEXHOR=9 W " 8:00 AM TO 9:00 AM"
  1. .I BEXHOR=10 W " 9:00 AM TO 10:00 AM"
  1. .I BEXHOR=11 W "10:00 AM TO 11:00 AM"
  1. .I BEXHOR=12 W "11:00 AM TO NOON"
  1. .I BEXHOR=13 W "NOON TO 1:00 PM"
  1. .I BEXHOR=14 W " 1:00 PM TO 2:00 PM"
  1. .I BEXHOR=15 W " 2:00 PM TO 3:00 PM"
  1. .I BEXHOR=16 W " 3:00 PM TO 4:00 PM"
  1. .I BEXHOR=17 W " 4:00 PM TO 5:00 PM"
  1. .I BEXHOR=18 W " 5:00 PM TO 6:00 PM"
  1. .I BEXHOR=19 W " 6:00 PM TO 7:00 PM"
  1. .I BEXHOR=20 W " 7:00 PM TO 8:00 PM"
  1. .I BEXHOR=21 W " 8:00 PM TO 9:00 PM"
  1. .I BEXHOR=22 W " 9:00 PM TO 10:00 PM"
  1. .I BEXHOR=23 W "10:00 PM TO 11:00 PM"
  1. .I BEXHOR=24 W "11:00 PM TO MIDNIGHT"
  1. .W !
  1. .W ?6,"REFILL: "
  1. .W $J($P(BEXTOT(BEXHOR),U),5)
  1. .W ?21,"STATUS: "
  1. .W $J($P(BEXTOT(BEXHOR),U,2),5)
  1. .W ?36,"PHARM: "
  1. .W $J($P(BEXTOT(BEXHOR),U,3),5)
  1. .;Remove LIST since this type does not seem to be used
  1. .;W ?50,"INFO: "
  1. .;W $J($P(BEXTOT(BEXHOR),U,4),5)
  1. .W ?50,"TOTAL: "
  1. .W $J($P(BEXTOT(BEXHOR),U,5),6)
  1. .W !
  1. .;
  1. .I $Y>(IOSL-4) 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 !,"TOTAL Transactions:",?25,$J(BEXTOT,8)
  1. W !
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. ;---------------------------------------------------------------
  1. ;
  1. W #
  1. W !,"REPORT: Transactions by Hour Report"
  1. W " for "
  1. I BEXSITE>0 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. DETHEAD ;EP - Write Detail Header
  1. ;------------------------------------------------------------------
  1. ;
  1. ;Quit if totals only
  1. I BEXRTYPE="TOTALS" Q
  1. ;
  1. W "Date of TX"
  1. W ?15,"HRNO"
  1. W ?23,"RX #"
  1. W ?33,"Date Filled"
  1. W ?47,"Type"
  1. W ?57,"Result/[Status]"
  1. W !
  1. W "-------------------------------------------------------------------------------"
  1. W !
  1. Q
  1. ;
  1. ;
  1. ;-----------------------------------------------------------------
  1. SUBHEAD ;EP - Write Subhead totals
  1. ;-----------------------------------------------------------------
  1. ;
  1. W !
  1. W "-------------------------------------------------------------------------------"
  1. W !
  1. I BEXHOR=1 W "MIDNIGHT TO 1:00 AM"
  1. I BEXHOR=2 W " 1:00 AM TO 2:00 AM"
  1. I BEXHOR=3 W " 2:00 AM TO 3:00 AM"
  1. I BEXHOR=4 W " 3:00 AM TO 4:00 AM"
  1. I BEXHOR=5 W " 4:00 AM TO 5:00 AM"
  1. I BEXHOR=6 W " 5:00 AM TO 6:00 AM"
  1. I BEXHOR=7 W " 6:00 AM TO 7:00 AM"
  1. I BEXHOR=8 W " 7:00 AM TO 8:00 AM"
  1. I BEXHOR=9 W " 8:00 AM TO 9:00 AM"
  1. I BEXHOR=10 W " 9:00 AM TO 10:00 AM"
  1. I BEXHOR=11 W "10:00 AM TO 11:00 AM"
  1. I BEXHOR=12 W "11:00 AM TO NOON"
  1. I BEXHOR=13 W "NOON TO 1:00 PM"
  1. I BEXHOR=14 W " 1:00 PM TO 2:00 PM"
  1. I BEXHOR=15 W " 2:00 PM TO 3:00 PM"
  1. I BEXHOR=16 W " 3:00 PM TO 4:00 PM"
  1. I BEXHOR=17 W " 4:00 PM TO 5:00 PM"
  1. I BEXHOR=18 W " 5:00 PM TO 6:00 PM"
  1. I BEXHOR=19 W " 6:00 PM TO 7:00 PM"
  1. I BEXHOR=20 W " 7:00 PM TO 8:00 PM"
  1. I BEXHOR=21 W " 8:00 PM TO 9:00 PM"
  1. I BEXHOR=22 W " 9:00 PM TO 10:00 PM"
  1. I BEXHOR=23 W "10:00 PM TO 11:00 PM"
  1. I BEXHOR=24 W "11:00 PM TO MIDNIGHT"
  1. W !
  1. W ?6,"REFILL: "
  1. W $J($P(BEXTOT(BEXHOR),U),5)
  1. W ?21,"STATUS: "
  1. W $J($P(BEXTOT(BEXHOR),U,2),5)
  1. W ?36,"PHARM: "
  1. W $J($P(BEXTOT(BEXHOR),U,3),5)
  1. ;Remove INFO since this type does not seem to be used
  1. ;W ?50,"INFO: "
  1. ;W $J($P(BEXTOT(BEXHOR),U,4),5)
  1. W ?50,"TOTAL: "
  1. W $J($P(BEXTOT(BEXHOR),U,5),6)
  1. W !
  1. W "-------------------------------------------------------------------------------"
  1. W !
  1. Q
  1. ;
  1. ;
  1. ;----------------------------------------------------------------
  1. TOTAL ;EP - Calculate Totals and Suntotals
  1. ;------------------------------------------------------------------
  1. ;
  1. I BEXTIM="" Q
  1. S BEXHOR=BEXTIM
  1. ;
  1. S BEXTOT=BEXTOT+1
  1. ;
  1. ;Fix Midnight
  1. I BEXHOR="24" S BEXHOR="00"
  1. ;
  1. ;Fix 10:00
  1. I BEXHOR=1 S BEXHOR="10"
  1. ;Initialize Counters for this date
  1. D
  1. .I $E(BEXHOR,1,2)="00" S BEXHOR=1 Q
  1. .I $E(BEXHOR,1,2)="01" S BEXHOR=2 Q
  1. .I $E(BEXHOR,1,2)="02" S BEXHOR=3 Q
  1. .I $E(BEXHOR,1,2)="03" S BEXHOR=4 Q
  1. .I $E(BEXHOR,1,2)="04" S BEXHOR=5 Q
  1. .I $E(BEXHOR,1,2)="05" S BEXHOR=6 Q
  1. .I $E(BEXHOR,1,2)="06" S BEXHOR=7 Q
  1. .I $E(BEXHOR,1,2)="07" S BEXHOR=8 Q
  1. .I $E(BEXHOR,1,2)="08" S BEXHOR=9 Q
  1. .I $E(BEXHOR,1,2)="09" S BEXHOR=10 Q
  1. .I $E(BEXHOR,1,2)="10" S BEXHOR=11 Q
  1. .I $E(BEXHOR,1,2)="11" S BEXHOR=12 Q
  1. .I $E(BEXHOR,1,2)="12" S BEXHOR=13 Q
  1. .I $E(BEXHOR,1,2)="13" S BEXHOR=14 Q
  1. .I $E(BEXHOR,1,2)="14" S BEXHOR=15 Q
  1. .I $E(BEXHOR,1,2)="15" S BEXHOR=16 Q
  1. .I $E(BEXHOR,1,2)="16" S BEXHOR=17 Q
  1. .I $E(BEXHOR,1,2)="17" S BEXHOR=18 Q
  1. .I $E(BEXHOR,1,2)="18" S BEXHOR=19 Q
  1. .I $E(BEXHOR,1,2)="19" S BEXHOR=20 Q
  1. .I $E(BEXHOR,1,2)="20" S BEXHOR=21 Q
  1. .I $E(BEXHOR,1,2)="21" S BEXHOR=22 Q
  1. .I $E(BEXHOR,1,2)="22" S BEXHOR=23 Q
  1. .I $E(BEXHOR,1,2)="23" S BEXHOR=24 Q
  1. ;
  1. I BEXHOR>24 Q
  1. ;
  1. I '$D(BEXTOT(BEXHOR)) S BEXTOT(BEXHOR)="0^0^0^0^0"
  1. ;
  1. ;Refills
  1. I BEXTYPE="R" S $P(BEXTOT(BEXHOR),U)=$P(BEXTOT(BEXHOR),U)+1
  1. ;
  1. ;Status
  1. I BEXTYPE="S" S $P(BEXTOT(BEXHOR),U,2)=$P(BEXTOT(BEXHOR),U,2)+1
  1. ;
  1. ;Pharmacy
  1. I BEXTYPE="P" S $P(BEXTOT(BEXHOR),U,3)=$P(BEXTOT(BEXHOR),U,3)+1
  1. ;
  1. ;RX Info
  1. I BEXTYPE="I" S $P(BEXTOT(BEXHOR),U,4)=$P(BEXTOT(BEXHOR),U,4)+1
  1. ;
  1. ;Total (for this date)
  1. S $P(BEXTOT(BEXHOR),U,5)=$P(BEXTOT(BEXHOR),U,5)+1
  1. ;
  1. ;
  1. ;Set Sort Array
  1. S ^BEXTMP($J,"BEXRHOR",BEXHOR,BEXIEN)=""
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;-----------------------------------------------------------------
  1. DETAIL ;EP - Write out detail
  1. ;-----------------------------------------------------------------
  1. ;
  1. ;--> Let's write out the record detail
  1. ;
  1. ;Write Transaction Date/Time
  1. S Y=BEXTXDAT
  1. I Y]"" D
  1. .W $E(Y,4,5),"/",$E(Y,6,7)
  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. ;Write Patient HRNO
  1. I +BEXDVIEN S Y=$$HRN^AUPNPAT(BEXPTIEN,BEXDVIEN)
  1. I BEXDVIEN="" S Y=$$HRN^AUPNPAT(BEXPTIEN,DUZ(2))
  1. I Y>0 W ?13,$J(Y,6)
  1. ;
  1. ;Write RX Number
  1. I +BEXRXNUM W ?22,$J(+BEXRXNUM,8)
  1. S Y=$E(BEXRXNUM,$L(BEXRXNUM)) I Y?1A W Y
  1. ;
  1. ;Write Date Filled
  1. S Y=BEXRFDAT
  1. I Y]"" W ?33,$E(Y,4,5),"/",$E(Y,6,7),"/",$E(Y,2,3)
  1. ;
  1. ;Write Type
  1. S Y=""
  1. I BEXTYPE="R" S Y="REFILL"
  1. I BEXTYPE="S" S Y="STATUS"
  1. I BEXTYPE="I" S Y="RX INFO"
  1. I BEXTYPE="P" S Y="PHARMACY"
  1. W ?47,Y
  1. ;
  1. ;Write Results
  1. W ?57,$E(BEXRESLT,1,22)
  1. I BEXTYPE="P",BEXRESLT="" S Y=$$GET1^DIQ(52,BEXRXIEN,100) W ?57,"[",$E(Y,1,20),"]"
  1. ;
  1. W !
  1. ;
  1. I $Y>(IOSL-4) D
  1. .I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR
  1. .I X="^" S BEXEXIT=1 Q
  1. .D HEADER
  1. .D DETHEAD
  1. ;
  1. Q
  1. ;