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

BEXREXC.m

Go to the documentation of this file.
  1. BEXREXC ;IHS/CMI/DAY - Print reports [ 07/14/2011 1:01 AM ] ; 12 Mar 2012 9:18 PM
  1. ;;1.0;BEX TELEPHONE REFILL SYSTEM;**4,5**;MAR 12, 2012;Build 1
  1. ;
  1. ;Prints the Exceptions/Non-Refillable Transactions by Date Report
  1. ;
  1. ;IHS/CMI/DAY - New routine released in patch 5
  1. ;
  1. W #
  1. ;
  1. W !,"Exceptions/Non-Refillable Transaction Report"
  1. W !
  1. W !,"This option prints a list of Exceptions/Non-Refillable transactions that"
  1. W !,"were received within 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. ;
  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,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,DIRUT
  1. S DIR("A")="Select Window, Local Mail, or Mail"
  1. S DIR(0)="S^A:All Entries;W:Window Only;L:Local Mail Only;M:Mail Only (CMOP)"
  1. D ^DIR
  1. K DIR
  1. S BEXWIND=Y
  1. ;
  1. BEGDATE ;EP - Come here if end date is before begin date
  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_".24"
  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^BEXREXC"
  1. S XBNS="BEX"
  1. D ^XBDBQUE
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. EOJ ;--> 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. K ^BEXREXC($J)
  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. W #
  1. D HEADER
  1. ;
  1. K ^BEXREXC($J)
  1. K BEXTOT
  1. S BEXTOT=0
  1. ;
  1. S BEXQUIT=0,BEXEXIT=0
  1. ;
  1. ;Loop to build sorted array
  1. S BEXDATE=BEXBEG
  1. F S BEXDATE=$O(^VEXHRX0(19080.1,"C",BEXDATE)) Q:'BEXDATE D Q:BEXQUIT=1
  1. .;
  1. .I BEXDATE<BEXBEG Q
  1. .I BEXDATE>BEXEND 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. ..;Only want to look at refill requests
  1. ..I BEXTYPE'="R" Q
  1. ..;
  1. ..;Screen by Division
  1. ..I +BEXDIV,BEXDVIEN="" Q
  1. ..I +BEXDIV,'$D(BEXDIV(BEXDVIEN)) Q
  1. ..;
  1. ..S BEXHRNO=$$HRN^AUPNPAT(BEXPTIEN,BEXDVIEN)
  1. ..I BEXHRNO="" Q
  1. ..;
  1. ..S BEXNAME=$$GET1^DIQ(2,BEXPTIEN,.01)
  1. ..;
  1. ..;No RX # for Deceased, and other conditions
  1. ..I BEXRXNUM="" S BEXRXNUM=0
  1. ..;
  1. ..I BEXMAIL="W" S BEXSORT=1
  1. ..I BEXMAIL="L" S BEXSORT=3
  1. ..I BEXMAIL="M" S BEXSORT=2
  1. ..I BEXMAIL="" S BEXSORT=4
  1. ..;
  1. ..;If this was refilled within the date range - remove it
  1. ..;Because we sort by M/W you may see an RX that was refillable
  1. ..;not get removed if the Exception was under a different M/W
  1. ..I BEXRESLT["REFILLABLE" K ^BEXREXC($J,BEXSORT,BEXNAME,BEXRXNUM) Q
  1. ..;
  1. ..;Screen by Mail or Window
  1. ..I BEXWIND="M",BEXMAIL="L" Q
  1. ..I BEXWIND="M",BEXMAIL="W" Q
  1. ..I BEXWIND="L",BEXMAIL="M" Q
  1. ..I BEXWIND="L",BEXMAIL="W" Q
  1. ..I BEXWIND="W",BEXMAIL="M" Q
  1. ..I BEXWIND="W",BEXMAIL="L" Q
  1. ..;
  1. ..;
  1. ..;Sort by Mail/Window, then Name and RXNUM
  1. ..S ^BEXREXC($J,BEXSORT,BEXNAME,BEXRXNUM)=BEXIEN
  1. ;
  1. ;
  1. ;Loop to write out detail and add to totals counters
  1. S BEXSORT=""
  1. F S BEXSORT=$O(^BEXREXC($J,BEXSORT)) Q:BEXSORT="" D Q:BEXEXIT=1
  1. .;
  1. .S BEXNAME=""
  1. .F S BEXNAME=$O(^BEXREXC($J,BEXSORT,BEXNAME)) Q:BEXNAME="" D Q:BEXEXIT=1
  1. ..;
  1. ..S BEXRXN=""
  1. ..F S BEXRXN=$O(^BEXREXC($J,BEXSORT,BEXNAME,BEXRXN)) Q:BEXRXN="" D Q:BEXEXIT=1
  1. ...;
  1. ...S BEXIEN=$G(^BEXREXC($J,BEXSORT,BEXNAME,BEXRXN))
  1. ...I BEXIEN="" Q
  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. ;Write Totals
  1. ;
  1. I BEXEXIT=1 Q
  1. ;
  1. W !
  1. W "----------------------------------------------------------------"
  1. W !
  1. W "TOTALS by Date"
  1. W !
  1. W "---------------------------------------------------------------------"
  1. W !
  1. ;
  1. S BEXDAT=""
  1. F S BEXDAT=$O(BEXTOT(BEXDAT)) Q:'BEXDAT D
  1. .S X=BEXDAT
  1. .W $E(X,4,5),"/",$E(X,6,7),"/",$E(X,2,3)
  1. .W ?10,"EXCEPTIONS: "
  1. .W ?29,$J(BEXTOT(BEXDAT),4)
  1. .W !
  1. ;
  1. W !,"TOTAL Exceptions:",?25,$J(BEXTOT,8)
  1. W !
  1. ;
  1. I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;---------------------------------------------------------------
  1. ;---------------------------------------------------------------
  1. ;
  1. W #
  1. W !,"REPORT: Exceptions/Non-Refillable Report"
  1. W " for "
  1. I BEXSITE>0 W $$GET1^DIQ(59,BEXDIV,.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. ;Quit if totals only
  1. ;
  1. W "Date"
  1. W ?7,"Name"
  1. W ?27,"HRNO"
  1. W ?36,"RX #"
  1. W ?44,"Drug"
  1. W ?60,"M/W"
  1. W ?65,"Result"
  1. W !
  1. W "-------------------------------------------------------------------------------"
  1. W !
  1. Q
  1. ;
  1. ;
  1. ;-----------------------------------------------------------------
  1. DETAIL ;EP - Write Detail for each Record and Add up totals
  1. ;-----------------------------------------------------------------
  1. ;
  1. S BEXTOT=BEXTOT+1
  1. ;
  1. ;Initialize Counter for this date
  1. I '$D(BEXTOT(BEXDAT)) S BEXTOT(BEXDAT)=0
  1. ;
  1. ;Add to Counters by Type
  1. ;
  1. ;Refills
  1. I BEXTYPE="R" S BEXTOT(BEXDAT)=BEXTOT(BEXDAT)+1
  1. ;
  1. ;Quit if totals only
  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. .;Remove Time
  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. ;Patient Name
  1. S Y=$$GET1^DIQ(2,BEXPTIEN,.01)
  1. W ?7,$E(Y,1,16)
  1. ;
  1. ;Write Patient HRNO
  1. S Y=$$HRN^AUPNPAT(BEXPTIEN,BEXDVIEN)
  1. I Y>0 W ?25,$J(Y,6)
  1. ;
  1. ;Write RX Number
  1. I $E(BEXRXNUM,$L(BEXRXNUM))?1A W ?33,$J(BEXRXNUM,9)
  1. I $E(BEXRXNUM,$L(BEXRXNUM))?1N W ?32,$J(BEXRXNUM,9)
  1. ;
  1. ;Drug Name
  1. S Y=$$GET1^DIQ(50,BEXDRIEN,.01)
  1. W ?44,$E(Y,1,16)
  1. ;
  1. ;Write Mail/Window
  1. W ?62,BEXMAIL
  1. ;
  1. ;Write Results
  1. W ?65,$E(BEXRESLT,1,14)
  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. ;
  1. Q
  1. ;