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

RCVCR1.m

Go to the documentation of this file.
  1. RCVCR1 ;SLC/LLB/JC - First Party Veterans Charge Report ; SEP 9,2020@16:17
  1. ;;4.5;Accounts Receivable;**373,379**;Mar 20, 1995;Build 16
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ;External References Type ICR #
  1. ;------------------- --------- -----
  1. ; HOME^%ZIS Supported 10086
  1. ; ^DIC Supported 10006
  1. ; ^DIQ Supported 10004
  1. ; EN^DIQ1 Supported 10015
  1. ; ^DIR Supported 10026
  1. ; RX^PSO52API Supported 4820
  1. ; DEM^VADPT Supported 10061
  1. ; $$FMTE^XLFDT Supported 10103
  1. ; $$NOW^XLFDT Supported 10103
  1. ; $$CJ^XLFSTR Supported 10104
  1. ; $$STRIP^XLFSTR Supported 10104
  1. ; EN^XUTMDEVQ Supported 1519
  1. ;
  1. ;ICR# TYPE DESCRIPTION
  1. ;----- ---------- ---------------------
  1. ; 7218 Private File (#350), access to fields (#.08),(#.09),(#.1),(#.12),(#.18),(#.19),(#.2),(#12),(#13),(#14)
  1. ; 4541 Private File (#350), access to the "C" cross-reference and fields (#.01),(#.02),(#.03),(#.04),(#.05),(#.06),(#.07),(#.11),(#.14),(#.15),(#.16),(#.17)
  1. ;
  1. START ;
  1. N DFN,VETNM,FRMDT,FRMDTINT,TODT,TODTINT,IBSVCTYP,IBSVCNM,IBQUIT,DGPAGE
  1. N IBSTAT,IBSTATNM,POP,%ZIS,X,ZTSAVE,Y,LETTER,STAT,SSN,DIRUT,IBRXNAM
  1. S (POP,DIRUT,IBQUIT,DGPAGE)=0
  1. D INIT
  1. I POP Q
  1. W !!,"The number of characters per row should be set to 256."
  1. W !,"Please use the following path to modify the display settings:"
  1. W !,"In Reflections. File >>> Settings >>> Terminal Configuration"
  1. W !," >>> Set Up Display Settings >>> Number of characters per row",!
  1. W !,"To capture as a spreadsheet format, at the DEVICE prompt, please accept the"
  1. W !,"default value of 0;256;99999. This should help avoid wrapping problems.",!
  1. W !,"For pagination, please use "";256;"" for the device value instead of the default.",!
  1. S %ZIS=""
  1. S %ZIS("B")="0;256;99999"
  1. S ZTSAVE("FRMDTINT")=""
  1. S ZTSAVE("LETTER")=""
  1. S X="FIRST PARTY VETERAN CHARGE REPORT"
  1. D EN^XUTMDEVQ("DISPHEAD^RCVCR1",X,.ZTSAVE,.%ZIS)
  1. D HOME^%ZIS
  1. D CLEAN
  1. Q
  1. ;
  1. INIT ;
  1. ;
  1. W @IOF
  1. W !,"*** Print the First Party Veteran Charge Report ***",!
  1. W !,"This report captures detailed 1st party bill information for a specific "
  1. W !,"Veteran, within a user specified range of dates of service."
  1. W !,"This report output requires screen size of 256 characters wide.",!
  1. ; Get Veteran Name
  1. S DIC="^DPT(",DIC(0)="AQEZMV",DIC("A")="Enter Veteran Name: "
  1. D ^DIC
  1. K DIC
  1. I +Y<1 K DIC S POP=1 Q
  1. S DFN=$P(Y,U)
  1. S VETNM=$P(Y,U,2)
  1. D DEM^VADPT
  1. S SSN=$P(VADM(2),U,1)
  1. ;Get From date
  1. W !
  1. N DIR
  1. S DIR(0)="DO^:DT:EX"
  1. S DIR("A")="Enter From Date "
  1. D ^DIR
  1. I +Y<1 K DIR S POP=1 Q
  1. K DIR
  1. S FRMDT=X,FRMDTINT=Y
  1. ;Get To date
  1. S DIR(0)="DA^"_FRMDTINT_":"_DT_":EX"
  1. S Y=DT D D^DIQ S DIR("B")="TODAY"
  1. S DIR("A")="Enter To Date: "
  1. D ^DIR
  1. I +Y<1 K DIR S POP=1 Q
  1. K DIR
  1. S TODT=X,TODTINT=Y
  1. ; Get Service Type
  1. S DIR(0)="SO^1:Medical Care;2:Outpatient Medication;3:Both (Medical Care and Outpatient Medication)"
  1. S DIR("L",1)="Which type of copayment do you wish to see?"
  1. S DIR("L",2)=" 1. Medical Care"
  1. S DIR("L",3)=" 2. Outpatient Medication"
  1. S DIR("L")=" 3. Both (Medical Care and Outpatient Medication)"
  1. S DIR("B")="3"
  1. S DIR("A")="Enter selection (1,2 or 3) "
  1. D ^DIR
  1. K DIR
  1. I +Y<1!(+Y>3) K DIR S POP=1 Q
  1. S IBSVCTYP=Y,IBSVCNM=Y(0)
  1. ; Get IB Status
  1. S DIR(0)="SO^1:Billed;2:On Hold;3:Cancelled;4:All (Billed, On Hold, Cancelled)"
  1. S DIR("L",1)="Which IB status for the selected copayment(s) do you wish to see?"
  1. S DIR("L",2)=" 1. Billed"
  1. S DIR("L",3)=" 2. On Hold"
  1. S DIR("L",4)=" 3. Cancelled"
  1. S DIR("L")=" 4. All (Billed, On Hold, Cancelled)"
  1. S DIR("B")="4"
  1. S DIR("A")="Enter Status selection (1,2,3 or 4) "
  1. D ^DIR
  1. K DIR
  1. I +Y<1!(+Y>4) K DIR S POP=1 Q
  1. S IBSTAT=Y,IBSTATNM=Y(0)
  1. ;Ask if Letters should print
  1. W !
  1. S DIR("A")="Enter Selection (1,2,or 3) "
  1. S DIR(0)="SO^1:Letter Dates;2:Total Payments Received on Bill Number;3:Neither"
  1. S DIR("L",1)="Do you want to see: "
  1. S DIR("L",2)=" 1. Letter Dates"
  1. S DIR("L",3)=" 2. Total Payments Received on Bill Number"
  1. S DIR("L")=" 3. Neither"
  1. S DIR("B")="3"
  1. D ^DIR
  1. I $G(DIRUT) S POP=1 Q
  1. K DIR
  1. I +Y<1!(+Y>3) K DIR S POP=1 Q
  1. S LETTER=Y
  1. Q
  1. ;
  1. DISPHEAD ; Write report header
  1. ;
  1. W @IOF
  1. W !,"First Party Veteran Charge Report",!
  1. W !,"Run date: ",$$FMTE^XLFDT($$NOW^XLFDT,"MP")
  1. W !,"Service Dates From ",$$FMTE^XLFDT(FRMDTINT,"5D")," To ",$$FMTE^XLFDT(TODTINT,"5D")
  1. W !,"Copayment Type Selected: ",IBSVCNM
  1. W !,"IB Status Selected: ",IBSTATNM
  1. N TRM S TRM=($E(IOST)="C")
  1. W !!
  1. D PRTCOLHD
  1. D RUNRPT
  1. D OUTPRPT
  1. Q:IBQUIT
  1. D ASKCONT(0)
  1. Q
  1. ;
  1. ASKCONT(FLAG) ; display "press <Enter> to continue" prompt
  1. N Z
  1. W !!,$$CJ^XLFSTR("Press <Enter> to "_$S(FLAG=1:"continue.",1:"exit."),20)
  1. R !,Z:DTIME
  1. Q
  1. ;
  1. PRTCOLHD ;
  1. ;
  1. N COL,CNT,CNAME,LENGTH,END,SCOL,LOC
  1. S END=255,SCOL=21,COL=0
  1. ;I $G(LETTER)="NO" S END=220,SCOL=17
  1. I $G(LETTER)'=1 S END=220,SCOL=17 ;JMC If Total Payment or Neither selected
  1. S DGPAGE=$G(DGPAGE)+1
  1. F CNT=1:1:SCOL D
  1. . S CNAME=$P($T(COLHD+CNT),U,2)
  1. . S LENGTH=$P($T(COLHD+CNT),U,4)
  1. . S LOC=COL+((LENGTH-$L(CNAME))\2)
  1. . I CNT>1 S LOC=LOC+1
  1. . W ?LOC,CNAME
  1. . S COL=COL+LENGTH
  1. . I CNT>1 S COL=COL+1
  1. . I CNT<SCOL W ?COL,"^"
  1. I $G(LETTER)=2 W ?223,"^Total Principal"
  1. W !
  1. S COL=0
  1. F CNT=1:1:SCOL D
  1. . S CNAME=$P($T(COLHD+CNT),U,3)
  1. . S LENGTH=$P($T(COLHD+CNT),U,4)
  1. . S LOC=COL+((LENGTH-$L(CNAME))\2)
  1. . I CNT>1 S LOC=LOC+1
  1. . S COL=COL+LENGTH
  1. . W ?LOC,CNAME
  1. . I CNT>1 S COL=COL+1
  1. . I CNT<SCOL W ?COL,"^"
  1. I $G(LETTER)=2 W ?223,"^Paid on Bill Number"
  1. Q
  1. COLHD ; $T target. Format: Column #^1st row data^2nd row data^Field Width
  1. ;;1^^Veteran Name^26
  1. ;;2^^SSN^9
  1. ;;3^^Bill Number^11
  1. ;;4^^Category^26
  1. ;;5^Charge^Amount^8
  1. ;;6^Unit^Day^4
  1. ;;7^Medical^DOS^7
  1. ;;8^Release^RX DT^7
  1. ;;9^^RX Number^12
  1. ;;10^^RX Name^16
  1. ;;11^^IB Status^13
  1. ;;12^^AR Status^21
  1. ;;13^Cancel^Date^7
  1. ;;14^Cancellation^Reason^14
  1. ;;15^^Cancelled By^16
  1. ;;16^^APPR^6
  1. ;;17^^RSC^4
  1. ;;18^^Letter1^7
  1. ;;19^^Letter2^7
  1. ;;20^^Letter3^7
  1. ;;21^^Letter4^7
  1. Q
  1. ;
  1. RUNRPT ;Gather data for Report
  1. D GET350
  1. I IBSTAT=4 D GET399^RCVCR2 ; Only pull file #399 data if user selected All as the desired IB Status
  1. Q
  1. ;
  1. GET350 ; Collect data originating from the INTEGRATED BILLING ACTION file (#350)
  1. ;
  1. N IBIEN,IB0,STATLST,CNT,STATLST,LINE,RESULT,IBSTATNM,POP,SVCTYP,BILLNUM
  1. N DATEINFO,TRIGDT,SVCDT,XTEMP,DIC,DR,DA,DIQ,FBILLNUM,LCNT,LTRFLD,RC430IEN
  1. N TLTR,IBCANCLR,IBCANCLD,IBCANCLB,ARSTAT,ARAPPR,ARRSC,ARIEN,ARFLDS,RC430TPR
  1. S (IBIEN,IBCANCLR,ICANCLD,IBCANCLB)="",(CNT,RC430TPR)=0
  1. ; STATUS=BILLED,ON HOLD,CANCELLED, or ALL
  1. S STATLST=$S(IBSTAT=1:"/3/",IBSTAT=2:"/8/",IBSTAT=3:"/10/",1:"/3/8/10/")
  1. K ^TMP($J,"RCVCR")
  1. F S IBIEN=$O(^IB("C",DFN,IBIEN)) Q:IBIEN="" D
  1. . K IBFLDS
  1. . S DIC=350,DR=".01:.07;.08;.09:.12;.14:.2;12:14",DA=IBIEN,DIQ="IBFLDS",DIQ(0)="IE" D EN^DIQ1
  1. . S STAT="/"_IBFLDS(350,IBIEN,.05,"I")_"/"
  1. . S DATEINFO=$$GETDTS
  1. . I DATEINFO["#" D
  1. . . S RXDATE=IBFLDS(350,IBIEN,12,"I")
  1. . . S RXNUM=$E(IBFLDS(350,IBIEN,.08,"E"),1,12)
  1. . . S RXNAME=""
  1. . . S DATEINFO="RX/"_"350/"_RXDATE_"/"_RXDATE_"/"_RXNUM_"/"_$E(RXNAME,1,16)
  1. . S TRIGDT=$P(DATEINFO,"/",3)
  1. . S SVCDT=$P(DATEINFO,"/",4)
  1. . I TRIGDT'<FRMDTINT,TRIGDT'>TODTINT,(STATLST[STAT) D
  1. . . ;Check Service Type
  1. . . S RESULT=IBFLDS(350,IBIEN,.04,"I"),SVCTYP=$P(RESULT,":",1)
  1. . . I IBSVCTYP=1,(SVCTYP=52!(IBFLDS(350,IBIEN,.03,"E")["RX")) Q ;Only include Medical
  1. . . I IBSVCTYP=2,(SVCTYP'=52),(IBFLDS(350,IBIEN,.03,"E")'["RX") Q ;Only include RX
  1. . . ;Get Cancellation information if it exists
  1. . . S IBCANCLR=IBFLDS(350,IBIEN,.1,"E")
  1. . . S IBCANCLD=IBFLDS(350,IBIEN,14,"I")
  1. . . S IBCANCLB=IBFLDS(350,IBIEN,13,"E")
  1. . . ;Get data & Set into scratch global ^TMP($J,"RCVCR",BILLNUM,DATE,CNT)=
  1. . . ;FILE#^IBIEN^REF#^PARENT CHARGE^PARENT EVENT^STATUS^UNITS^TOTAL CHARG^AR BILL NUMBER^CATEGORY
  1. . . ;MEDICAL DOS^Release RX DT^RX #^RX Name^
  1. . . ;CNT is used to distinguish entries with the same Bill Number
  1. . . S (CNT,ARIEN)=0
  1. . . S FBILLNUM=IBFLDS(350,IBIEN,.11,"I") I FBILLNUM="" S BILLNUM=0
  1. . . I FBILLNUM["-" S BILLNUM=$P(FBILLNUM,"-",2)
  1. . . I BILLNUM'="" S ARIEN=$O(^PRCA(430,"D",BILLNUM,"")) ;Get IEN to 430 based on bill number
  1. . . S (ARSTAT,ARAPPR,ARRSC)=""
  1. . . I BILLNUM'="",$G(ARIEN)'="" D
  1. . . . S DIC=430,DR="8;203;255.1",DA=ARIEN,DIQ="ARFLDS",DIQ(0)="IE" D EN^DIQ1
  1. . . . S ARSTAT=$G(ARFLDS(430,ARIEN,8,"E")) ; AR Status
  1. . . . S ARAPPR=$G(ARFLDS(430,ARIEN,203,"E")) ; APPR
  1. . . . I ARAPPR="" S ARAPPR="RVW"
  1. . . . S ARRSC=$G(ARFLDS(430,ARIEN,255.1,"I")) ; RSC
  1. . . . I ARRSC="" S ARRSC="RVW"
  1. . . S IBSTATNM=IBFLDS(350,IBIEN,.05,"E")
  1. . . I $D(^TMP($J,"RCVCR",BILLNUM,SVCDT)) S CNT="" S CNT=$O(^TMP($J,"RCVCR",BILLNUM,SVCDT,CNT),-1)+1
  1. . . S XTEMP=350_U_IBIEN_U_IBFLDS(350,IBIEN,.01,"E") ; Pos 1-3 FILE^IBIEN^IB Ref #
  1. . . S XTEMP=XTEMP_U_IBFLDS(350,IBIEN,.09,"E") ;Pos 4 Parent Charge
  1. . . S XTEMP=XTEMP_U_IBFLDS(350,IBIEN,.16,"E") ;Pos 5 Parent Event
  1. . . S XTEMP=XTEMP_U_IBSTATNM_U_IBFLDS(350,IBIEN,.06,"E") ;Pos 6 IB STATUS Pos 7 Units Col 11&6
  1. . . S XTEMP=XTEMP_U_IBFLDS(350,IBIEN,.07,"E") ;Pos 8 Total Charge Col 5
  1. . . S XTEMP=XTEMP_U_$E(BILLNUM,1,21) ;Pos 9 AR Bill # Col 3
  1. . . S XTEMP=XTEMP_U_$E(IBFLDS(350,IBIEN,.03,"E"),1,26) ;Pos 10 Category Col 4
  1. . . I SVCTYP'=52 D
  1. . . . I IBFLDS(350,IBIEN,.03,"E")["RX" S XTEMP=XTEMP_U_U_$$STRIP^XLFSTR($$FMTE^XLFDT(SVCDT,"8D")," ")_U_U ;Pos 11 blank Pos 12 Release RX Date Col 7&8
  1. . . . I IBFLDS(350,IBIEN,.03,"E")'["RX" S XTEMP=XTEMP_U_$$STRIP^XLFSTR($$FMTE^XLFDT(SVCDT,"8D")," ")_U_U_U ;Pos 11 Medical DOS Pos 12-14 blank Col 7,8,9,10
  1. . . I SVCTYP=52 S XTEMP=XTEMP_U_U_$$STRIP^XLFSTR($$FMTE^XLFDT(SVCDT,"8D")," ") ;Pos 11 blank Pos 12 Release RX Date Col 7&8
  1. . . I SVCTYP=52 S XTEMP=XTEMP_U_$P(DATEINFO,"/",5)_U_$P(DATEINFO,"/",6) ;Pos 13 RX Number, Pos 14 RX Name Col 9&10
  1. . . S XTEMP=XTEMP_U_$E($G(ARSTAT),1,21) ;Pos 15 AR Status Col 12
  1. . . S XTEMP=XTEMP_U I $G(IBCANCLR)'="" S XTEMP=XTEMP_$$STRIP^XLFSTR($$FMTE^XLFDT($G(IBCANCLD),"8D")," ") ;Pos 16 Cancel Dt
  1. . . S XTEMP=XTEMP_U I $G(IBCANCLR)'="" S XTEMP=XTEMP_$E($G(IBCANCLR),1,14) ;Pos 17 Cancel Reason
  1. . . S XTEMP=XTEMP_U I $G(IBCANCLR)'="" S XTEMP=XTEMP_$E(IBCANCLB,1,16) ;Pos 18 Cancel By
  1. . . S XTEMP=XTEMP_U_$G(ARAPPR) ;Pos 19 APPR
  1. . . S XTEMP=XTEMP_U_$G(ARRSC) ;Pos 20 RSC
  1. . . ;Get Letter dates if they exist
  1. . . I FBILLNUM D
  1. . . . I '$D(^PRCA(430,"B",FBILLNUM)) Q
  1. . . . S RC430IEN=$O(^PRCA(430,"B",FBILLNUM,""))
  1. . . . I $G(LETTER)=1 D ;JMC display letters if Letter Dates selected
  1. . . . . K ARFLDS
  1. . . . . S DIC=430,DR="61:63;68",DA=RC430IEN,DIQ="ARFLDS",DIQ(0)="I" D EN^DIQ1
  1. . . . . S LCNT=0
  1. . . . . F LTRFLD=61,62,63,68 D
  1. . . . . . S LCNT=LCNT+1 S TLTR="LTR"_LCNT
  1. . . . . . S @TLTR=ARFLDS(430,RC430IEN,LTRFLD,"I")
  1. . . . . . I @TLTR'="" S XTEMP=XTEMP_U_$$STRIP^XLFSTR($$FMTE^XLFDT(@TLTR,"8D")," ") ; Pos 21-24 Letter 1-4
  1. . . . . . I @TLTR="" S XTEMP=XTEMP_U_"NO DATE" ; Pos 21-24 Letter 1-4
  1. . . . I $G(LETTER)=2 D ;user wants to display Total Payments Received on Bill Number
  1. . . . . S RC430TPR=+$P($G(^PRCA(430,RC430IEN,7)),"^",7)
  1. . . . . S XTEMP=XTEMP_U_RC430TPR
  1. . . S ^TMP($J,"RCVCR",BILLNUM,SVCDT,CNT)=XTEMP
  1. . . K XTEMP
  1. Q
  1. ;
  1. OUTPRPT ; Loop through ^TMP to write report lines.
  1. N LINE,BILLNUM,CNT,JUNK,RCTPRARY
  1. S CNT=0,POP=0,LINE="",BILLNUM="",JUNK=0
  1. I '$D(^TMP($J,"RCVCR")) S POP=1 W !,"NO DATA FOUND" Q
  1. F S BILLNUM=$O(^TMP($J,"RCVCR",BILLNUM)) Q:BILLNUM=""!POP D Q:IBQUIT
  1. . S SVCDT="" F S SVCDT=$O(^TMP($J,"RCVCR",BILLNUM,SVCDT)) Q:SVCDT=""!POP D Q:IBQUIT
  1. . . S CNT="" F S CNT=$O(^TMP($J,"RCVCR",BILLNUM,SVCDT,CNT)) Q:CNT="" D Q:IBQUIT
  1. . . . I $Y>(IOSL-4) W ! D PAUSE(.IBQUIT) Q:IBQUIT W @IOF D PRTCOLHD
  1. . . . S LINE=^TMP($J,"RCVCR",BILLNUM,SVCDT,CNT)
  1. . . . I $P(LINE,U,9)=0 S $P(LINE,U,9)=""
  1. . . . I '$P(LINE,U,4) D WRITEREC(LINE)
  1. . . . I $P(LINE,U,4)=$P(LINE,U,3),($P(LINE,U,3)'="") D WRITEREC(LINE)
  1. K ^TMP($J,"RCVCR"),RCTPRARY
  1. Q
  1. ;
  1. WRITEREC(LINE) ; Write one line of report
  1. ; display date as DDmmmYY $$STRIP^XLFSTR($$FMTE^XLFDT(3070308,"8D")," ")
  1. W !,$E(VETNM,1,26),?26,U,SSN,?36,U,$P(LINE,U,9),?48,U,$P(LINE,U,10),?75,U,$J($P(LINE,U,8),8,2)
  1. W ?84,U,$P(LINE,U,7),?89,U,$P(LINE,U,11),?97,U,$P(LINE,U,12),?105,U,$P(LINE,U,13),?118,U,$P(LINE,U,14)
  1. W ?135,U,$P(LINE,U,6),?149,U,$P(LINE,U,15),?171,U,$P(LINE,U,16),?179,U,$P(LINE,U,17),?194,U,$P(LINE,U,18)
  1. W ?211,U,$P(LINE,U,19),?218,U,$P(LINE,U,20)
  1. I $G(LETTER)=1 W ?223,U,$P(LINE,U,21),?231,U,$P(LINE,U,22),?239,U,$P(LINE,U,23),?247,U,$P(LINE,U,24) ;JMC Only print if 1 selected
  1. I $G(LETTER)=2 D
  1. . W ?223,U
  1. . I $P(LINE,U,9)="" Q
  1. . I '$D(RCTPRARY($P(LINE,U,9))) W $J($P(LINE,U,21),11,2) ;display the Total Principal Paid on Bill Number only once
  1. . S RCTPRARY($P(LINE,U,9))=""
  1. Q
  1. ;
  1. GETDTS() ; Get appropriate selection trigger dates by type of service
  1. ;Determine transaction type 52, RX Manual RX Out pat, inpatient, LTC inpatient, LTC Outpatient
  1. ;based on transaction type get date used for selection and determine if it falls within the
  1. ;date range for the report.
  1. ; Return: Transaction type/File derived from/SELDT (Selection date)/DISPDT (display date).
  1. ; in the case of RX the following is appended to the return /RX #/Drug Name
  1. N IBTYPINT,IBTYPE,IBTYPE,IBBG,DATES,RESPONSE,SVCTYP,RXFLDS,RXRFILL,RXNUM,RXNAME,IBCAT,IBDTENT
  1. N RXDATE,RXIEN,RXNODE,IBDTFRM,RXFILDT
  1. S RESPONSE="",RXRFILL="",IBCAT="",IBDTFRM="",IBDTENT=""
  1. ;RX via pharmacy system
  1. S IBCAT=IBFLDS(350,IBIEN,.03,"E")
  1. S IBTYPE=IBFLDS(350,IBIEN,.04,"E") S SVCTYP=+IBTYPE
  1. I SVCTYP=52 D ;RX
  1. . I $P(IBTYPE,";",2)'="" S RXRFILL=$P(IBTYPE,":",3)
  1. . K ^TMP($J,"RXRDT")
  1. . S RXIEN=+$P(IBTYPE,":",2)
  1. . S RXNODE="0,2"
  1. . I RXRFILL'="" S RXNODE="0,2,R^^"_RXRFILL
  1. . D RX^PSO52API(DFN,"RXRDT",RXIEN,,RXNODE,,)
  1. . I +$G(^TMP($J,"RXRDT",RXIEN,0))=-1 S RESPONSE="RX/"_"350#"_$P(^TMP($J,"RXRDT",RXIEN,0),U,2) Q
  1. . I RESPONSE'="" Q
  1. . I RXRFILL'="",$P(^TMP($J,"RXRDT",DFN,RXIEN,"RF",0),U,1)=-1 Q ;No data for refill
  1. . ;get the release date
  1. . I RXRFILL'="" S RXDATE=$P($G(^TMP($J,"RXRDT",DFN,RXIEN,"RF",RXRFILL,17)),U,1)
  1. . E S RXDATE=$P($G(^TMP($J,"RXRDT",DFN,RXIEN,31)),U,1)
  1. . ;get the fill date
  1. . I RXRFILL'="" S RXFILDT=$P($G(^TMP($J,"RXRDT",DFN,RXIEN,"RF",RXRFILL,0.01)),U,1)
  1. . E S RXFILDT=+$P($G(^TMP($J,"RXRDT",DFN,RXIEN,22)),U,1)
  1. . ;if no release date then use the refill date instead
  1. . I 'RXDATE,RXFILDT S RXDATE=RXFILDT
  1. . S RXDATE=RXDATE\1
  1. . S RXNUM=^TMP($J,"RXRDT",DFN,RXIEN,.01)
  1. . S RXNAME=$P(^TMP($J,"RXRDT",DFN,RXIEN,6),U,2)
  1. . S RESPONSE="RX/"_"350/"_RXDATE_"/"_RXDATE_"/"_RXNUM_"/"_$E(RXNAME,1,16)
  1. I RESPONSE'="" Q RESPONSE
  1. ;Manually entered RX
  1. I SVCTYP=350 D
  1. . I IBCAT'["RX" Q ; Medical Charge
  1. . S IBDTENT=IBFLDS(350,IBIEN,.15,"I")
  1. . I IBDTENT="" S IBDTENT=IBFLDS(350,IBIEN,12,"I")
  1. . S IBDTFRM=IBFLDS(350,IBIEN,.14,"I")
  1. . I IBDTFRM="" S IBDTFRM=IBDTENT
  1. . S RESPONSE="RXM/"_"350/"_IBDTENT_"/"_IBDTFRM
  1. I RESPONSE'="" Q RESPONSE
  1. ;Inpatient or LTC Inpatient
  1. ;INP/350/(#.14) DATE BILLED FROM - used as trigger date to compare against the date range/(#.14) DATE BILLED FROM - used as DOS
  1. I IBCAT["INPT"!(IBCAT["ADMISSION") D
  1. . ;S RESPONSE="INP/"_"350/"_IBFLDS(350,IBIEN,.15,"I")_"/"_IBFLDS(350,IBIEN,.14,"I")
  1. . S RESPONSE="INP/"_"350/"_IBFLDS(350,IBIEN,.14,"I")_"/"_IBFLDS(350,IBIEN,.14,"I") ;jmc
  1. I RESPONSE'="" Q RESPONSE
  1. ;All Outpatient except for LTC
  1. S RESPONSE="OPT/350/"_IBFLDS(350,IBIEN,.14,"I")_"/"_IBFLDS(350,IBIEN,.14,"I")
  1. Q RESPONSE
  1. ;
  1. PAUSE(IBQUIT) ;
  1. I $G(DGPAGE)>0,TRM K DIR S DIR(0)="E" D ^DIR K DIR S:+Y=0 IBQUIT=1
  1. Q
  1. CLEAN ; KILL ALL REMAINING VARIABLES BEFORE EXIT
  1. K ^TMP($J,"RXRDT")
  1. K RXFLDS,IBFLDS,TRIGDT,DPTDFN,IBRXFILL,IBRXNAM,IBRXNUM,ICANCLD,LTR1,LTR2,LTR3,LTR4,VADM
  1. K ARSTAT,ARAPPR,ARRSC
  1. Q
  1. ;