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

BARUTL.m

Go to the documentation of this file.
  1. BARUTL ; IHS/SD/LSL - UTILITY PROGRAM FOR FAC A/R ; 07/25/2010
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**13,19,21,23**;OCT 26, 2005
  1. ;;
  1. ; IHS/SD/LSL - 04/04/02 - V1.6 Patch 2 - NOIS XJG-0302-160095
  1. ; Added FIND3PB function to find bill in 3P Bill file if given
  1. ; A/R DUZ(2) and BILL IEN
  1. ;
  1. ; IHS/SD/SDR - 4/4/2002 - V1.6 Patch 2 - NOIS XXX-0202-200181
  1. ; Added LWC line to to do converting to all lower case
  1. ;
  1. ; IHS/SD/LSL - 09/11/02 - V1.6 Patch 3 - HIPAA 276/277
  1. ; Added INSIEN function to return the IEN of the INSURER FILE if
  1. ; passed the DUZ(2) AND (A/R Bill IEN or the A/R Account IEN)
  1. ;
  1. ; IHS/SD/LSL - 09/11/02 - V1.6 Patch 3 - HIPAA 276/277
  1. ; Added SBR function to return the Subscriber if passed the A/R
  1. ; BILL IEN and DUZ(2)
  1. ;
  1. ; IHS/SD/LSL - 08/25/03 - V1.7 Patch 2
  1. ; Modify INSIEN to quit with values outside of dot structure
  1. ;
  1. ; IHS/SD/SDR 5/26/09 HEAT4301 BAR*1.8*13
  1. ; Modify patch number in filename so batches are formatted
  1. ; correctly by the HUB
  1. ; TMM 07/25/2010 V1.8*19 - Modify A/R Statistical report to
  1. ; include (Emloyer) Group Plan data. requirement 4PMS10022.
  1. ; P.OTT 08/12/2013 FIXED $$SBR: QUIT WITH VALUE
  1. ; Fixed BARPOLN (Policy Number reference to 702)
  1. ; HEAT#131103 8/28/2013 FIXED <UNDEF> IF DUZ(2) IS NOT REGIONALLY SETUP
  1. ; *********************************************************************
  1. ;
  1. ;VARIOUS ENTRY POINTS
  1. INIT ;EP Initialize Environment
  1. K DIR
  1. S IOP="HOME"
  1. D ^%ZIS
  1. I $G(DUZ(2))']"" D Q
  1. . S BARQUIT=1
  1. . D EOP(1)
  1. ;
  1. ;HEAT#131101
  1. I '$D(^DIC(4,DUZ(2))) D Q
  1. . W !,"USER / SITE IS NOT CORRECTLY SETUP"
  1. . W !,"CONTACT YOUR A/R MANAGER",*7
  1. . S BARQUIT=1
  1. . D EOP(1)
  1. . Q
  1. ;
  1. I '$D(^BARBL(DUZ(2))) D Q
  1. . W !,$P(^DIC(4,DUZ(2),0),U)," IS NOT REGIONALLY SETUP"
  1. . W !,"CONTACT YOUR A/R MANAGER",*7
  1. . S BARQUIT=1
  1. . D EOP(1)
  1. ;
  1. ;
  1. D CHKFILES
  1. D BARUSR^BARUTL0 ; user parameters
  1. D BARSITE^BARUTL0 ; site paramters
  1. D BARSPAR^BARUTL0 ; A/R site paramters
  1. D BARPSAT^BARUTL0 ;parent satellite
  1. ;
  1. ;S:'$D(CURDUZ2) CURDUZ2=DUZ(2) ;IHS/SD/TPF BAR*1.8*21 HEAT43337 SET CURRENT DUZ(2) USED TO SEE IF CASHIER CHANGES FACILITY MIDSTREAM
  1. ;
  1. Q
  1. ; *********************************************************************
  1. ;
  1. CLIDED ;EP COLLECTION ID file edit
  1. D BARUSR^BARUTL0
  1. K DIC
  1. S DIC="^BAR(90051.02,DUZ(2),"
  1. S DIC("S")="I $P(^(0),U,10)=BARUSR(29,""I"")"
  1. S DIC(0)="AEQML"
  1. D ^DIC
  1. I +Y'>0 K DIC Q
  1. S BARDA=+Y
  1. K DR
  1. ; if new stuff A/R section and location
  1. I +$P(Y,U,3) D
  1. . S DIE=DIC
  1. . S DA=+Y
  1. . S DR="8///^S X=DUZ(2);10////^S X=BARUSR(29,""I"")"
  1. . K DIC
  1. . S DIDEL=90050
  1. . D ^DIE
  1. . K DIDEL
  1. K DR,DIC,DIE,DA
  1. S DA=BARDA
  1. S DR="[BAR COLLECTION POINT EDIT]"
  1. S DDSFILE=90051.02
  1. D ^DDS
  1. G CLIDED
  1. ; *********************************************************************
  1. ;
  1. NEWBILL ;EP
  1. ; file^dicn a new BIll with dic(dr)
  1. L +^BAR(90052.06,DUZ(2)):3 I '$T D
  1. .W !!,*7,"A/R Parameter file is locked by another user."
  1. .D EOP(1)
  1. D BARSPAR^BARUTL0
  1. I BARSPAR(6.5)=BARSPAR(6.07) S BARSPAR(7)=BARSPAR(7)+1
  1. E S BARSPAR(6,"I")=DT,BARSPAR(7)=1
  1. K DIE,DR,DA
  1. S DIE=$$DIC^XBDIQ1(90052.06)
  1. S DA=+BARSPAR("ID")
  1. S DR="6////^S X=BARSPAR(6,""I"");7///^S X=BARSPAR(7)"
  1. S DIDEL=90050
  1. D ^DIE
  1. K DIDEL
  1. D BARSPAR^BARUTL0
  1. L -^BAR(90052.06)
  1. K DIC,DR,DA,DD,DO
  1. S X=BARSPAR(9)_"-"_BARSPAR(6.5)_"-"_BARSPAR(7)
  1. S DIC="^BARBL(DUZ(2),"
  1. S DIC(0)="XQMLZ"
  1. S DIC("DR")="8////^S X=DUZ(2);10///^S X=BARUSR(29);5///NOW;6////^S X=DUZ"
  1. S DLAYGO=90050
  1. K DD,DO
  1. D FILE^DICN
  1. K DLAYGO
  1. Q
  1. ; *********************************************************************
  1. ;
  1. BARBL ;EP
  1. ; setup BARBL( array from the A/R bill file
  1. N DIC,DR,DIQ,XB
  1. S:$D(BARBL("ID")) DA=+BARBL("ID")
  1. S:$D(BARBLDA) DA=BARBLDA
  1. S DIC=90050.01
  1. S DR=".001:200"
  1. S DIQ="BARBL("
  1. S DIQ(0)="I"
  1. D EN^XBDIQ1
  1. Q
  1. ; *********************************************************************
  1. ;
  1. ADDREGON ;EP
  1. ; add a regional site (needs DUZ(2))
  1. D ADDREGON^BARUTL0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. FNUM ;;$T filenumber to be regionally added/deleted
  1. ;;90051.01
  1. ;;90051.02
  1. ;;90050.02
  1. ;;90050.01
  1. ;;90052.05
  1. ;;90052.06
  1. ;;90052.07
  1. ;;90050.03
  1. ;;end of list
  1. EFNUM ;----------
  1. ;
  1. CHKFILES ;EP
  1. ; CHECK FILES
  1. K BARQUIT
  1. Q
  1. F BARI=1:1 S BARFLNUM=$P($T(FNUM+BARI),";;",2) Q:'BARFLNUM D
  1. . S BARGL=^DIC(BARFLNUM,0,"GL")_"0)"
  1. . S BARECNT=$P($G(@BARGL),"^",4)
  1. . I 'BARECNT,BARFLNUM'=90050.03,BARFLNUM'=90051.01 D
  1. . . S BARQUIT=1
  1. . . W !,$P(^DIC(BARFLNUM,0),U)," Needs to have entries added !"
  1. I $G(BARQUIT) D EOP(1)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. KILLREG ;EP
  1. ; Kill off a complete region
  1. K DIQ
  1. S DIC=4
  1. S DIQ="BARTMP("
  1. S DR=".01"
  1. S DA=DUZ(2)
  1. D EN^XBDIQ1
  1. I '$D(^BARBL(DUZ(2))) D Q
  1. . W !,?5,BARTMP(.01),"DOES NOT EXIT"
  1. . K DIR
  1. . D EOP^BARUTL(1)
  1. ;
  1. K DIR
  1. S DIR(0)="Y"
  1. S DIR("B")="NO"
  1. S DIR("A")=BARTMP(.01)_" to be DELETED as an A/R Regional Site?"
  1. D ^DIR
  1. Q:Y'>0
  1. F BARI=1:1 S BARFLNUM=$P($T(FNUM+BARI),";;",2) Q:'BARFLNUM D
  1. . S BARGL=^DIC(BARFLNUM,0,"GL")_"0)"
  1. . W !,"DELETED: ",?10,$P(@BARGL,U)
  1. . K @($P(BARGL,",0)")_")")
  1. W !!,BARTMP(.01)," Has been DELETED",!
  1. K DIR
  1. D EOP^BARUTL(1)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. SPEDIT ;EP - Site Parameter edit
  1. S DIC=90052.06
  1. S DIC(0)="AEQMLZ"
  1. D ^DIC
  1. Q:Y'>0
  1. S DIE=DIC
  1. S DA=+Y
  1. S DR="8////^S X=DUZ(2);2;3"
  1. S DIDEL=90050
  1. D ^DIE
  1. K DIDEL
  1. G SPEDIT
  1. ; *********************************************************************
  1. ;
  1. PSHLP ;EP list par/sat and hot keys
  1. N Y
  1. S Y=0
  1. F S Y=$O(BARPSAT(Y)) Q:Y'>0 W !,BARPSAT(Y,2),?5,BARPSAT(Y,.01)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. BAL(X,Y) ;EP
  1. ; balance at end of FM DATE y FOR ACCOUNT x
  1. N BARTOT,I
  1. S BARTOT=0,I=0
  1. S Y=$P(Y,".",1)+.9999
  1. F S I=$O(^BARTR(DUZ(2),"AE",X,I)) Q:'I!(I>Y) D
  1. .S BARTOT=BARTOT+$P(^BARTR(DUZ(2),I,0),"^",2)-$P(^(0),"^",3)
  1. S BARTOT=BARTOT*-1
  1. Q BARTOT
  1. ; *********************************************************************
  1. ;
  1. EOP(X) ;EP
  1. ; end of page
  1. ;X=0, 1, or 2
  1. Q:$G(IOT)'["TRM"
  1. Q:$E($G(IOST))'="C"
  1. Q:$D(IO("S"))
  1. Q:$D(ZTQUEUED)
  1. F W ! Q:$Y+4>IOSL
  1. Q:X=2
  1. K DIR
  1. S DIR(0)="E"
  1. S:X=1 DIR("A")="Enter RETURN to continue"
  1. D ^DIR
  1. K DIR
  1. Q
  1. ; *********************************************************************
  1. ;
  1. UPC(X) ;EP - convert x to upper case
  1. N Y
  1. S Y=$TR($G(X),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. LWC(X) ;EP - convert x to lower case
  1. N Y
  1. S Y=$TR($G(X),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. FIND3PB(DUZO2,BARBLDA) ; EP
  1. ;
  1. ; Given DUZ(2) and A/R Bill IEN
  1. ; Find 3P Bill
  1. ; If no 3P Bill return null
  1. ; otherwise return DUZ(2),3P BILL IEN
  1. ;
  1. I '+DUZO2 Q ""
  1. I '+BARBLDA Q ""
  1. N BARDOS,BARPAT,BAR
  1. S BAR("3P NAME")=$P($G(^BARBL(DUZO2,BARBLDA,0)),U)
  1. S BAR("3P NAME")=$P(BAR("3P NAME"),"-")
  1. S BARPAT=$P($G(^BARBL(DUZO2,BARBLDA,1)),U)
  1. S BARDOS=$P($G(^BARBL(DUZO2,BARBLDA,1)),U,2)
  1. K DIC
  1. N DA
  1. S DIC="^ABMDBILL(DUZ(2),"
  1. S DIC(0)="XM"
  1. S X=BAR("3P NAME")
  1. S BARHOLD=DUZ(2)
  1. S DUZ(2)=$P($G(^BARBL(DUZO2,BARBLDA,0)),U,22) ; 3P DUZ(2)
  1. I DUZ(2)'="" D ^DIC I +Y>0 D FIND3PB2 I BAR3PLOC]"" S DUZ(2)=BARHOLD Q BAR3PLOC
  1. S DUZ(2)=$P($G(^BARBL(DUZO2,BARBLDA,1)),U,8) ; Visit location
  1. I DUZ(2)'="" D ^DIC I +Y>0 D FIND3PB2 I BAR3PLOC]"" S DUZ(2)=BARHOLD Q BAR3PLOC
  1. S DUZ(2)=$P($G(^BARBL(DUZO2,BARBLDA,0)),U,8) ; Parent location
  1. I DUZ(2)'="" D ^DIC I +Y>0 D FIND3PB2 I BAR3PLOC]"" S DUZ(2)=BARHOLD Q BAR3PLOC
  1. S DUZ(2)=BARHOLD
  1. Q ""
  1. ; *********************************************************************
  1. ;
  1. FIND3PB2 ;
  1. N BAR3PPAT,BAR3PDOS
  1. S BAR3PLOC=""
  1. S BAR3PPAT=$P($G(^ABMDBILL(DUZ(2),+Y,0)),U,5)
  1. S BAR3PDOS=$P($G(^ABMDBILL(DUZ(2),+Y,7)),U,1)
  1. I BAR3PPAT=BARPAT,BAR3PDOS=BARDOS S BAR3PLOC=DUZ(2)_","_+Y
  1. S DUZ(2)=BARHOLD
  1. Q
  1. ; ********************************************************************
  1. ;
  1. INSIEN(BAR1,BAR2,BAR3) ; EP
  1. ;
  1. ; Find IEN to Insurer file
  1. ; BAR1 = "BILL"/"ACCOUNT"
  1. ; BAR2 = BILL IEN/ACCOUNT IEN based on BAR1
  1. ; BAR3 = DUZ(2)
  1. ;
  1. S BARINS=""
  1. I '$D(BAR1),'$D(BAR2),'$D(BAR3) Q "" ; Correct data not passed in
  1. I BAR1'="BILL",BAR1'="ACCOUNT" Q "" ; BAR1 must be BILL or ACCOUNT
  1. I '+BAR2,'+BAR3 Q "" ; BAR2 and BAR3 must be numeric
  1. I BAR1="BILL" S BAR2=$$GET1^DIQ(90050.01,BAR2,3,"I")
  1. I +BAR2 D
  1. . S BARINS=$$GET1^DIQ(90050.02,BAR2,.01,"I")
  1. . S:$P(BARINS,";",2)'="AUTNINS(" BARINS="" ; Account on bill is not Insurer
  1. . S BARINS=$P(BARINS,";")
  1. Q BARINS
  1. ; ********************************************************************
  1. ;
  1. SBR(BARDUZ,BARBL) ; EP CALLED AS FUNCTION FROM BARRAOI
  1. ;
  1. ; Find Insurance Subscriber given Bill IEN and DUZ(2)
  1. ; BARBL = A/R BILL IEN
  1. ; BARDUZ = A/R DUZ(2)
  1. ;
  1. I '$D(BARBL),'$D(BARDUZ) Q "" ; Correct data not passed in
  1. I '+BARBL,'+BARDUZ Q "" ; Values must be numeric
  1. N BAR3PLOC,BAR3PIEN,BAR3DUZ ; Preserve tmp vars
  1. S BAR3PLOC=$$FIND3PB^BARUTL(BARDUZ,BARBL) ; Find 3P bill
  1. S BAR3DUZ=$P(BAR3PLOC,",") ; 3P DUZ(2)
  1. S BAR3PIEN=$P(BAR3PLOC,",",2) ; 3P BILL IEN
  1. I '+BAR3DUZ Q ""
  1. I 'BAR3PIEN Q ""
  1. ; The call below will also set up ABMP array
  1. S BARSBR=$$SBR^ABMUTLP(BAR3PIEN,BAR3DUZ) ; Subscriber
  1. S BARREL=ABMP("REL") ; Relationship
  1. Q BARSBR ; fix: added ret value P.OTT
  1. ;start new code IHS/SD/SDR 5/26/09 HEAT4301 BAR*1.8*13
  1. PATCH(PKG,VER) ;EP - returns last patch applied for a Package, PATCH^DATE
  1. ; Patch includes Seq # if Released
  1. N PKGIEN,VERIEN,LATEST,PATCH,SUBIEN
  1. I $G(VER)="" S VER=$$VERSION^XPDUTL(PKG) Q:'VER -1
  1. S PKGIEN=$O(^DIC(9.4,"B",PKG,"")) Q:'PKGIEN -1
  1. S VERIEN=$O(^DIC(9.4,PKGIEN,22,"B",VER,"")) Q:'VERIEN -1
  1. S LATEST=-1,PATCH=-1,SUBIEN=0
  1. F S SUBIEN=$O(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN)) Q:SUBIEN'>0 D
  1. . I $P(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN,0),U,2)>LATEST S LATEST=$P(^(0),U,2),PATCH=$P(^(0),U)
  1. . I $P(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN,0),U,2)=LATEST,$P(^(0),U)>PATCH S PATCH=$P(^(0),U)
  1. Q PATCH_U_LATEST
  1. ;end new code HEAT4301 BAR*1.8*13
  1. ;
  1. ;New GROUPLAN tag ;M819*ADD*TMM*20100720
  1. GROUPLAN(BARBL) ; Return Group Plan (from Employer Group Insurance file)
  1. ; BARBL = A/B Bill IEN
  1. ;---A/R Bill file data
  1. N BARACIEN,BARFIND,BARBLINS,BARGPIEN,BARGPNAM,BARGPNUM,BARINSE,BARINSI
  1. N BARLINE,BARPH,BARPHIEN,BARPOLH,BARPOLN,BARTMP,BARTMPBL,BARTMPEG,BARTMPPH
  1. S $P(BARLINE,"-",40)=""
  1. S BARACIEN=$$GET1^DIQ(90050.01,BARBL_",",3,"I") ;A/R Bill - A/R Account IEN
  1. S BARBLINS=$$GET1^DIQ(90050.02,BARACIEN_",",.01,"I")
  1. I BARBLINS'["AUTNINS" Q 0_U_"NOT AUTNINS"_U_BARBL ;not insurance company
  1. S BARINSI=$P(BARBLINS,";",1)
  1. S BARINSE=$$GET1^DIQ(9999999.18,BARINSI_",",.01,"E")
  1. S BARPAT=$$GET1^DIQ(90050.01,BARBL_",",101,"I") ;Patient IEN
  1. I BARPAT="" S BARTMP=0_U_"BARPAT"_U_BARBL D Q BARTMP
  1. . I $G(DEBUG) D
  1. .. W !,"BARBL=",BARBL," Patient (Policy Holder lookup) is null"
  1. .. S BARTMP=$G(^TMP($J,"BARDRST",BARBL))+1
  1. .. S ^TMP($J,"BARDRST",BARBL,BARTMP)="GRPPLAN_BARUTL^BARBL="_BARBL_"^0|BARPAT is null"_"|"_BARBL
  1. ;---Policy Holder file data
  1. S BARPOLH=$$GET1^DIQ(90050.01,BARBL_",",701,"I") ;Policy Holder Name
  1. S BARPOLN=$$GET1^DIQ(90050.01,BARBL_",",702,"I") ;Policy Number FIXED: P.OTT
  1. S BARFIND=0
  1. S BARGPIEN=""
  1. S BARPH="" F S BARPH=$O(^AUPN3PPH("C",BARPAT,BARPH)) Q:BARPH=""!BARFIND=1 D
  1. . S BARPHINS=$$GET1^DIQ(9000003.1,BARPH_",",.03,"I") ;Insurance company from Policy Holder file
  1. . I BARPHINS'=BARINSI Q
  1. . S BARFIND=1
  1. . S BARPHIEN=BARPH
  1. . S BARGPIEN=$$GET1^DIQ(9000003.1,BARPHIEN_",",.06,"I") ;group IEN
  1. I 'BARFIND Q 0_U_"BARFIND"_U_BARBL
  1. ;---Employer Insurance Group data for this A/R bill
  1. I 'BARFIND D Q 0_U_"BARFIND^"_BARBL
  1. I BARGPIEN="" Q 0_U_"BARGPIEN"_U_BARBL
  1. S BARGPNAM=$$GET1^DIQ(9999999.77,BARGPIEN_",",.01,"E") ;group plan name
  1. S BARGPNUM=$$GET1^DIQ(9999999.77,BARGPIEN_",",.02,"E") ;group plan number
  1. S BARTMPEG=BARGPIEN_"|"_BARGPNUM_"|"_BARGPNAM ;Employer Group data
  1. S BARTMPPH=BARPHIEN_"|"_BARPOLH_"|"_BARPHINS_"|"_BARPAT ;Policy Holder data
  1. S BARTMPBL=BARACIEN_"|"_BARINSI_"|"_BARINSE ;A/R Bill data
  1. Q 1_U_BARTMPEG_U_BARTMPPH_U_BARTMPBL
  1. ;-----------------EOR------------