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

IBOBCC.m

Go to the documentation of this file.
  1. IBOBCC ;ALB/ARH - UNBILLED APPOINTMENT BASC FOR INSURED PATIENTS ; 2/27/92
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;
  1. EN ;get date range then run the report
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOBCC" D T1^%ZOSV ;stop rt clock
  1. ;S XRTL=$ZU(0),XRTN="IBOBCC-1" D T0^%ZOSV ;start rt clock
  1. S IBHDR="UNBILLED BASC FOR INSURED PATIENT APPOINTMENTS" D HOME^%ZIS
  1. W @IOF W !!,?15,"Report Unbilled BASC for Insured Patient Appointments",!!!!
  1. D BDT^IBOUTL G:Y<0!(IBBDT="")!(IBEDT="") EXIT
  1. DEV ;get the device
  1. W !!,"Report requires 132 columns."
  1. S %ZIS="QM",%ZIS("A")="OUTPUT DEVICE: " D ^%ZIS G:POP EXIT
  1. I $D(IO("Q")) S ZTRTN="EN1^IBOBCC",ZTDESC=IBHDR,ZTSAVE("IB*")="" D ^%ZTLOAD K IO("Q"),ZTSK G EXIT
  1. U IO D EN1 D ^%ZISC
  1. ;
  1. EXIT ;clean up and quit
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOBCC" D T1^%ZOSV ;stop clock
  1. I $D(ZTQUEUED) S ZTREQ="@" Q
  1. K IBBDT,IBEDT,IBHDR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. Q
  1. ;
  1. EN1 ;entry pt. for tasked jobs
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOBCC" D T1^%ZOSV ;stop rt clock
  1. ;S XRTL=$ZU(0),XRTN="IBOBCC-2" D T0^%ZOSV ;start rt clock
  1. ;find, save, and print each BASC entered in scheduling that has not been entered in billing (or doesn't/can't match)
  1. ;for each patient appointment in scheduling, where patient has active insurance, and billable CPTs entered for appointment
  1. ;must match between scheduling and billing: DFN, CPT, appointment date (procedure date) (doesn't match clinics)
  1. APPT ;get all BASC CPTs for appointments in date range for patients with insurance
  1. S IBE=IBEDT+.3,IBADT=IBBDT-.001,IBQ=0
  1. F S IBADT=$O(^SDV("AP",IBADT)) Q:'IBADT!(IBADT>IBE)!IBQ S IBX="" D S IBQ=$$STOP
  1. . F S IBX=$O(^SDV("AP",IBADT,IBX)) Q:'IBX D
  1. .. S IBAD=$E(IBADT,1,7),(DFN,IBDFN)=^(IBX),IBINDT=IBAD D ^IBCNS Q:'IBINS
  1. .. S IBPR=$G(^SDV(IBADT,"CS",IBX,"PR")) I IBPR D
  1. ... F IBI=1:1 S IBCPT=$P(IBPR,"^",IBI) Q:'IBCPT I $$CPTBSTAT^IBEFUNC1(IBCPT,IBAD) D
  1. .... S ^TMP("IBBC",$J,IBDFN,IBAD,IBCPT)=$G(^TMP("IBBC",$J,IBDFN,IBAD,IBCPT))+1
  1. K IBE,IBADT,IBDFN,IBAD,IBX,IBPR,IBI,IBCPT,DFN,IBINDT,IBINS
  1. ;
  1. G:'$D(^TMP("IBBC",$J))!IBQ PRINT
  1. BILLED ;determine which BASC procedures from scheduling were actually entered in billing
  1. ;try to match scheduling and billing, the scheduling appointment date (^SDV) and the billing procedure date (^IB) must be
  1. ;the same to be able to match procedures between scheduling and billing
  1. S IBDFN="" F S IBDFN=$O(^TMP("IBBC",$J,IBDFN)) Q:(IBDFN'?1N.N)!IBQ S IBAD="" D S IBQ=$$STOP
  1. . F S IBAD=$O(^TMP("IBBC",$J,IBDFN,IBAD)) Q:IBAD="" S IBCPT="" D
  1. .. F S IBCPT=$O(^TMP("IBBC",$J,IBDFN,IBAD,IBCPT)) Q:IBCPT="" S IBCNT=^(IBCPT) I $D(^DGCR(399,"ASD",-IBAD,IBCPT)) D
  1. ... S IBBN="" F S IBBN=$O(^DGCR(399,"ASD",-IBAD,IBCPT,IBBN)) Q:IBBN=""!(IBCNT'>0) I $D(^DGCR(399,"C",IBDFN,IBBN)) D
  1. .... S IBX="" F S IBX=$O(^DGCR(399,"ASD",-IBAD,IBCPT,IBBN,IBX)) Q:IBX=""!(IBCNT'>0) S IBCNT=IBCNT-1
  1. ... I IBCNT'>0 K ^TMP("IBBC",$J,IBDFN,IBAD,IBCPT) Q
  1. ... S ^TMP("IBBC",$J,IBDFN,IBAD,IBCPT)=IBCNT
  1. .. I $D(^TMP("IBBC",$J,IBDFN,IBAD)) S ^TMP("IBBC",$J,"N",$P($G(^DPT(IBDFN,0)),"^",1),IBDFN)=""
  1. K IBDFN,IBAD,IBCPT,IBCNT,IBBN,IBX
  1. ;
  1. PRINT G PRINT^IBOBCC1
  1. Q
  1. ;
  1. STOP() ;determine if user requested task to be stopped
  1. I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ I +$G(IBPGN) W !!,"TASK STOPPED BY USER",!!
  1. Q +$G(ZTSTOP)