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

RCDPRTP0.m

Go to the documentation of this file.
  1. RCDPRTP0 ;ALB/LDB - CLAIMS MATCHING REPORT ;5/24/00 10:48 AM
  1. ;;4.5;Accounts Receivable;**151,315,339,338**;Mar 20, 1995;Build 69
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. PAT ;find patient bills
  1. S RCNAM=$$NAM^RCFN01(RCDEBT)
  1. S RCSSN=$$SSN^RCFN01(RCDEBT)
  1. S RCBIL=0 F S RCBIL=$O(^PRCA(430,"E",RCDFN,RCBIL)) Q:'RCBIL D
  1. .I '$$SCRNARCT^RCDPRTP($P($G(^PRCA(430,+RCBIL,0)),"^",2)) Q
  1. .S RCPAY=0 F S RCPAY=$O(^PRCA(433,"C",RCBIL,RCPAY)) Q:'RCPAY D
  1. ..S RCPAY1=$G(^PRCA(433,+RCPAY,1)) Q:RCPAY1=""
  1. ..I "^2^34^"[("^"_$P(RCPAY1,"^",2)_"^"),($P(RCPAY1,"^",9)'<DATESTRT),($P(RCPAY1,"^",9)<(DATEEND_".999999")) D
  1. ...S DFN=RCDFN D DEM^VADPT,ELIG^VADPT
  1. ...S RCTYPE=$$TYP^IBRFN(RCBIL) ; added care type - 315
  1. ...S RCTYPE=$S(RCTYPE="":-1,RCTYPE="PR":"P",RCTYPE="PH":"R",1:RCTYPE)
  1. ...I $D(RCTYPE(RCTYPE)) D Q:'RCTYPE
  1. ....S ^TMP("RCDPRTPB",$J,RCNAM)=$P($G(VADM(3)),"^",2)_"^"_$P($G(VAEL(1)),"^",2)_"^"_RCSSN
  1. ....S ^TMP("RCDPRTPB",$J,RCNAM,RCBIL)=$P($P(RCPAY1,"^",9),".")
  1. ....K DFN,VA,VADM,VAEL,VAERR
  1. K RCDFN,RCDEBT
  1. Q
  1. ;
  1. DATE ;find third party bills by date of payments
  1. N RCDFN,RCDEBT
  1. F RCTYP=2,34 S DAT=$$FMADD^XLFDT(DATESTRT,-1)_".999999" F S DAT=$O(^PRCA(433,"AT",RCTYP,DAT)) Q:'DAT!(DAT>(DATEEND_".999999")) D
  1. .S RCPAY=0 F S RCPAY=$O(^PRCA(433,"AT",RCTYP,DAT,RCPAY)) Q:'RCPAY D
  1. ..S RCBIL=$P($G(^PRCA(433,+RCPAY,0)),"^",2)
  1. ..S RCBIL0=$G(^PRCA(430,+RCBIL,0)) Q:RCBIL0=""
  1. ..Q:'$$SCRNARCT^RCDPRTP($P(RCBIL0,"^",2)) ;PRCA*4.5*338
  1. ..S RCDFN=$P(RCBIL0,"^",7)
  1. ..S RCDEBT=$O(^RCD(340,"B",RCDFN_";DPT(",0)) Q:'RCDEBT
  1. ..S RCNAM=$$NAM^RCFN01(RCDEBT)
  1. ..S RCSSN=$$SSN^RCFN01(RCDEBT)
  1. ..S DFN=RCDFN D DEM^VADPT,ELIG^VADPT
  1. ..S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT)=$P($G(VADM(3)),"^",2)_"^"_$P($G(VAEL(1)),"^",2)_"^"_RCSSN
  1. ..S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT,RCBIL)=$P(DAT,".")
  1. ..K DFN,VA,VADM,VAEL,VAERR
  1. Q
  1. ;
  1. TYPE ;find third party bills by care type PRCA*4.5*315
  1. N RCDFN,RCDEBT,RCTYP
  1. F RCTYP=2,34 S DAT=$$FMADD^XLFDT(DATESTRT,-1)_".999999" F S DAT=$O(^PRCA(433,"AT",RCTYP,DAT)) Q:'DAT!(DAT>(DATEEND_".999999")) D
  1. .S RCPAY=0 F S RCPAY=$O(^PRCA(433,"AT",RCTYP,DAT,RCPAY)) Q:'RCPAY D
  1. ..S RCBIL=$P($G(^PRCA(433,+RCPAY,0)),"^",2)
  1. ..S RCBIL0=$G(^PRCA(430,+RCBIL,0)) Q:RCBIL0=""
  1. ..Q:'$$SCRNARCT^RCDPRTP($P(RCBIL0,"^",2)) ;PRCA*4.5*338
  1. ..S RCDFN=$P(RCBIL0,"^",7)
  1. ..S RCDEBT=$O(^RCD(340,"B",RCDFN_";DPT(",0)) Q:'RCDEBT
  1. ..S RCNAM=$$NAM^RCFN01(RCDEBT)
  1. ..S RCSSN=$$SSN^RCFN01(RCDEBT)
  1. ..S DFN=RCDFN D DEM^VADPT,ELIG^VADPT
  1. ..S RCTYPE=$$TYP^IBRFN(RCBIL)
  1. ..S RCTYPE=$S(RCTYPE="":-1,RCTYPE="PR":"P",RCTYPE="PH":"R",1:RCTYPE)
  1. ..I $D(RCTYPE(RCTYPE)) D Q:'RCTYPE
  1. ...S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT)=$P($G(VADM(3)),"^",2)_"^"_$P($G(VAEL(1)),"^",2)_"^"_RCSSN
  1. ...S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT,RCBIL)=$P(DAT,".")
  1. ...K DFN,VA,VADM,VAEL,VAERR
  1. Q
  1. BILL ;set TMP array
  1. S RCDEBT=$O(^RCD(340,"B",RCDFN_";DPT(",0)) Q:'RCDEBT
  1. S RCNAM=$$NAM^RCFN01(RCDEBT)
  1. S RCSSN=$$SSN^RCFN01(RCDEBT)
  1. S DFN=+$G(^RCD(340,RCDEBT,0))
  1. D DEM^VADPT,ELIG^VADPT
  1. S RCTP=0 F S RCTP=$O(^PRCA(433,"C",RCBILL,RCTP)) Q:'RCTP I "^2^34^"[("^"_$P($G(^PRCA(433,+RCTP,1)),"^",2)_"^") S RCTP(0)=$P($P($G(^PRCA(433,+RCTP,1)),"^",9),".")
  1. S ^TMP("RCDPRTPB",$J,RCNAM)=$P($G(VADM(3)),"^",2)_"^"_$P($G(VAEL(1)),"^",2)_"^"_RCSSN
  1. S ^TMP("RCDPRTPB",$J,RCNAM,RCBILL)=RCTP
  1. K DFN,VA,VADM,VAEL,VAERR,RCBILL,RCTP
  1. Q
  1. ;
  1. REC ;find receipt payments
  1. N RCDEBT,RCDFN,RCREC1,RCPAY1,RCBIL,RCBIL0,RCDFN,RCDEBT,RCSSN
  1. S RCREC1=0 F S RCREC1=$O(^PRCA(433,"AF",RCPT,RCREC1)) Q:'RCREC1 D
  1. .S RCPAY1=$G(^PRCA(433,+RCREC1,1)) Q:RCPAY1=""
  1. .S RCBIL=0 I "^2^34^"[("^"_$P(RCPAY1,"^",2)_"^") S RCBIL=$P($G(^PRCA(433,+RCREC1,0)),"^",2)
  1. .Q:'RCBIL
  1. .S RCBIL0=$G(^PRCA(430,+RCBIL,0))
  1. .Q:'$$SCRNARCT^RCDPRTP($P(RCBIL0,"^",2)) ;PRCA*4.5*338
  1. .S RCDFN=$P(RCBIL0,"^",7) Q:'RCDFN
  1. .S RCDEBT=$O(^RCD(340,"B",RCDFN_";DPT(",0)) Q:'RCDEBT
  1. .S RCSSN=$$SSN^RCFN01(RCDEBT)
  1. .S RCNAM=$$NAM^RCFN01(RCDEBT)
  1. .S DFN=RCDFN D DEM^VADPT,ELIG^VADPT
  1. .S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT)=$P($G(VADM(3)),"^",2)_"^"_$P($G(VAEL(1)),"^",2)_"^"_RCSSN
  1. .K DFN,VA,VADM,VAEL,VAERR
  1. .S ^TMP("RCDPRTPB",$J,RCNAM_"^"_RCDEBT,RCBIL)=$P($P($G(^PRCA(433,+RCREC1,1)),"^",9),".")
  1. Q
  1. ;
  1. TYPEPIC(RCTYPE) ; function for user selection of care types PRCA*4.5*315
  1. ; RCTYPE is an output array, pass by reference
  1. ; RCTYPE(type)="" where type can be (I)npatient, (O)utpatient,(P)rosthetics or (R)x (Prescription)
  1. ; Function value is 1 if at least 1 care type was selected, 0 otherwise
  1. ; User can select one, all or a combination of care types.
  1. ;
  1. N DIR,X,Y,OK,DTOUT,DUOUT,DIRUT,DIROUT,RC
  1. K RCTYPE
  1. S OK=1 ; all OK default
  1. S DIR(0)="S"
  1. S RC=";I:Inpatient"
  1. S RC=RC_";O:Outpatient"
  1. S RC=RC_";P:Prosthetic"
  1. S RC=RC_";R:Prescription"
  1. S RC=RC_";ALL:All"
  1. S $P(DIR(0),U,2)=RC,DIR("B")="ALL"
  1. S DIR("A")="Select a Care Type"
  1. W ! D ^DIR K DIR
  1. I (Y["A") D Q ; all types selected so set & quit
  1. . F X="I","O","P","R" S RCTYPE(X)=""
  1. . Q
  1. I $D(DIRUT)!(Y="") Q
  1. S X=$$UP^XLFSTR(X)
  1. S RCTYPE(X)="" ; Toggle back on
  1. ; Select another type
  1. I (Y'["A") F D Q:X=""!(RCQUIT)
  1. . I ($G(DIRUT)'="") S OK=0,RCQUIT=1 Q
  1. . S DIR(0)="SBO^I:Inpatient;O:Outpatient;P:Prosthetic;R:Prescription"
  1. . S DIR("A")="Select another Care Type" D ^DIR K DIR
  1. . I $G(DUOUT) W !!,"User exited with '^', quitting",! S RCQUIT=1 Q
  1. . I $D(DIRUT) S OK=0 Q
  1. . I (X="") Q
  1. . S X=$$UP^XLFSTR(X)
  1. . S RCTYPE(X)=""
  1. . Q
  1. I $D(DUOUT)!$D(DTOUT) S OK=0 ; exit if "^" or time-out
  1. I '$D(RCTYPE) S OK=0 W $C(7)
  1. Q OK
  1. ;
  1. FORMAT(RCEXCEL) ; capture the report format from the user (normal or CSV output) PRCA*4.5*315
  1. ; RCEXCEL=0 for normal output
  1. ; RCEXCEL=1 (^ separated values) for Excel output
  1. ; pass parameter by reference
  1. ;
  1. N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. S RCEXCEL=0
  1. S DIR("A")="Do you want to capture report data for an Excel document"
  1. S DIR("B")="NO"
  1. S DIR(0)="Y"
  1. S DIR("?",1)="If you want to capture the output from this report in a ^-separated"
  1. S DIR("?",2)="values (Excel) format, then answer YES here."
  1. S DIR("?",3)=" "
  1. S DIR("?")="If you just want a normal report output, then answer NO here."
  1. W ! D ^DIR K DIR
  1. I $D(DIRUT) S RCQUIT=1 Q 0 ; get out
  1. S RCEXCEL=Y
  1. Q RCEXCEL
  1. ;
  1. DEVICE ; Device Selection for Excel output PRCA*4.5*315
  1. ; RCEXCEL=1 for Excel ('^' separated values) output
  1. ;
  1. N ZTRTN,ZTDESC,ZTSAVE,POP,ZTSK,DIR,X,Y,DIRUT,DTOUT,DUOUT,DIROUT
  1. D EXMSG
  1. ;
  1. S ZTRTN="PRINT^RCDPRTEX"
  1. S ZTDESC="Claims Matching Excel Report"
  1. S ZTSAVE("DATEEND")="",ZTSAVE("DATESTRT")="",ZTSAVE("RCQUIT")="",ZTSAVE("RCSORT")="",ZTSAVE("RCEXCEL")=""
  1. S ZTSAVE("RCAN")="",ZTSAVE("ZTREQ")="@",ZTSAVE("^TMP(""RCDPRTPB"",$J,")=""
  1. I RCSORT=1 S ZTSAVE("RCDEBT")="",ZTSAVE("RCDFN")="",ZTSAVE("RCTYPE*")=""
  1. I RCSORT=2 S ZTSAVE("RCBILL")="",ZTSAVE("RCDFN")="",ZTSAVE("RCDEBT")=""
  1. I RCSORT=4 S ZTSAVE("RCPT")=""
  1. I RCSORT=5 S ZTSAVE("RCTYPE*")="",ZTSAVE("DATE*")=""
  1. ;
  1. D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE,"QM",1) Q:POP
  1. I $G(ZTSK) W !!,"Report compilation has started with task# ",ZTSK,".",! S DIR(0)="E" D ^DIR K DIR
  1. Q
  1. ;
  1. EXMSG ; - Displays the message about capturing to an Excel file format
  1. ;
  1. W !!?5,"This report may take a while to run. It is recommended that you Queue it."
  1. W !!?5,"To capture as an Excel format, it is recommended that you queue this"
  1. W !?5,"report to a spool device with margins of 256 and page length of 99999"
  1. W !?5,"(e.g. spoolname;256;99999). This should help avoid wrapping problems."
  1. W !!?5,"Another method would be to set up your terminal to capture the detail"
  1. W !?5,"report data. On some terminals, this can be done by clicking on the"
  1. W !?5,"'Tools' menu above, then click on 'Capture Incoming Data' to save to"
  1. W !?5,"Desktop. To avoid undesired wrapping of the data saved to the file,"
  1. W !?5,"please enter '0;256;99999' at the 'DEVICE:' prompt.",!
  1. Q
  1. ;