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

BARRAOI.m

Go to the documentation of this file.
  1. BARRAOI ; IHS/SD/LSL - AGE OPEN ITEMS RPT JAN 16,1997 ;08/20/2008
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**7**;OCT 26, 2005
  1. ;
  1. ; IHS/SD/LSL - 03/11/03 - Routine created
  1. ; Replaces BARRAGED
  1. ; MODIFIED XTMP FILE NAME TO TMP TO MEET SAC REQUIREMENTS;MRS:BAR*1.8*7 IM29892
  1. ; ********************************************************************
  1. EN ; EP
  1. ;
  1. K BARY,BAR,BARP
  1. S BAR("PRIVACY")=1 ; Privacy act applies
  1. D:'$D(BARUSR) INIT^BARUTL ; Set A/R basic variable
  1. S BAR("LOC")=$$GET1^DIQ(90052.06,DUZ(2),16) ; BILLING or VISIT
  1. I BAR("LOC")="" S BAR("LOC")="VISIT"
  1. D ASKQUES ; Ask user questions
  1. Q:$D(DTOUT)!$D(DUOUT)
  1. D SETHDR
  1. S BARQ("RC")="COMPUTE^BARRAOI" ; Compute routine
  1. S BARQ("RP")="PRINT^BARRAOI" ; Print routine
  1. S BARQ("NS")="BAR" ; Namespace for variables
  1. S BARQ("RX")="POUT^BARRUTL" ; Clean-up routine
  1. D ^BARDBQUE ; Double queuing
  1. D PAZ^BARRUTL
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ASKQUES ;
  1. ; Ask user questions
  1. D MSG^BARRSEL ; Message about BILL/VIS loc
  1. D LOC^BARRSL1 ; Ask loc - return BARY("LOC")
  1. Q:$D(DTOUT)!($D(DUOUT)) ; Q if time or "^" out
  1. W:'$D(BARY("LOC")) "ALL"
  1. D AGE ; Ask age group - return BARAGE
  1. Q:$D(DTOUT)!($D(DUOUT))
  1. D ASKAP ; Ask Patient or Insurer
  1. Q:$D(DTOUT)!($D(DUOUT))
  1. I BARAP="P" D Q:($D(DTOUT)!($D(DUOUT)))
  1. . D ASKPAT
  1. . Q:$D(DTOUT)!($D(DUOUT))
  1. . W:'$D(BARY("PAT")) "ALL"
  1. I BARAP="I" D Q:($D(DTOUT)!($D(DUOUT)))
  1. . D ACCT
  1. . Q:$D(DTOUT)!($D(DUOUT))
  1. . W:'$D(BARY("ACCT")) "ALL"
  1. K DIR,DIC,X,Y,DA
  1. Q
  1. ; ********************************************************************
  1. ;
  1. AGE ;
  1. ; Ask user to select age group for bill
  1. K DIR
  1. S DIR(0)="S^1:0-30;2:31-60;3:61-90;4:91-120;5:120+"
  1. S DIR("A")="Select aging range for bills"
  1. D ^DIR
  1. I Y<0!($D(DUOUT))!($D(DTOUT)) Q
  1. S BAR("SELECTION")=Y(0)
  1. S:Y=5 BAR("SELECTION")="OVER 120"
  1. S BARAGE=$S(Y=1:7.3,Y=2:7.4,Y=3:7.5,Y=4:7.6,Y=5:7.7)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ASKAP ;
  1. ; Ask user if want report by insurer or payer
  1. S (BARY("OBAL"),BARY("STCR"))=1 ; Need to loop "OBAL" x-ref
  1. S BARAP="I"
  1. K DIR
  1. S DIR(0)="SO^I:INSURER;P:PATIENT"
  1. S DIR("B")="I"
  1. S DIR("A")="Should the report contain data for Insurer or Patient (I/P)"
  1. D ^DIR
  1. I Y=""!($D(DUOUT))!($D(DTOUT)) Q
  1. S BARAP=Y
  1. S BARAP("NAME")=Y(0)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ASKPAT ;
  1. ; Ask user for Patient Name
  1. K DIC,BARZ
  1. S DIC="^AUPNPAT("
  1. S DIC(0)="IAEMQZ"
  1. S DIC("A")="Select Patient: "
  1. S DIC("S")="I $D(^BARBL(DUZ(2),""ABC"",Y))"
  1. D ^DIC
  1. K DIC
  1. Q:+Y<0
  1. K BARY("OBAL"),BARY("STCR")
  1. S BARY("PAT")=+Y
  1. S BARY("PAT","NM")=$P($G(^DPT(+BARY("PAT"),0)),U)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ACCT ;
  1. ; Ask user for AR Account
  1. W !
  1. K DIC
  1. S DIC("A")="Select Insurer or press <RETURN> for all Insurers: "
  1. S DIC="90050.02"
  1. S DIC(0)="AEMQZ"
  1. S DIC("S")="I $P(^(0),U,10)=$$GET1^DIQ(200,DUZ,29,""I"")"
  1. K DD,DO
  1. D ^DIC
  1. Q:$D(DTOUT)!($D(DUOUT))
  1. Q:+Y<0
  1. K BARY("OBAL"),BARY("STCR")
  1. S BARY("ACCT")=+Y
  1. S BARY("ACCT","NM")=Y(0,0)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SETHDR ;
  1. ; Set Header array
  1. S BAR("HD",0)=""
  1. S BAR("TXT")="Aged Open Items Report"
  1. S BAR("LVL")=0
  1. S BAR("CONJ")=""
  1. D CHK^BARRHD ; Line 1 of Report header
  1. S BAR("LVL")=BAR("LVL")+1
  1. S BAR("HD",BAR("LVL"))=""
  1. S BAR("TXT")="Bills "_BAR("SELECTION")_" days old"
  1. S BAR("CONJ")="for "
  1. D CHK^BARRHD
  1. S BAR("TXT")="ALL"
  1. I $D(BARY("LOC")) S BAR("TXT")=$P(^DIC(4,BARY("LOC"),0),U)
  1. I BAR("LOC")="BILLING" D
  1. . S BAR("TXT")=BAR("TXT")_" Visit location(s) under "
  1. . S BAR("TXT")=BAR("TXT")_$P(^DIC(4,DUZ(2),0),U)
  1. . S BAR("TXT")=BAR("TXT")_" Billing Location"
  1. E S BAR("TXT")=BAR("TXT")_" Visit location(s) regardless of Billing Location"
  1. S BAR("CONJ")="at "
  1. D CHK^BARRHD
  1. Q
  1. ; ********************************************************************
  1. ; ********************************************************************
  1. ;
  1. COMPUTE ; EP
  1. S BAR("SUBR")="BAR-AOI"
  1. S BARP("RTN")="BARRAOI"
  1. K ^TMP($J,"BAR-AOI")
  1. I BAR("LOC")="BILLING" D LOOP^BARRUTL Q
  1. S BARDUZ2=DUZ(2)
  1. S DUZ(2)=0
  1. F S DUZ(2)=$O(^BARBL(DUZ(2))) Q:'DUZ(2) D LOOP^BARRUTL
  1. S DUZ(2)=BARDUZ2
  1. Q
  1. ; ********************************************************************
  1. ;
  1. DATA ; EP
  1. S BARP("HIT")=0
  1. D BILL^BARRCHK
  1. Q:'BARP("HIT")
  1. S BARAMT=$$GET1^DIQ(90050.01,BAR,BARAGE)
  1. Q:'+BARAMT ; Bill not right age
  1. S BARLOC=""
  1. S:BAR("L")]"" BARLOC=$$VAL^XBDIQ1(4,BAR("L"),.01)
  1. S:BARLOC="" BARLOC="No Visit Location" ; Visit Location Name
  1. S BARACCT=""
  1. S:BAR("I")]"" BARACCT=$$VAL^XBDIQ1(90050.02,BAR("I"),.01)
  1. S:BARACCT="" BARACCT="No A/R Account" ; A/R Account Name
  1. S BARPAT=""
  1. S:BAR("P")]"" BARPAT=$$VAL^XBDIQ1(9000001,BAR("P"),.01)
  1. S:BARPAT="" BARPAT="No Patient Name" ; Patient Name
  1. S BARBILL=$P(BAR(0),U) ; Bill Number
  1. ;
  1. S ^TMP($J,"BAR-AOI",BARLOC,BARACCT,BARPAT,BARBILL)=BAR("D")_U_BARAMT
  1. ;
  1. S BARHOLD=$G(^TMP($J,"BAR-AOI",BARLOC,BARACCT))
  1. S ^TMP($J,"BAR-AOI",BARLOC,BARACCT)=BARHOLD+BARAMT
  1. ;
  1. S BARHOLD=$G(^TMP($J,"BAR-AOI",BARLOC))
  1. S ^TMP($J,"BAR-AOI",BARLOC)=BARHOLD+BARAMT
  1. ;
  1. S BARHOLD=$G(^TMP($J,"BAR-AOI"))
  1. S ^TMP($J,"BAR-AOI")=BARHOLD+BARAMT
  1. Q
  1. ; ********************************************************************
  1. ; ********************************************************************
  1. ;
  1. PRINT ; EP
  1. K BARHOLD,BARAMT,BARBILL,BARPAT,BARACCT,BARLOC,BAR("D")
  1. S BAR("PG")=0
  1. S BAR("COL")="W !?6,""PATIENT NAME"",?30,""BILL NUMBER"",?56,""DOS"",?68,BAR(""SELECTION"")"
  1. D HDB^BARRPSRB
  1. I '$D(^TMP($J,"BAR-AOI")) D Q ; No data - quit
  1. . W !!!!!?25,"*** NO DATA TO PRINT ***"
  1. . D EOP^BARUTL(0)
  1. S BARLOC=""
  1. F S BARLOC=$O(^TMP($J,"BAR-AOI",BARLOC)) Q:BARLOC="" D LOC Q:$G(BAR("F1"))
  1. D TOTAL
  1. Q
  1. ; ********************************************************************
  1. ;
  1. LOC ;
  1. ; For each Location do
  1. W !?5,"VISIT Location: ",BARLOC
  1. S BARACCT=""
  1. F S BARACCT=$O(^TMP($J,"BAR-AOI",BARLOC,BARACCT)) Q:BARACCT="" D ACCOUNT Q:$G(BAR("F1"))
  1. D LOCTOTAL
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ACCOUNT ;
  1. ; For each AR Account w/in Visit location Do
  1. W !?10,"A/R Account: ",BARACCT,!
  1. S BARPAT=""
  1. F S BARPAT=$O(^TMP($J,"BAR-AOI",BARLOC,BARACCT,BARPAT)) Q:BARPAT="" D PAT Q:$G(BAR("F1"))
  1. D ACCTOTAL
  1. Q
  1. ; ********************************************************************
  1. ;
  1. PAT ;
  1. ; For each patient w/in AR Account w/in Visit location do
  1. S BARBILL=""
  1. F S BARBILL=$O(^TMP($J,"BAR-AOI",BARLOC,BARACCT,BARPAT,BARBILL)) Q:BARBILL="" D DETAIL Q:$G(BAR("F1"))
  1. Q
  1. ; ********************************************************************
  1. ;
  1. DETAIL ;
  1. ; Write detail line of report
  1. I $Y>(IOSL-5) D HD^BARRPSRB Q:$G(BAR("F1"))
  1. S BARTMP=$G(^TMP($J,"BAR-AOI",BARLOC,BARACCT,BARPAT,BARBILL))
  1. W !?3,$E(BARPAT,1,25) ; Patient Name
  1. W ?30,$E(BARBILL,1,20) ; Bill Name
  1. W ?52,$$SDT^BARDUTL($P(BARTMP,U)) ; DOS
  1. W ?64,$J($FN($P(BARTMP,U,2),",",2),12) ; $ amt aged
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ACCTOTAL ;
  1. ; A/R Account total
  1. W !?64,"------------"
  1. W !?5," * ",$E(BARACCT,1,45)," TOTAL"
  1. W ?63,$J($FN(^TMP($J,"BAR-AOI",BARLOC,BARACCT),",",2),13),!
  1. Q
  1. ; ********************************************************************
  1. ;
  1. LOCTOTAL ;
  1. ; Visit location total
  1. W ?64,"------------"
  1. W !?5," ** ",$E(BARLOC,1,45)," TOTAL"
  1. W ?63,$J($FN(^TMP($J,"BAR-AOI",BARLOC),",",2),13),!
  1. Q
  1. ; ********************************************************************
  1. ;
  1. TOTAL ;
  1. ; Report Total
  1. W ?64,"============"
  1. W !?5,"*** REPORT TOTAL"
  1. W ?62,$J($FN(^TMP($J,"BAR-AOI"),",",2),14)
  1. Q