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

BARMPAS3.m

Go to the documentation of this file.
  1. BARMPAS3 ; IHS/SD/LSL - Patient Account Statement Print ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**19,20,21,23**;OCT 26, 2005
  1. ;
  1. ; IHS/SD/LSL - 05/13/03 - V1.7 Patch 2
  1. ;
  1. ; ********************************************************************
  1. ;FEB 2012 PETER OTTIS IHS/SD/OIT LINE PRINT+1 ADDED TO GET REPORT HEADER WHEN PRINTED (QUEUED)
  1. ;HEAT#80718 21-AUG-2012 P.OTTIS ADDED SORTING OPTION BY PATNAME
  1. ;HEAT #91646 DROPPED KILLING COLLECTED DATA (RETAIN DISFUNCT) - WILL BE HANDLED BY THE NEW 'PUR' OPTION
  1. Q
  1. ;
  1. GETHDR ;EP
  1. ; Find Patient Account Header
  1. K DIC,DA,DR
  1. S DIC="^BAR(90052.03," ; A/R Letters & Text File
  1. S DIC(0)="LX"
  1. S X="ACCOUNT STATEMENT HEADER"
  1. D ^DIC
  1. ;
  1. ; Account Header not found
  1. I +Y<0 D Q
  1. . W !,$$CJ^XLFSTR("ACCOUNT STATEMENT HEADER entry not found in A/R LETTERS & TEXT File",IOM)
  1. . W !,$$CJ^XLFSTR("Please create the entry before proceeding with this print.",IOM)
  1. . D EOP^BARUTL(0)
  1. ;
  1. ; Retrieve and store header in XTMP
  1. S BARHDRDA=+Y
  1. D ENP^XBDIQ1(90052.03,BARHDRDA,100,"BARHDR(")
  1. K BARHDR("ID")
  1. K ^XTMP("BARPAS"_BARRUNDT,"HDR")
  1. M ^XTMP("BARPAS"_BARRUNDT,"HDR")=BARHDR(100)
  1. K BARHDR
  1. Q
  1. ; ********************************************************************
  1. ;
  1. PGHDR ; EP
  1. ; Print Patient Account header and demographics
  1. ; Write Billing Office Address
  1. K BARPT,BARHRN
  1. S BARPG=BARPG+1
  1. ; BARPG>1 W !
  1. ;W @IOF W #
  1. W $$EN^BARVDF("IOF"),! ;
  1. ;W @IOF ;Original code restored
  1. S $P(BAREQUAL,"=",IOM-2)=""
  1. S $P(BARDASH,"-",IOM-2)=""
  1. D HDR
  1. ;
  1. ; Gather Patient Demographics
  1. S BARDFN=$$GET1^DIQ(90050.02,BARACDA,1.001) ; IEN to Patient file
  1. S BARPTNM=$$GET1^DIQ(9000001,BARDFN,.01) ; Patient Name
  1. S BARPTAGE=$$GET1^DIQ(9000001,BARDFN,1102.99) ; Patient Age
  1. S BARADDR=$$GET1^DIQ(9000001,BARDFN,1602.2) ; Patient street Address
  1. S BARCITY=$$GET1^DIQ(9000001,BARDFN,1603.2) ; Patient City
  1. S BARSTATE=$$GET1^DIQ(2,BARDFN,.115,"I") ; Patient State IEN
  1. S:+BARSTATE BARSTATE=$$GET1^DIQ(5,BARSTATE,1) ; State code
  1. S BARZIP=$$GET1^DIQ(9000001,BARDFN,1605.2) ; Patient Zip
  1. S BARIENS=DUZ(2)_","_BARDFN_","
  1. S BARHRN=$$GET1^DIQ(9000001.41,BARIENS,.02) ; Patient Chart number
  1. ;
  1. ; Write Patient Name and Address
  1. I BARPTAGE<18 W !,?5,"TO THE PARENTS OF"
  1. W !?5,BARPTNM
  1. W ?55,"STATEMENT PERIOD"
  1. W !?5,BARADDR
  1. W ?55,$$SDT^BARDUTL(BARDTB)," - ",$$SDT^BARDUTL(BARDTE)
  1. W !?5,BARCITY,", ",BARSTATE,", ",BARZIP
  1. W !!!,BAREQUAL
  1. W !,HL1
  1. W !,HL2
  1. W !,BAREQUAL
  1. Q
  1. ; ********************************************************************
  1. ;
  1. HDR ; EP
  1. ; Write Billing Office Address
  1. W !,?2,"Statement Date: ",$$SDT^BARDUTL(DT),?70,"Page: ",BARPG,!
  1. F I=1:1 Q:'$D(^XTMP("BARPAS"_BARRUNDT,"HDR",I)) W !,^(I)
  1. W !
  1. Q
  1. ; ********************************************************************
  1. ;
  1. PG(L) ; EP
  1. I ((IOSL-$Y)<L)&($E(IOST)="P") D PGHDR Q ; Printer
  1. Q:IOSL>$Y
  1. D PAZ^BARRUTL
  1. I $D(DTOUT)!$D(DUOUT)!$D(DIROUT) S BARF1=1 Q
  1. D PGHDR
  1. ;end 1.8*20
  1. Q
  1. ; ********************************************************************
  1. ;
  1. EXIT ; EP
  1. I AZKILL=0 K ^XTMP("AZLKPS",AZJB)
  1. K AZJB,AZKILL
  1. Q
  1. ;
  1. ;IHS/SD/PKD 1.8*19 Moved here from BARMPAS2 due
  1. ; to size limitations per SAC
  1. PRTASK ; EP
  1. ; Called from Print Patient Accounts' Statements AR Menu Option
  1. D SELECT ; Select run to Print
  1. Q:'$D(BARRUNDT) ; No run selected
  1. S BARSRTBY=$G(^XTMP("BARPAS"_BARRUNDT,0,"SORTBY"),-1) ;P.OTT
  1. I BARSRTBY<0 D Q
  1. . W !!,"THIS BATCH OF STATEMENTS IS NOT COMPATIBLE WITH THE NEW FILE STRUCTURE."
  1. . W !,"WILL RUN REIDEXING FIRST, THEN TRY AGAIN",!!
  1. . D REINDEX^BARMPAS5("BARPAS"_BARRUNDT)
  1. . D EOP^BARUTL(0)
  1. . Q
  1. ;;;D RETAIN ; Keep run to print again?
  1. D GETHDR^BARMPAS3 ; Get Statement Header
  1. Q:'$D(BARHDRDA) ; Not in A/R Letters and Text File
  1. S BARQ("RC")="COMPUTE^BARMPAS2" ; Build tmp global with data
  1. S BARQ("RP")="PRINT^BARMPAS3" ; Print reports from tmp global
  1. S BARQ("NS")="BAR" ; Namespace for variables
  1. S BARQ("RX")="EXIT^BARMPAS2" ; Clean-up routine
  1. D GETMSG^BARMPAS
  1. D ^BARDBQUE ; Double queuing
  1. D PAZ^BARRUTL ; Press return to continue
  1. Q
  1. ; ***
  1. SELECT ;
  1. K BARRUNDT
  1. ; Look for data in temp global
  1. S BAR1=$O(^XTMP("BARPAS"))
  1. I BAR1'["BARPAS" D Q
  1. . W !!!,$$CJ^XLFSTR("NO PATIENT ACCOUNT STATEMENT RUNS TO CHOOSE FROM",IOM)
  1. . D EOP^BARUTL(0)
  1. ;
  1. ; Display tasked runs to choose from
  1. W !,"Select Account Run time: ",!
  1. S BARCNT=0
  1. S BAR1="BARPAS" F S BAR1=$O(^XTMP(BAR1)) Q:BAR1'["BARPAS" D
  1. . S BARCNT=BARCNT+1 ; Line counter
  1. . S BARDT=$P(BAR1,"BARPAS",2,99) ; Date of Run
  1. . S BARRUN(BARCNT)=BARDT ; Array of runs
  1. . S Y=BARDT
  1. . D DD^%DT
  1. . W !,$J(BARCNT,2),?5,Y ; Line count,date run
  1. . I '$D(^XTMP("BARPAS"_BARDT,0,"SORTBY")) W " not compatible" Q
  1. . S BARSRTBY=$G(^XTMP("BARPAS"_BARDT,0,"SORTBY"))+1
  1. . ;;;I BARSRTBY W " sorted by ",$P("Billing location, Account Number;Billing location, Patient name",";",BARSRTBY)
  1. ;
  1. ; Select run to print
  1. K DIR
  1. S DIR(0)="NO^1:"_BARCNT
  1. D ^DIR
  1. I '+Y D Q
  1. . W !,"NONE SELECTED",!
  1. . D EOP^BARUTL(0)
  1. S BARRUNDT=BARRUN(+Y)
  1. K BARRUN ; IHS/SD/PKD 10/12/10 KILL ARRAY
  1. Q
  1. ; ***
  1. ;
  1. RETAIN ;
  1. W !,"DO YOU WISH TO RETAIN THE RUN TO PRINT AGAIN ?"
  1. K DIR
  1. S DIR(0)="Y"
  1. S DIR("B")="N"
  1. D ^DIR
  1. S BARKILL=Y
  1. Q
  1. ; ***
  1. ;
  1. PRINT ;EP
  1. D GETHDR ;21 FEB 2012 P.OTT IHS/SD/OIT ADDED FOR QUEUED REPORTS
  1. S BARTMP=$G(^XTMP("BARPAS"_BARRUNDT,0,"DT"))
  1. S BARSRTBY=$G(^XTMP("BARPAS"_BARRUNDT,0,"SORTBY"),0) ;P.OTT
  1. S BARDTB=$P(BARTMP,U) ; Statement begin date
  1. S BARDTE=$P(BARTMP,U,2) ; Statement end date
  1. S HL1=" BILLED INSURANCE PATIENT ADJUSTED INSURANCE PATIENT"
  1. S HL2=" AMOUNT PAYMENT PAYMENT AMOUNT OUTSTANDING AMOUNT DUE"
  1. D PRINT^BARMPAS2
  1. Q
  1. ;
  1. PAZ ; Add extra line feeds to force alignment
  1. ; IHS/SD/PKD copied from PAZ^BARRUTL but for printers
  1. ; BARRUTL quits if not terminal
  1. Q ; IHS/SD/PKD 1.8*20 removed didn't work for network printers
  1. I '$D(IO("Q")) D
  1. .F W ! Q:$Y>(IOSL+3)
  1. Q