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

DGVPTIB1.m

Go to the documentation of this file.
  1. DGVPTIB1 ;alb/mjk - IBACKIN for export with PIMS v5.3; 4/21/93
  1. ;;5.3;Registration;**1015**;Aug 13, 1993;Build 21
  1. ;
  1. IBACKIN ;ALB/RLW - Check-in Link for OP Co-payment ; 12-JUN-92
  1. ;;Version 1.5 ; INTEGRATED BILLING ;**3,14**; 29-JUL-92
  1. ;
  1. EN ; main entry point
  1. Q ;ihs/cmi/maw 02/08/2012 patch 1014 no IB so entire routine is not needed
  1. ;***
  1. ;S XRTL=$ZU(0),XRTN="IBACKIN-1" D T0^%ZOSV ;start rt clock
  1. ;I $D(XRT0),(('$D(SDATA))!(+$G(SDAMEVT)<2)) S:'$D(XRTN) XRTN="IBACKIN" D T1^%ZOSV ;stop rt clock
  1. ;
  1. Q:'$G(SDATA)!(+$G(SDAMEVT)<2)
  1. S IBADFN=$P(SDATA,"^",2)
  1. CHKSTAT ; check appointment status, quit if inpatient or not relevant
  1. ;***
  1. ;I $D(XRT0),(($P(SDATA("BEFORE","STATUS"),"^",6)>0)!($P(SDATA("AFTER","STATUS"),"^",6)>0)) S:'$D(XRTN) XRTN="IBACKIN" D T1^%ZOSV ;stop rt clock
  1. ;
  1. I ($P(SDATA("BEFORE","STATUS"),"^",6)>0)!($P(SDATA("AFTER","STATUS"),"^",6)>0) G ENQ
  1. S IBAST=+SDATA("AFTER","STATUS"),IBBST=+SDATA("BEFORE","STATUS"),IBWST=$P(SDATA,"^",5)
  1. ;***
  1. ;I $D(XRT0),IBAST=8 S:'$D(XRTN) XRTN="IBACKIN" D T1^%ZOSV ;stop rt clock
  1. ;I IBAST=8 G ENQ
  1. I (IBAST=1)!(IBAST=2)!(IBAST=4)!(IBAST=6) D SETUP G ENQ
  1. I IBBST=1!(IBBST=2) D SETUP
  1. ENQ K IBAST,IBEL,IBSERV,IBADFN,IBATYP,IBIEN,IBPARNT,IBCHRGD,IBCNP,IBDT,IBN,IBSFTLK,IBTRAN,IBIL,IBFAC,IBNOS,IBX,IBADATE,IBPDT,IBSTAT,IBXA,X,IBBST,IBWST
  1. ;***
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBACKIN" D T1^%ZOSV ;stop rt clock
  1. ;
  1. Q
  1. SETUP ;
  1. I '$D(DT) D DT^DICRW
  1. S IBX="O",IBXA="4",IBDATE=$P(SDATA,"^",3),IBDT=(IBDATE\1)
  1. Q:'$$BIL^DGMTUB(IBADFN,IBDATE)
  1. S Y=1,IBDUZ=$S(DUZ=0:.5,DUZ="":.5,1:DUZ) N IBJOB S IBJOB=5,IBWHER="IBACKIN"
  1. ;check no-count
  1. S IBACLIN=$P(SDATA,"^",4) Q:$P(^SC(IBACLIN,0),"^",17)="Y"
  1. I $D(^DPT(IBADFN,"S",IBDATE,0)) S IBAPTYPE=$P(^(0),"^",16)
  1. ; if C&P check if there's already an op copay for that day and cancel
  1. I IBAPTYPE=1 D CANCP^IBECEA3 Q
  1. ; billable event check
  1. Q:$$IGN^IBEFUNC(IBAPTYPE,DT)=1
  1. S IBSFTLK="44:"_$P(SDATA,"^",4)_";S:"_$P(SDATA,"^",3)_";1:"_+SDATA
  1. D SITE^IBAUTL,SERV^IBAUTL2,TYPE^IBAUTL2
  1. S:IBAST=3 IBATYP=$P(^IBE(350.1,IBATYP,0),"^",6)
  1. K X S X=IBSERV_"^"_IBADFN_"^"_IBATYP_"^"_"^"_DUZ,X(0)=1
  1. ; - logic to add a charge
  1. I IBWST="CO",IBAST=2 D ADD G SETUPQ
  1. I IBWST="CI",IBAST<3 D ADD G SETUPQ
  1. ; - logic to cancel a charge
  1. S IBCRES=$S(IBAST=4!(IBAST=6):17,1:18)
  1. I IBWST="CI",IBBST<3,IBAST>2 D CANCEL G SETUPQ
  1. I IBWST="CO",IBBST=2,IBAST'=2 D CANCEL
  1. SETUPQ K IBCRES
  1. Q
  1. ADD ; add op copay charge
  1. D APPT^IBECEA3
  1. G:(IBCHRGD>0)!(IBCNP>0) ADDQ
  1. D TYPE^IBAUTL2 I $D(IBY),+IBY<0 D ^IBAERR ; - input IBDT,IBSERV,IBX returns IBATYP,IBCHG,IBDESC
  1. S IBATYP=$S(IBCHRGD=2:53,1:51),IBSEQNO=$P(^IBE(350.1,IBATYP,0),"^",5) I '$D(IBSEQNO) S Y="-1^IBO23" D ^IBAERR G ADDQ
  1. D ARPARM^IBAUTL I $D(Y),+Y<0 D ^IBAERR G ADDQ
  1. D BILLNO^IBAUTL I $D(Y),+Y<0 D ^IBAERR G ADDQ
  1. D ADD^IBAUTL I $D(Y),+Y<0 D ^IBAERR G ADDQ
  1. L +(^IB(IBN)):10 E S Y="-1^IB014" D ^IBAERR G ADDQ
  1. S $P(^IB(IBN,1),"^",1)=IBDUZ,$P(^IB(IBN,0),"^",2,17)=IBADFN_"^"_IBATYP_"^"_IBSFTLK_"^2^1^"_IBCHG_"^"_IBDESC_"^"_IBN_"^^"_IBIL_"^"_IBTRAN_"^"_IBFAC_"^"_IBDT_"^"_IBDT_"^"_IBN_"^"_IBDT K ^IB("AC",1,IBN)
  1. S DIK="^IB(",DA=IBN D IX^DIK K DIK,DA L -^IB(IBN)
  1. S IBNOS=IBN D ^IBAFIL I $D(Y),+Y<0 D ^IBAERR
  1. I '$D(^IBE(351,"ACT",IBADFN)) S DFN=IBADFN,IBCLDT=IBDT D CLADD^IBAUTL3
  1. ADDQ Q
  1. CANCEL ; cancel op copay charge - search for op charges from same date, then compare softlink
  1. S IBPTDT=""
  1. F S IBPTDT=$O(^IB("APTDT",IBADFN,IBPTDT)) Q:IBPTDT="" S IBIEN="" D
  1. .F K X S IBIEN=$O(^IB("APTDT",IBADFN,IBPTDT,IBIEN)) Q:IBIEN="" Q:'$D(^IB(IBIEN,0)) S X=$P(^IB(IBIEN,0),"^",4) I $P(X,";",1,2)=$P(IBSFTLK,";",1,2) D Q
  1. ..S IBX=IBIEN_"^4",IBTOTL=0 D CANCHG^IBECEA2
  1. ..D ARPARM^IBAUTL I $D(Y),+Y<0 D ^IBAERR Q
  1. ..I $G(IBNOS) D ^IBAFIL I $D(Y),+Y<0 D ^IBAERR
  1. ..S I=IBDT D CKBILL S IBPTDT=9999999
  1. CANQ Q
  1. ;
  1. CKBILL ; if a charge has been cancelled, search for other visits for day that might be billable.
  1. N IBAD,IBSD,IBSN S IBAD=I
  1. F Q:IBAST=1 S IBAD=$O(^DPT(IBADFN,"S",IBAD)) Q:$E(IBAD,1,7)'=IBDT S IBSD=$G(^(IBAD,0)) I $P(IBSD,"^",2)="" D
  1. .Q:+$$STATUS^SDAM1(IBADFN,IBAD,+IBSD,IBSD)>2 ; appt not co'd or ci'd
  1. .F IBSN=0:0 Q:IBAST=1 S IBSN=$O(^SC(+IBSD,"S",IBAD,1,IBSN)) Q:'IBSN I +$G(^(IBSN,0))=IBADFN D
  1. ..S IBAST=1,IBX="O",IBSFTLK="44:"_+IBSD_";S:"_IBAD_";1:"_IBSN
  1. ..S SDATA=IBSN_"^"_IBADFN_"^"_IBAD_"^"_+IBSD D ADD
  1. CKQ Q