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

BEXRSRT.m

Go to the documentation of this file.
  1. BEXRSRT ; cmi/anch/maw - BEX SORT PATIENTS AND DATE 4/6/95 ; 12 Mar 2012 4:22 PM
  1. ;;1.0;BEX TELEPHONE REFILL SYSTEM;**1,2,3,4,5**;MAR 12, 2012;Build 1
  1. ;This routine optimizes sorting for
  1. ;option BEX TRANSACTIONS BY PATIENT.
  1. ;After sorting, it calls routine ^BEXRPAT, which is a compilation
  1. ;of print template [BEX TRANSACTIONS BY PATIENT].
  1. ;
  1. ;cmi/anch/maw 2/1/2007 patch 3 added check of piece 10 for DUZ(2)
  1. ;IHS/CMI/DAY - 4/28/2010 - patch 4 - allow time in sort
  1. ;IHS/CMI/DAY - 4/28/2010 - patch 4 - limit to one site
  1. ;IHS/CMI/DAY - 7/26/2011 - patch 5 - Fix if no RX# in Tran Global
  1. ;
  1. MAIN ;MAIN DRIVER SUBROUTINE
  1. N BEX,%DT,X,Y,DTOUT
  1. S DTIME=$S($D(DTIME):DTIME,1:180),U="^",BEX("OUT")=0
  1. D ASKDATE
  1. Q:$D(DTOUT)!(Y=-1) ;QUIT IF TIMEOUT, "^", OR INVALID DATE
  1. ;IHS/CMI/DAY - Add question to limit by site (4/28/2010)
  1. D ASKSITE
  1. I BEX("OUT")=1 Q
  1. D DEVICE Q:BEX("OUT")
  1. MAINDQ ;ENTRY POINT FOR TASKMAN WHEN PRINTOUT IS QUEUED
  1. D SORT Q:BEX("OUT")
  1. D PRT
  1. I $D(ZTQUEUED) S ZTREQ="@" D ^%ZISC K BEX
  1. I '$D(ZTQUEUED) D ^%ZISC D HOME^%ZIS
  1. ;I $D(ZTQUEUED) D
  1. ;.S ZTREQ="@" D ^%ZISC K BEX
  1. ;E D
  1. ;.D HOME^%ZIS
  1. ;IHS/PIMC/WAR 10/20/06 End mod
  1. D ^%ZISC ;cmi/maw 6/12/2006 added for device close
  1. K ^TMP($J)
  1. Q
  1. ASKDATE ;GET BEGINNING AND ENDING DATES
  1. ;IHS/CMI/DAY - Patch 4 - Add T to allow entry of time
  1. S %DT="AEXT"
  1. D ASKDATE1 Q:$D(DTOUT)!(Y=-1)
  1. D ASKDATE2
  1. Q
  1. ASKDATE1 ;GET BEGINNING DATE
  1. S BEX("BEGIN")=$O(^VEXHRX0(19080.1,"C",0)),BEX("BEGIN")=$P(BEX("BEGIN"),".")
  1. S Y=BEX("BEGIN") D DD^%DT
  1. ;cmi/anch/maw 7/22/2007 new lines for default date patch 3
  1. S X1=DT,X2=-10 D C^%DTC
  1. S Y=X D DD^%DT
  1. ;cmi/anch/maw end of mods patch 3
  1. ;S %DT("B")=Y,%DT("A")="BEGIN WITH DATE: " D ^%DT cmi/anch/maw 7/23/2007 orig line patch 3
  1. S %DT("B")=Y,%DT("A")="BEGIN WITH DATE: " D ^%DT ;cmi/anch/maw 7/23/2007 new line for default date patch 3
  1. ;IHS/CMI/DAY - Patch 4 - Allow begin time to be used
  1. ;S BEX("BEGIN")=$P(Y,".")
  1. S BEX("BEGIN")=Y
  1. Q
  1. ASKDATE2 ;GET ENDING DATE
  1. S BEX("END")=$O(^VEXHRX0(19080.1,"C","ZZZ"),-1)
  1. S BEX("END")=$P(BEX("END"),".")
  1. ;IHS/CMI/DAY - Patch 5 - Make sure End Date default is later than Begin Date
  1. I BEX("END")<BEX("BEGIN") S BEX("END")=BEX("BEGIN")
  1. ;
  1. S Y=BEX("END") D DD^%DT
  1. S %DT(0)=BEX("BEGIN"),%DT("B")=Y,%DT("A")="END WITH DATE: "
  1. D ^%DT
  1. ;IHS/CMI/DAY - Patch 4 - Allow End date to use Time
  1. S BEX("END")=Y
  1. I $P(Y,".",2)="" S BEX("END")=$P(Y,".")_"."_235959
  1. Q
  1. ;
  1. ASKSITE ;EP - Ask to limit by site
  1. K DIR
  1. S DIR("A")="Limit to transactions for "_$P($G(^DIC(4,DUZ(2),0)),U)
  1. S DIR("B")="Y"
  1. S DIR(0)="YO"
  1. D ^DIR
  1. K DIR
  1. I $D(DIRUT) S BEX("OUT")=1
  1. I Y=0 S BEXALL=0
  1. I Y=1 S BEXALL=1
  1. Q
  1. ;
  1. DEVICE ;DEVICE SELECTION
  1. K IO("Q"),ZTSK,ZTQUEUED
  1. S %ZIS="QML" D ^%ZIS I POP S BEX("OUT")=1 Q
  1. I $D(IO("Q")) D Q
  1. . S ZTRTN="MAINDQ^BEXRSRT"
  1. . S ZTDESC="BEXR DHCP REFILL TRANSACTIONS BY PATIENT"
  1. . S ZTSAVE("BEX*")=""
  1. . S ZTSAVE("DTIME")=""
  1. . D ^%ZTLOAD
  1. . K IO("Q")
  1. . I $D(ZTSK) D ;
  1. . . W !,"REQUEST QUEUED!"
  1. . . W !,"Task number: ",ZTSK,!
  1. . S BEX("OUT")=1
  1. Q
  1. SORT ;SORT ENTRIES TO BE PRINTED
  1. ;THIS SUBROUTINE BUILDS TEMPORARY GLOBAL ^TMP($J, IN CORRECT SORT ORDER
  1. K ^TMP($J) I $E(IOST,1,2)="C-" W !,"Sorting "
  1. S BEX("DATE")=$O(^VEXHRX0(19080.1,"C",BEX("BEGIN")),-1),BEX("D0")=""
  1. F S BEX("DATE")=$O(^VEXHRX0(19080.1,"C",BEX("DATE"))) Q:BEX("DATE")=""!(BEX("DATE")>BEX("END")) D ;
  1. . F S BEX("D0")=$O(^VEXHRX0(19080.1,"C",BEX("DATE"),BEX("D0"))) Q:BEX("D0")="" D ;
  1. .. Q:BEX("DATE")<BEX("BEGIN") ;maw to screen out date with 0 timestamp
  1. . . S BEX("NAME")=$P($G(^VEXHRX0(19080.1,BEX("D0"),0)),U)
  1. . . S BEX("RX")=$P($G(^VEXHRX0(19080.1,BEX("D0"),0)),U,3)
  1. . . ;cmi/anch/maw 2/1/2007 added next 3 lines to screen report by site
  1. . . N BEXSITE
  1. . . S BEXSITE=$P($G(^VEXHRX0(19080.1,BEX("D0"),0)),U,10)
  1. . . I $G(BEXALL)=1 Q:BEXSITE'=DUZ(2) ;screen out patients not at this site added $G for patch 3 7/19/2007
  1. . . K BEX("MED")
  1. . . ;IHS/CMI/DAY - Patch 5 - fix if no RX # in Tran Global
  1. . . S BEX("MED")="None"
  1. . . I $G(BEX("RX")) D
  1. . . . N BEXRXI
  1. . . . S BEXRXI=$O(^PSRX("B",BEX("RX"),0))
  1. . . . Q:'BEXRXI
  1. . . . S BEX("MED")=$$GET1^DIQ(52,BEXRXI,6)
  1. . . S BEX("DFN")=BEX("NAME")
  1. . . Q:BEX("NAME")=""
  1. . . S BEX("FOUND")=0
  1. . . ;get info from ^TMP($J, if possible
  1. . . I $G(^TMP($J,BEX("DFN")))'="" D ;
  1. . . . S BEX("NAME")=^TMP($J,BEX("DFN"))
  1. . . . S BEX("SSN")=$P(BEX("NAME"),U,2),BEX("NAME")=$P(BEX("NAME"),U)
  1. . . . S BEX("FOUND")=1
  1. . . ;get info from ^DPT if you don't have it in ^TMP
  1. . . I 'BEX("FOUND") D ;
  1. . . . S BEX("DPT")=$G(^DPT(BEX("NAME"),0))
  1. . . . ;S BEX("SSN")=$P(BEX("DPT"),U,9)
  1. . . . S BEX("SSN")=$$HRN^AUPNPAT(BEX("DFN"),DUZ(2)) ;cmi/maw 9/12/2002
  1. . . . I BEX("SSN")="" S BEX("SSN")="N/A"
  1. . . . S BEX("NAME")=$P(BEX("DPT"),U)
  1. . . . S ^TMP($J,BEX("DFN"))=BEX("NAME")_U_BEX("SSN")_U_BEX("MED")
  1. . . . I $E(IOST,1,2)="C-" W "."
  1. . . Q:BEX("NAME")=""
  1. . . S ^TMP($J,BEX("NAME"),BEX("SSN"),+BEX("DATE"),BEX("D0"))=BEX("MED")
  1. I '$D(^TMP($J)) S BEX("OUT")=1
  1. I BEX("OUT"),$E(IOST,1,2)="C-" W !,*7,"NO RECORDS IN SPECIFIED RANGE!" H 1
  1. Q
  1. PRT ;PRINT REPORT
  1. ;This subroutine loops through ^TMP($J, and calls
  1. ;compiled print template routine ^BEXRPAT.
  1. U IO ;cmi/maw added 6/9/2006 not printing to device only screen
  1. N D0,DXS,DC,N
  1. S (BEX("TOTAL"),BEX("PATTOT"))=0,BEX=""
  1. D NOW^%DTC S $P(%,".",2)=$E($P(%,".",2),1,4),BEX("HEADDATE")=%
  1. S Y=BEX("HEADDATE") D DD^%DT S BEX("HEADDATE")=$TR(Y,"@"," ")
  1. S BEX("HEAD")=$O(^DIPT("B","BEX TRANSACTIONS BY PATIENT",0))
  1. S BEX("HEAD")=$G(^DIPT(BEX("HEAD"),"H"))
  1. Q:BEX("HEAD")=""
  1. S DC=0,N(1)=1,BEX("LINE")=0
  1. S BEX("NAME")="@",(BEX("DATE"),BEX("D0"),BEX("SSN"),BEX("LASTSSN"),BEX("MED"))=""
  1. S BEX("NAME")=$O(^TMP($J,BEX("NAME")))
  1. S BEX("LASTSSN")=$O(^TMP($J,BEX("NAME"),BEX("LASTSSN"))),BEX("NAME")="@"
  1. PRT2 ;BEGINNING OF PRINTING LOOP
  1. D PRTHEAD
  1. F S BEX("NAME")=$O(^TMP($J,BEX("NAME"))) Q:BEX("NAME")=""!(BEX("OUT")) D ;
  1. . F S BEX("SSN")=$O(^TMP($J,BEX("NAME"),BEX("SSN"))) Q:BEX("SSN")=""!(BEX("OUT")) D ;
  1. . . I BEX("SSN")'=BEX("LASTSSN") D PRTTOTP S BEX("LASTSSN")=BEX("SSN")
  1. . . F S BEX("DATE")=$O(^TMP($J,BEX("NAME"),BEX("SSN"),BEX("DATE"))) Q:BEX("DATE")=""!(BEX("OUT")) D ;
  1. . . . F S BEX("D0")=$O(^TMP($J,BEX("NAME"),BEX("SSN"),BEX("DATE"),BEX("D0"))) Q:BEX("D0")=""!(BEX("OUT")) D ;
  1. . . . . I BEX("LINE")>(+IOSL-4) D PRTHEAD
  1. . . . . S BEX("MED")=$G(^TMP($J,BEX("NAME"),BEX("SSN"),BEX("DATE"),BEX("D0")))
  1. . . . . S D0=BEX("D0") W ! D ^BEXRPAT
  1. . . . . S BEX("LINE")=BEX("LINE")+1
  1. . . . . S BEX("PATTOT")=BEX("PATTOT")+1,BEX("TOTAL")=BEX("TOTAL")+1
  1. I 'BEX("OUT") D PRTTOTP,PRTOTAL
  1. E I $E(IOST,1,2)="C-" W !,*7,"Exiting report." H 1
  1. Q
  1. PRTHEAD ;PRINT PAGE HEADING
  1. ;IHS/CMI/DAY - Changed following read to use DIR
  1. I $E(IOST,1,2)="C-",DC'=0 K DIR S DIR(0)="E" D ^DIR K DIR
  1. I $E(X)="^" S BEX("OUT")=1 Q
  1. I $E(X)="?" G PRTHEAD
  1. I DC>0!($E(IOST,1,2)="C-") W #
  1. S DC=DC+1,BEX("LINE")=0
  1. W !,BEX("HEAD"),?53,BEX("HEADDATE")," PAGE ",DC,!
  1. D HEAD^BEXRPAT
  1. S BEX("LINE")=BEX("LINE")+9
  1. Q
  1. PRTTOTP ;PRINT TOTAL TRANSACTIONS FOR A PATIENT
  1. ;W !,?8,"Total transactions for patient = ",BEX("PATTOT"),! ;cmi/maw 9/26/2006 not wanted
  1. S BEX("PATTOT")=0 ;,BEX("LINE")=BEX("LINE")+2 ;cmi/anch/maw 8/16/2007 patch 3
  1. Q
  1. PRTOTAL ;PRINT TOTAL TRANSACTIONS FOR REPORT
  1. S BEX("END")=$P(BEX("END"),".")
  1. S BEX("BEGIN")=$E(BEX("BEGIN"),4,5)_"/"_$E(BEX("BEGIN"),6,7)_"/"_$E(BEX("BEGIN"),2,3)
  1. S BEX("END")=$E(BEX("END"),4,5)_"/"_$E(BEX("END"),6,7)_"/"_$E(BEX("END"),2,3)
  1. W !,?8,"Total transactions for date range ",BEX("BEGIN")," through ",BEX("END")," = ",BEX("TOTAL")
  1. Q