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

BARPUCU.m

Go to the documentation of this file.
  1. BARPUCU ; IHS/SD/LSL - UNALLOCATED COMMAND PROCESSOR ; 06/09/2008
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**4,6,19,21**;OCT 26, 2005
  1. ;** posting utilities
  1. ;
  1. ; IHS/SD/LSL - 09/23/02 - V1.6 Patch 3 - HIPAA
  1. ; Don't allow updating of other files if Adjustment Category
  1. ; is PENDING or GENERAL INFORMATION.
  1. ;
  1. ; IHS/SD/LSL - 11/27/02 - V1.7 - QAA-1200-130051
  1. ; Added quit logic if error in creating a transaction
  1. ;
  1. ; ********************************************************************
  1. Q
  1. ;
  1. AMT(X,BARMIN,BARMAX) ;EP - ** number function
  1. ;** quits with "^" to exit
  1. ;** quits with "?" for incorrect entry
  1. I '$D(X) Q "^"
  1. I X["^"!('$L(X)) Q "^"
  1. S:X["$" X=$P(X,"$",2)
  1. I X'?."-".N.1".".2N Q "?"
  1. I $D(BARMIN),X<BARMIN Q "?"
  1. I $D(BARMAX),X>BARMAX Q "?"
  1. Q X
  1. ; *********************************************************************
  1. ;
  1. COMHLP ;EP - help display
  1. N X,J
  1. W $$EN^BARVDF("IOF"),!!
  1. S X="Select Command Options"
  1. W ?IOM-$L(X)\2,X
  1. W !?IOM-$L(X)\2 F J=1:1:$L(X) W "-"
  1. W !!
  1. D:$D(BARHLP)<10 SETHLP
  1. S J=""
  1. F S J=$O(BARHLP(J)) Q:J="" W !?2,BARHLP(J)
  1. W !!
  1. Q
  1. ; *********************************************************************
  1. ;
  1. SETHLP ;EP - set help
  1. S BARHLP("A")="A = Adjustments (Write-Off, Deductible, Non-Covered, Non-Pay, Penalty)"
  1. S BARHLP("C")="C = Itemized Charges - allows posting by line item"
  1. S BARHLP("D")="D = Patient Demographics"
  1. S BARHLP("E")="E = Edit a transaction not yet posted to A/R"
  1. S BARHLP("I")="I = Insurer Demographics"
  1. S BARHLP("H")="H = History of Bill Transactions ($ only)"
  1. S BARHLP("M")="M = Message"
  1. S BARHLP("P")="P = Payments"
  1. S BARHLP("Q")="Q = Quit - Ends the data entry for this Patient and allows for posting to A/R"
  1. S BARHLP("R")="R = Rollover"
  1. S BARHLP("T")="T = Toggle Display - Current transaction list."
  1. ; IHS/SD/PKD 1.8*19 change spelling
  1. ;S BARHLP("B")="B = Bill Enquire"
  1. S BARHLP("B")="B = Bill Inquire"
  1. Q
  1. ; *********************************************************************
  1. ;
  1. POSTTX ;EP - poster
  1. ;IHS/SD/TPF BAR*1.8*21 8/3/2011 HEAT20490
  1. I $$NOTOPEN^BARUFUT(.DUZ,$G(UFMSESID)) Q ;IS SESSION STILL OPEN
  1. W !!,"Please wait... Posting Transactions."
  1. K DD,DO,BARBLV
  1. N DA,DR,DIE,DIC,DIQ,BARTT,BARZZZZ
  1. S BARAC=BARTX(6,"I")
  1. S DIC="^BARTR(DUZ(2),"
  1. S DIC(0)="L"
  1. S BARLIN=0
  1. F S BARLIN=$O(BARTR(BARLIN)) Q:'BARLIN D
  1. . S BARBDFN=$O(^BARTMP($J,"B",BARLIN,""))
  1. . S BARROLL(BARBDFN)=""
  1. . S BARBLV(15)=$$GET1^DIQ(90050.01,BARBDFN,15,"I")
  1. . S BARCOL=BARTX(14,"I") ;BAR*1.8*6 DD 4.2.5
  1. . S BARITM=BARTX(15) ;BAR*1.8*6 DD 4.2.5
  1. . S BARZZZZ=1 ;DON'T CHECK BATCH/ITEM;BAR*1.8*6 DD 4.2.5
  1. . D CKBAL^BARPSTU(BARLIN,BARBLV(15)) ;BAR*1.8*4 DD 4.1.7.2
  1. . Q:BARSTOP ;BAR*1.8*4 DD 4.1.7.2
  1. . S (BARBTOT,BARJ)=0
  1. . F S BARJ=$O(BARTR(BARLIN,BARJ)) Q:'BARJ D
  1. .. S BARREC=BARTR(BARLIN,BARJ)
  1. .. S BARTXT=$P(BARREC,U,1)
  1. .. S BARAMT=$P(BARREC,U,2)
  1. .. Q:+BARAMT=0
  1. .. S BARBTOT=BARBTOT+BARAMT
  1. .. S BARCAT=$P(BARREC,U,3)
  1. .. I BARTXT="P" D
  1. ... S BARTT=$O(^BARTBL("B","PAYMENT",""))
  1. ... S BARUCAC=$$GET1^DIQ(90050.03,+BARTX("ID"),6,"I")
  1. ... Q:'BARUCAC
  1. ... S BARBLV(304)=$$GET1^DIQ(90050.02,BARUCAC,304,"I")
  1. ... S DA=BARUCAC
  1. ... S DR="304////^S X=BARBLV(304)-BARAMT"
  1. ... S DIE="^BARAC(DUZ(2),"
  1. ... S DIDEL=90050
  1. ... D ^DIE
  1. ... K DIDEL
  1. .. S:BARTXT="A" BARTT=$O(^BARTBL("B","ADJUST ACCOUNT",""))
  1. .. S BARATYP=$P(BARREC,U,4)
  1. .. D P1
  1. .K ^BARTMP($J,BARBDFN)
  1. ; -------------------------------
  1. ;
  1. FINISH ;
  1. Q:BARSTOP ;BAR*1.8*4 DD 4.1.7.2
  1. K DR,DIC
  1. I (+BARTX(2,"I"))-(+BARPMT)'=0 D G CLOSE
  1. . D ENP^XBDIQ1("^BARTR(DUZ(2),",+BARTX("ID"),"6;8;10;11;14;15;101;104;105","BARSIB(","0I")
  1. . S BARREM=(+BARTX(2,"I"))-(+BARPMT)
  1. . S DIC="^BARTR(DUZ(2),"
  1. . S DIC(0)="L"
  1. . S DLAYGO=90050
  1. . L +^BARTR(DUZ(2)):2 F D NOW^%DTC S X=% I '$D(^BARTR(DUZ(2),"B",X)) L -^BARTR(DUZ(2)) D ^DIC K DLAYGO Q
  1. . S BARSIB=+Y
  1. . I BARSIB<1 D G FINISH
  1. . . W !,"Couldn't create a new UN-ALLOCATED transaction. The system is trying again.",!
  1. . S DA=BARSIB
  1. . S DIE="^BARTR(DUZ(2),"
  1. . S DR="2////^S X=BARREM"
  1. . S DR=DR_";12////^S X=DT"
  1. . S DR=DR_";13////^S X=DUZ"
  1. . S DR=DR_";201////^S X=+BARTX(""ID"")"
  1. . S DR=DR_";6////^S X=BARSIB(6,""I"")"
  1. . S DR=DR_";8////^S X=BARSIB(8,""I"")"
  1. . S DR=DR_";10////^S X=BARSIB(10,""I"")"
  1. . S DR=DR_";11////^S X=BARSIB(11,""I"")"
  1. . S DR=DR_";14////^S X=BARSIB(14,""I"")"
  1. . S DR=DR_";15////^S X=BARSIB(15,""I"")"
  1. . S DR=DR_";101////^S X=BARSIB(101,""I"")"
  1. . S DR=DR_";104////^S X=BARSIB(104,""I"")"
  1. . S DR=DR_";105////^S X=BARSIB(105,""I"")"
  1. . S DIDEL=90050
  1. . D ^DIE
  1. . K DIDEL
  1. . S DIE="^BARTR(DUZ(2),"
  1. . S DR="2////^S X=BARPMT"
  1. . S DR=DR_";105////^S X=""R"""
  1. . S DR=DR_";202////^S X=+BARSIB"
  1. . S DA=+BARTX("ID")
  1. . S DIDEL=90050
  1. . D ^DIE
  1. . K DIDEL
  1. . Q
  1. I (+BARTX(2,"I"))-(+BARPMT)=0 D
  1. . S DIE="^BARTR(DUZ(2),"
  1. . S DR="105////^S X=""R"""
  1. . S DA=+BARTX("ID")
  1. . S DIDEL=90050
  1. . D ^DIE
  1. . K DIDEL
  1. ; -------------------------------
  1. ;
  1. CLOSE ;
  1. ;K ^BARTMP($J)
  1. K BARTX,BARREM,BARSIB,BARTR,BARPMT,BARADJ,BARCAT,BARATYP,BARBTOT,BARBLV
  1. Q
  1. ; *********************************************************************
  1. ;
  1. P1 ;
  1. S DIC="^BARTR(DUZ(2),"
  1. S DIC(0)="L"
  1. S BARCR=$S(+BARAMT>0:BARAMT,1:"")
  1. S BARDB=$S(+BARAMT<0:BARAMT,1:"")
  1. S BARDB=-BARDB
  1. S BARPT=+BARPAT
  1. K BARCOL
  1. D ENP^XBDIQ1("^BARCOL(DUZ(2),",BARTX(14,"I"),"8;9;10","BARCOL(","0I")
  1. S BARPAR=BARCOL(8,"I")
  1. S BARASFAC=BARCOL(9,"I")
  1. S BARSECT=BARCOL(10,"I")
  1. S DA=BARTX(15,"I")
  1. S DA(1)=BARTX(14,"I")
  1. S BARSITE=$$GET1^DIQ(90051.1101,.DA,8,"I")
  1. PX ;
  1. S X=$$NEW^BARTR
  1. S BARTRIEN=X
  1. I X<1 D MSG^BARTR(BARBDFN) Q
  1. S DA=X
  1. S DIE=90050.03
  1. S DR="2////^S X=BARCR"
  1. S DR=DR_";3////^S X=BARDB"
  1. S DR=DR_";4////^S X=BARBDFN"
  1. S DR=DR_";5////^S X=BARPT"
  1. S DR=DR_";6////^S X=BARAC"
  1. S DR=DR_";8////^S X=BARPAR"
  1. S DR=DR_";9////^S X=BARASFAC"
  1. S DR=DR_";10////^S X=BARSECT"
  1. S DR=DR_";11////^S X=BARSITE"
  1. S DR=DR_";12////^S X=DT"
  1. S DR=DR_";14////^S X=BARTX(14,""I"")"
  1. S DR=DR_";15////^S X=BARTX(15,""I"")"
  1. S DR=DR_";13////^S X=DUZ"
  1. S DR=DR_";101////^S X=BARTT"
  1. I BARTXT="A" D
  1. . S DR=DR_";102////^S X=BARCAT"
  1. . S DR=DR_";103////^S X=BARATYP"
  1. I BARTXT="P" S DR=DR_";201////^S X=+BARTX(""ID"")"
  1. S DR=DR_";10////^S X=$$VALI^XBDIQ1(200,DUZ,29)"
  1. S DIDEL=90050
  1. D ^DIE
  1. K DIDEL
  1. I ",21,22,"[(","_BARCAT_",") Q
  1. D TR^BARTDO(BARTRIEN)
  1. W "."
  1. DONE ;
  1. Q