DVBARSBD ;ALB/RPM - CAPRI 2507 REQUEST STATUS BY DT RANGE REPORT ; 01/24/12
;;2.7;AMIE;**179,185,189,190,192,193**;Apr 10, 1995;Build 84
;
Q ;NO DIRECT ENTRY
;
REQSTAT(DVBSDAT,DVBEDAT,DVBRSTAT,DVBDELIM,DVBNODT) ;entry for request status by dt range
;
; Input:
; DVBSDAT - start date (FM format)
; DVBEDAT - end date (FM format)
; DVBRSTAT - request status (internal format)
; DVBDELIM - return delimited results (0=no;1=yes)
; DVBNODT - ignore date range (0=no;1=yes)
;
N EXSTAT ;request status (external format)
N EXSDAT ;start date (external format: MM/DD/YYYY)
N EXEDAT ;end date (external format: MM/DD/YYYY)
N DVBARS ;request status conversion results
N DVBERR ;FM error msg
N DVBCNT ;returned record count
;GRE- 193 ;Request Status conversion Report changes ;
N RRIENINC ; re-route ien counter
N RRDATE ;re-route date
N RRTOSITE ;re-route to site
N RRFRMSITE ; re-route from site;
N RRSTATINC ; re-route status counter
N RRSTATDTE ; re-route status date
N RRSTAT ; re-route status
N DVBLINE ;header separator
;GRE ; end Request Status conversion Report changes ;
K ^TMP("DVBREQ",$J),^TMP("DVBREQN",$J)
S EXSDAT=$$FMTE^XLFDT(DVBSDAT,"5DZ")
S EXEDAT=$$FMTE^XLFDT(DVBEDAT,"5DZ")
S (RRDATE,RRFRMSITE,RRTOSITE,RRSTATDTE,RRSTAT)="",(RRIENINC,RRSTATINC)=0
S $P(DVBLINE,"-",131)=""
I DVBRSTAT="RN" S DVBRSTAT="NR"
I DVBRSTAT="A" S EXSTAT="ALL"
E D
. D CHK^DIE(396.3,17,"E",DVBRSTAT,.DVBARS,"DVBERR")
. S EXSTAT=$G(DVBARS(0))
S DVBCNT=1
S DVBAD=$S(DVBDELIM=1:",",1:0)
;
;collect records matching search criteria
I DVBNODT D
. S EXSDAT="NO START DATE"
. S EXEDAT="NO END DATE"
. I DVBDELIM D DELIMHDR(EXSDAT,EXEDAT,EXSTAT)
. D GETRECSN(DVBRSTAT,.DVBCNT)
E D
. I DVBDELIM D DELIMHDR(EXSDAT,EXEDAT,EXSTAT)
. D GETRECS(DVBSDAT,DVBEDAT,DVBRSTAT,.DVBCNT)
D I 'DVBCNT D
. W "NO DATA FOUND"
E D
. I 'DVBDELIM D PLAINHDR(EXSDAT,EXEDAT,EXSTAT),PLAIN ;plain text format
. I DVBDELIM D DELIM ;comma delimited format
;
END ;Clean up local variables
K DIWF,DIWL,DIWR,DVBAD,DVBAX,DVBAY,DVBCNRS,DVBEXAM,DVBIEN4,DVBI2,DVBX,DVBXCNT,LINE,X
K DVBAD,DVBAX,DVBAY,DVBCT,DVBCTN,DVBCTW,DVBIEN4,DVBI2,DIWF,DIWL,DIWR,DVBX,DVBSC,DVBSCC,DVBSCN,DVBSCW,DVBSCWA,DVBXCNT,LINE,X
K DVBSCNS,DVBAA,^TMP("DVBREQ",$J),^TMP("DVBREQH",$J)
K DVBREQH,DVBREQL2,DVBREQL3,DVBI22,MSG,RCC,RCR,RRFRMSITE
Q
;
GETRECS(SDAT,EDAT,RSTAT,CNT) ;collect 2507 REQUEST record matches, when DVBNODT=0 means not ignoring the date range
;This procedure collects all 2507 REQUEST records that have a
;DATE STATUS LAST CHANGED within the start and end dates and have
;a REQUEST STATUS that matches the input request status parameter.
;
; Input:
; SDAT - start date (FM format)
; EDAT - end date (FM format)
; RSTAT - request status (internal format)
; CNT - record count (passed by reference)
;
N CHGDAT ;change date
N DVBIEN ;2507 REQUEST IEN
N DVBSTAT ;2507 REQUEST STATUS
N FLD ;field array in external format
S CHGDAT=SDAT-1
S DVBIEN=0,CNT=0 F S CHGDAT=$O(^DVB(396.3,"AH",CHGDAT)) Q:'CHGDAT!(CHGDAT>EDAT) D
. F S DVBIEN=$O(^DVB(396.3,"AH",CHGDAT,DVBIEN)) Q:'DVBIEN D
. . ;AJF; Request Status Conversion
. . S DVBSTAT=$$RSTAT^DVBCUTL8($P(^DVB(396.3,DVBIEN,0),U,18))
. . I RSTAT="A"!(DVBSTAT=RSTAT) D
. . . K FLD
. . . I $$SETFLDS(DVBIEN,.FLD) D
. . . . S CNT=CNT+1,DVBXCNT=1
. . . . I $G(DVBAD)'="," S ^TMP("DVBREQX",$J,CNT)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT) D
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT)_U
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=^TMP("DVBREQ",$J,CNT,DVBIEN)_FLD("DVBCTW")_U_FLD("DVBSCWA")_U_RRDATE_U_RRTOSITE_U_RRFRMSITE
. . . . . S CNT=CNT+1,DVBXCNT=DVBXCNT+1
. . . . I $G(DVBAD)="," D
. . . . . S (RCC,RCR)=""
. . . . . D:$D(FLD("IEN4",1)) CANFLD
. . . . . S FLD("CANRS")=RCR,FLD("CANCOM")=RCC
. . . . . S FLD("RRLOC")=$TR(FLD("RRLOC"),",",""),FLD("RRSTE")=$TR(FLD("RRSTE"),",","")
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=FLD("SS")_DVBAD_""""_FLD("NM")_""""_DVBAD_FLD("REQDT")_DVBAD_FLD("RELDT")_DVBAD_""""_FLD("PRTDT")_""""_DVBAD
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=^TMP("DVBREQ",$J,CNT,DVBIEN)_""""_FLD("RS")_""""_DVBAD_FLD("CANDT")_DVBAD_""""_FLD("RO")_""""_DVBAD
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=^TMP("DVBREQ",$J,CNT,DVBIEN)_""""_FLD("CANRS")_""""_DVBAD_FLD("CANCOM")_DVBAD_""""_FLD("DVBCTW")_""""_DVBAD
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=^TMP("DVBREQ",$J,CNT,DVBIEN)_""""_FLD("DVBSCWA")_""""_DVBAD_FLD("RRDTE")_DVBAD_""""_FLD("RRLOC")_""""_DVBAD
. . . . . S ^TMP("DVBREQ",$J,CNT,DVBIEN)=^TMP("DVBREQ",$J,CNT,DVBIEN)_""""_FLD("RRSTE")_""""_DVBAD
. . . . . S CNT=CNT+1
Q
CANFLD ;
N RS1,RC1,RRCR,RRCC
S DVBX=0
F S DVBX=$O(FLD("IEN4",DVBX)) Q:'DVBX D
. S RS1=FLD("CANRS",DVBX),RC1=FLD("CANCOM",DVBX)
. S RS1=$E(RS1,1,50),RC1=$E(RC1,1,50)
. I RS1'="",'$D(RRCR(RS1)) S RRCR(RS1)=""
. I RC1'="",'$D(RRCC(RC1)) S RRCC(RC1)=""
S (RCR,RS1)="" F S RS1=$O(RRCR(RS1)) Q:RS1="" S RCR=$S(RCR="":RS1,1:RCR_"^"_RS1)
S (RCC,RC1)="" F S RC1=$O(RRCC(RC1)) Q:RC1="" S RCC=$S(RCC="":RC1,1:RCC_"^"_RC1)
S RCC=$TR(RCC,",","")
I $L(RCR)>40 S RCR="*"_$E(RCR,1,40)
I $L(RCC)>40 S RCC="*"_$E(RCC,1,40)
Q
;
SETFLDS(DVBIEN,DVBFLDS) ;build field array in external format
;This function formats the collected record data in external format
;and returns the results TRUE and an array on success. Otherwise,
;the function returns FALSE.
;
; Integration Reference #10061 - DEM^VADPT
;
; Input:
; DVBIEN - 2507 REQUEST IEN
; DVBFLDS - field array passed by reference
;
; Output:
; DVBFLDS("IEN") - 2507 REQUEST IEN
; DVBFLDS("NM") - patient name
; DVBFLDS("SS") - social security number
; DVBFLDS("RS") - request status
; DVBFLDS("REQDT") - request date
; DVBFLDS("RELDT") - release date
; DVBFLDS("PRTDT") - print date
; DVBFLDS("CANDT") - canceled date
; DVBFLDS("RO") - regional office
; DVBFLDS("IREQDT") - request date in internal FM format
; DVBFLDS("EXAM") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM name
; DVBFLDS("CANRS") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM CANCELLATION REASON name
; DVBFLDS("CANCOM") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM CANCELLATION COMMENTS name
;GRE add re-route fields
; DVBFLDS("RRDATE") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Date
; DVBFLDS("RRSITE") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Site
; DVBFLDS("RRLOC") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Location
; Function Result - return 1 on success; otherwise returns 0
;
N DFN ;PATIENT file IEN used in VADPT call
N DVBDAT ;2507 REQUEST data field array
N DVBIENS ;FM IENS value
N DVBRSLT ;function result
N VADM ;VADPT return array
N DVBIEN4 ;the IEN FROM 2507 EXAM FILE 396.4
N DVBALAST ;number of lines in the wp cancellation comments
N DVBAI ;for loop index
N DVBAX ;
K DVBFLDS
S (RRDATE,RRFRMSITE,RRTOSITE)=""
S DVBRSLT=0
S DVBIENS=+$G(DVBIEN)_","
D GETS^DIQ(396.3,DVBIENS,".01;1;2;13;15;17;19","IE","DVBDAT","")
S DFN=$G(DVBDAT(396.3,DVBIENS,.01,"I"))
D DEM^VADPT
I $G(VADM(1))'="" D ;only return record when name is resolved
. S DVBFLDS("IEN")=DVBIEN
. S DVBFLDS("NM")=$G(VADM(1))
. S DVBFLDS("SS")=$S(DVBDELIM:$P($G(VADM(2)),U,2),1:$P($G(VADM(2)),U,1))
. S DVBFLDS("RS")=$G(DVBDAT(396.3,DVBIENS,17,"E"))
. S DVBFLDS("REQDT")=$$FMTE^XLFDT($G(DVBDAT(396.3,DVBIENS,1,"I")),"5DZ")
. S DVBFLDS("RELDT")=$$FMTE^XLFDT($G(DVBDAT(396.3,DVBIENS,13,"I")),"5DZ")
. S DVBFLDS("PRTDT")=$$FMTE^XLFDT($G(DVBDAT(396.3,DVBIENS,15,"I")),"5DZ")
. S DVBFLDS("CANDT")=$$FMTE^XLFDT($G(DVBDAT(396.3,DVBIENS,19,"I")),"5DZ")
. S DVBFLDS("RO")=$G(DVBDAT(396.3,DVBIENS,2,"E"))
. D CLAIMTYP,SPEC,GETRRDAT
. S DVBFLDS("DVBCTW")=DVBCTW
. S DVBFLDS("DVBSCWA")=DVBSCWA
. S DVBFLDS("RRDTE")=RRDATE
. S DVBFLDS("RRSTE")=RRFRMSITE
. S DVBFLDS("RRLOC")=RRTOSITE
. S DVBXCNT=1
. S (DVBFLDS("CANRS",DVBXCNT),DVBFLDS("CANCOM",DVBXCNT),DVBFLDS("IEN4"))=""
. S DVBIEN4=0 F S DVBIEN4=$O(^DVB(396.4,"C",DVBIEN,DVBIEN4)) Q:'DVBIEN4 D
. . I $D(^DVB(396.4,DVBIEN4,"CAN")) D
. . . S DVBAY=($P($P(^DVB(396.4,DVBIEN4,"CAN"),"^",1),".",1)) I DVBAY>(DVBSDAT-1)&DVBAY<(DVBEDAT+1) D
. . . . S DVBFLDS("CANRS",DVBXCNT)=$$GET1^DIQ(396.4,DVBIEN4,52)
. . . . I $D(^DVB(396.4,DVBIEN4,5)) D
. . . . . S DVBFLDS("IEN4",DVBXCNT)=DVBIEN4
. . . . . K WP S DVBAX=$$GET1^DIQ(396.4,DVBIEN4,53,"Z","WP") ; this puts the wordprocessing field into an array 'WP(#,0)=' next it gets put into one entry of the DVBFLDS ARRAY so we can handle any comma's that aren't delimiters
. . . . . ;DVBALAST gets the number of WP lines to loop through in the for loop
. . . . . S DVBALAST=$P(^DVB(396.4,DVBIEN4,5,0),U,3) S DVBAI="",DVBFLDS("CANCOM",DVBXCNT)=WP(1,0)
. . . . . F DVBAI=1:1:DVBALAST S DVBFLDS("CANCOM",DVBXCNT)=DVBFLDS("CANCOM",DVBXCNT)_" "_WP(DVBAI,0) Q:$L(DVBFLDS("CANCOM",DVBXCNT))>150
. . . . . ;S DVBALAST=$P(^DVB(396.4,DVBIEN4,5,0),U,3) S DVBAI="" F DVBAI=1:1:DVBALAST S DVBFLDS("CANCOM",DVBAI)=WP(DVBAI,0)
. . . . . S DVBXCNT=DVBXCNT+1
. S DVBFLDS("IREQDT")=$G(DVBDAT(396.3,DVBIENS,1,"I"))
. S DVBRSLT=1
Q DVBRSLT
;
DELIMHDR(EXSDAT,EXEDAT,EXSTAT) ;output delimited format header
; Input:
; EXSDAT - start date (external format)
; EXEDAT - end date (external format)
; EXSTAT - request status (external format)
; GRE ; added re-route status information to the report
S ^TMP("DVBREQH",$J,DVBCNT)="Request Status by Date Range Report",DVBCNT=DVBCNT+1
S ^TMP("DVBREQH",$J,DVBCNT)="Date Range: "_EXSDAT_" - "_EXEDAT,DVBCNT=DVBCNT+1
S ^TMP("DVBREQH",$J,DVBCNT)=""""_"Request Status: "_EXSTAT_""""_$C(13),DVBCNT=DVBCNT+1
S ^TMP("DVBREQH",$J,DVBCNT)="SSN"_DVBAD_"PatientName"_DVBAD_"RequestDT"_DVBAD_"DTReleased"_DVBAD_"DTPrinted"_DVBAD_"RequestStatus"_DVBAD_"DtCanceled"_DVBAD_"Station"_DVBAD_"Cancellation Reason"_DVBAD_"Cancellation Comments"_DVBAD
S ^TMP("DVBREQH",$J,DVBCNT)=^TMP("DVBREQH",$J,DVBCNT)_"Claim Type"_DVBAD_"Special Consideration(s)"_DVBAD_"Re-Route Date"_DVBAD_"Re-Route To Site"_DVBAD_"Re-Route From Site",DVBCNT=DVBCNT+1
Q
;
DELIM ;output delimited format
;
N DVBI ;generic counter
N DVBREQ ;request record
;
U IO
S DVBI=0 F S DVBI=$O(^TMP("DVBREQH",$J,DVBI)) Q:'DVBI D
. S DVBREQH=^TMP("DVBREQH",$J,DVBI)
. W !,DVBREQH
S DVBI2=0 F S DVBI2=$O(^TMP("DVBREQ",$J,DVBI2)) Q:'DVBI2 D
. S DVBIEN=0 F S DVBIEN=$O(^TMP("DVBREQ",$J,DVBI2,DVBIEN)) Q:'DVBIEN D
. . S DVBREQL2=^TMP("DVBREQ",$J,DVBI2,DVBIEN)
. . W !,DVBREQL2
. . S DVBI22=0 F S DVBI22=$O(^TMP("DVBREQ",$J,DVBI2,DVBIEN,DVBI22)) Q:'DVBI22 D
. . . S DVBREQL3=^TMP("DVBREQ",$J,DVBI2,DVBIEN,DVBI22)
. . . W !,DVBREQL3
;
Q
;
PLAINHDR(EXSDAT,EXEDAT,EXSTAT) ;output plain text header
;Populate the header information.
;CAUTION: The CAPRI GUI pulls this information to populate the header
;for each page when creating a printed report. Do not modify the
;content or line count of the header information without validating
;against the CAPRI GUI interface.
;
;CAPRI GUI to populate
; Input:
; EXSDAT - start date (external format)
; EXEDAT - end date (external format)
; EXSTAT - request status (external format)
;
; N DVBLINE ;header separator
;
U IO
;S $P(DVBLINE,"-",131)=""
W !,"Date Range: "_EXSDAT_" - "_EXEDAT
W !,"Request Status: ",EXSTAT
W !,"-----------------------------------------------------------------------------------------------"
Q
;
PLAIN ;output plain text format
;Output formatted text format. The patient name and station nameC
;are truncated at 20 characters to maintain 132 character report.
;
N DVBI ;generic counter
N DVBREQ ;request record
U IO
S DVBI=0
F S DVBI=$O(^TMP("DVBREQ",$J,DVBI)) Q:'DVBI D
. S DVBIEN=0 F S DVBIEN=$O(^TMP("DVBREQ",$J,DVBI,DVBIEN)) Q:'DVBIEN D
. . S DVBREQ=^TMP("DVBREQ",$J,DVBI,DVBIEN)
. . D GETRRDAT
. . W !,DVBLINE
. . W !,"SSN:",?14,$P(DVBREQ,U,2)
. . W !,"PATIENT NAME:",?14,$E($P(DVBREQ,U,3),1,20)
. . W !,"REQUEST DT:",?14,$P(DVBREQ,U,4)
. . W !,"DT RELEASED:",?14,$P(DVBREQ,U,5)
. . W !,"DT PRINTED:",?14,$P(DVBREQ,U,6)
. . W !,"STATUS:",?14,$P(DVBREQ,U,7)
. . W !,"DT CANCELED:",?14,$P(DVBREQ,U,8)
. . D CLAIMTYP,SPEC
. . W !,"CLAIM TYPE: ",DVBCTW
. . W !,"SPECIAL CONSIDERATION(S):",DVBSCWA
. . W !,"RE-ROUTE DATE:",RRDATE
. . W !,"RE-ROUTE FROM SITE:",RRFRMSITE
. . W !,"RE-ROUTE TO SITE:",RRTOSITE
. . S DVBIEN4=0 F S DVBIEN4=$O(^DVB(396.4,"C",DVBIEN,DVBIEN4)) Q:'DVBIEN4 D
. . . I $D(^DVB(396.4,DVBIEN4,"CAN")) D
. . . . S DVBAY=($P($P(^DVB(396.4,DVBIEN4,"CAN"),"^",1),".",1)) I DVBAY>(DVBSDAT-1)&DVBAY<(DVBEDAT+1) D
. . . . . S DVBCNRS=$$GET1^DIQ(396.4,DVBIEN4,52) D
. . . . . I DVBCNRS'="" D W !,"CANCELLATION REASON:",?14,DVBCNRS
. . . . . .;W !,"CANCELLATION REASON:",?14,DVBCNRS
. . . . . I $D(^DVB(396.4,DVBIEN4,5)) D
. . . . . . K ^UTILITY($J,"W")
. . . . . . W !,"CANCELLATION COMMENTS:",?14 F LINE=0:0 S LINE=$O(^DVB(396.4,DVBIEN4,5,LINE)) Q:LINE="" S X=^(LINE,0),DIWL=5,DIWR=75,DIWF="NW" D ^DIWP
Q
;
GETRECSN(RSTAT,DVBCNT) ;collect 2507 REQUEST status matches and ignore date range
;This procedure collects all 2507 REQUEST records that have a REQUEST STATUS
;that matches the input request status parameter regardless of the LAST
;STATUS CHANGE DATE range. The procedure uses the "AF" index which sorts
;by REQUEST STATUS and REGIONAL OFFICE.
;
; Input:
; RSTAT - request status (internal format)
; DVBCNT - record count (passed by reference)
;
;
N DVBIEN ;2507 REQUEST IEN
N FLD ;field array in external format
N DVBRO ;regional office
S DVBRO=0,DVBCNT=0 F S DVBRO=$O(^DVB(396.3,"AF",RSTAT,DVBRO)) Q:'DVBRO D
. S DVBIEN=0
. F S DVBIEN=$O(^DVB(396.3,"AF",RSTAT,DVBRO,DVBIEN)) Q:'DVBIEN D
. . K FLD
. . I $$SETFLDS(DVBIEN,.FLD) D
. . . S DVBXCNT=1
. . . I $G(DVBAD)'="," D
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT)_U
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=^TMP("DVBREQ",$J,DVBCNT,DVBIEN)_FLD("DVBCTW")_U_FLD("DVBSCWA")
. . . . S DVBCNT=DVBCNT+1,DVBXCNT=DVBXCNT+1
. . . I $G(DVBAD)="," D
. . . . S (RCC,RCR)=""
. . . . D:$D(FLD("IEN4",1)) CANFLD
. . . . S FLD("CANRS")=RCR,FLD("CANCOM")=RCC
. . . . S FLD("RRLOC")=$TR(FLD("RRLOC"),",",""),FLD("RRSTE")=$TR(FLD("RRSTE"),",","")
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=FLD("SS")_DVBAD_""""_FLD("NM")_""""_DVBAD_FLD("REQDT")_DVBAD_FLD("RELDT")_DVBAD_""""_FLD("PRTDT")_""""_DVBAD
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=^TMP("DVBREQ",$J,DVBCNT,DVBIEN)_""""_FLD("RS")_""""_DVBAD_FLD("CANDT")_DVBAD_""""_FLD("RO")_""""_DVBAD
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=^TMP("DVBREQ",$J,DVBCNT,DVBIEN)_""""_FLD("CANRS")_""""_DVBAD_FLD("CANCOM")_DVBAD_""""_FLD("DVBCTW")_""""_DVBAD
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=^TMP("DVBREQ",$J,DVBCNT,DVBIEN)_""""_FLD("DVBSCWA")_""""_DVBAD_FLD("RRDTE")_DVBAD_""""_FLD("RRSTE")_""""_DVBAD
. . . . S ^TMP("DVBREQ",$J,DVBCNT,DVBIEN)=^TMP("DVBREQ",$J,DVBCNT,DVBIEN)_""""_FLD("RRLOC")_""""_DVBAD
. . . . S DVBCNT=DVBCNT+1
;load output global with sorted list
S CHGDAT="",CNT=0 ;use "" because value could be zero ("0")
F S CHGDAT=$O(^TMP("DVBREQN",$J,CHGDAT)) Q:(CHGDAT="") D
. S DVBIEN=0
. F S DVBIEN=$O(^TMP("DVBREQN",$J,CHGDAT,DVBIEN)) Q:'DVBIEN D
. . S CNT=CNT+1
. . S ^TMP("DVBREQ",$J,CNT)=^TMP("DVBREQN",$J,CHGDAT,DVBIEN)
Q
;
CLAIMTYP ;THE CLAIM TYPE OF A 2507 REQUEST
S DVBCTW=""
Q:'$D(^DVB(396.3,DVBIEN,9,0))
;DVBIEN is the 2507 REQUEST FILE IEN
;DVBCTW is the string /name of the CLAIM TYPE
D GETS^DIQ(396.3,DVBIEN_",","9.1*","E","MSG","ERR")
S DVBCTW=$G(MSG("396.32","1,"_DVBIEN_",",".01","E"))
Q
;
SPEC ;SPECIAL CONSIDERATION(S) FOR A 2507 REQUEST
K DVBSCW
S DVBSCWA=""
N DVBX
;DVBIEN is the 2507 REQUEST FILE IEN
;DVBSC is a the SPECIAL CONSIDERATION entry for the 2507 REQUEST
;DVBSCN is the pointer number to the SPECIAL CONSIDERATION file 396.25
;DVBSCW is the string /name of the SPECIAL CONSIDERATION
Q:'$D(^DVB(396.3,DVBIEN,8,0))
S DVBAA=$P(^DVB(396.3,DVBIEN,8,0),U,4)
S (DVBSC,DVBCNT)=0 F S DVBSC=$O(^DVB(396.3,DVBIEN,8,DVBSC)) Q:'DVBSC D
.S DVBSCN=$P(^DVB(396.3,DVBIEN,8,DVBSC,0),U,1)
.S DVBSCW(DVBSC)=$G(^DVB(396.25,DVBSCN,0))
.S DVBCNT=DVBCNT+1
.I (DVBCNT'=DVBAA) S:$D(DVBSCW(DVBSC)) DVBSCW(DVBSC)=DVBSCW(DVBSC)_","
S DVBX="" F S DVBX=$O(DVBSCW(DVBX)) Q:'DVBX S DVBSCWA=DVBSCWA_DVBSCW(DVBX)
Q
;
GETRRDAT ;GRE Input=IEN , get re-route date, to and from site and re-route status
S (RRDATE,RRTOSITE,RRFRMSITE,RRSTATDTE)=""
Q:'$D(^DVB(396.3,DVBIEN,6,0))
; quit if no re-route data found
K RRIENINC,RRSTATINC,RRSTAT,RRDATE,RRTOSITE,RRFRMSITE,RRSTATDTE
S (RRIENINC,RRSTATINC)=0
F S RRIENINC=$O(^DVB(396.3,DVBIEN,6,RRIENINC)) Q:RRIENINC="B" D
. S RRFRMSITE=$$EXTERNAL^DILFD(396.34,.02,,$P(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,4))
. S RRDATE=$$FMTE^XLFDT($P(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,1),"5DZ")
. S RRTOSITE=$$EXTERNAL^DILFD(396.34,.02,,$P(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,7))
. S RRSTATINC=0
. F S RRSTATINC=$O(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC)) Q:RRSTATINC="" D
. . Q:'$D(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0))
. . S RRSTATDTE=$$FMTE^XLFDT($P(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0),U,1),"5DZ")
. . S RRSTAT=$$EXTERNAL^DILFD(396.341,1,,$P(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0),U,2))
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBARSBD 18048 printed Nov 22, 2024@16:52:21 Page 2
DVBARSBD ;ALB/RPM - CAPRI 2507 REQUEST STATUS BY DT RANGE REPORT ; 01/24/12
+1 ;;2.7;AMIE;**179,185,189,190,192,193**;Apr 10, 1995;Build 84
+2 ;
+3 ;NO DIRECT ENTRY
QUIT
+4 ;
REQSTAT(DVBSDAT,DVBEDAT,DVBRSTAT,DVBDELIM,DVBNODT) ;entry for request status by dt range
+1 ;
+2 ; Input:
+3 ; DVBSDAT - start date (FM format)
+4 ; DVBEDAT - end date (FM format)
+5 ; DVBRSTAT - request status (internal format)
+6 ; DVBDELIM - return delimited results (0=no;1=yes)
+7 ; DVBNODT - ignore date range (0=no;1=yes)
+8 ;
+9 ;request status (external format)
NEW EXSTAT
+10 ;start date (external format: MM/DD/YYYY)
NEW EXSDAT
+11 ;end date (external format: MM/DD/YYYY)
NEW EXEDAT
+12 ;request status conversion results
NEW DVBARS
+13 ;FM error msg
NEW DVBERR
+14 ;returned record count
NEW DVBCNT
+15 ;GRE- 193 ;Request Status conversion Report changes ;
+16 ; re-route ien counter
NEW RRIENINC
+17 ;re-route date
NEW RRDATE
+18 ;re-route to site
NEW RRTOSITE
+19 ; re-route from site;
NEW RRFRMSITE
+20 ; re-route status counter
NEW RRSTATINC
+21 ; re-route status date
NEW RRSTATDTE
+22 ; re-route status
NEW RRSTAT
+23 ;header separator
NEW DVBLINE
+24 ;GRE ; end Request Status conversion Report changes ;
+25 KILL ^TMP("DVBREQ",$JOB),^TMP("DVBREQN",$JOB)
+26 SET EXSDAT=$$FMTE^XLFDT(DVBSDAT,"5DZ")
+27 SET EXEDAT=$$FMTE^XLFDT(DVBEDAT,"5DZ")
+28 SET (RRDATE,RRFRMSITE,RRTOSITE,RRSTATDTE,RRSTAT)=""
SET (RRIENINC,RRSTATINC)=0
+29 SET $PIECE(DVBLINE,"-",131)=""
+30 IF DVBRSTAT="RN"
SET DVBRSTAT="NR"
+31 IF DVBRSTAT="A"
SET EXSTAT="ALL"
+32 IF '$TEST
Begin DoDot:1
+33 DO CHK^DIE(396.3,17,"E",DVBRSTAT,.DVBARS,"DVBERR")
+34 SET EXSTAT=$GET(DVBARS(0))
End DoDot:1
+35 SET DVBCNT=1
+36 SET DVBAD=$SELECT(DVBDELIM=1:",",1:0)
+37 ;
+38 ;collect records matching search criteria
+39 IF DVBNODT
Begin DoDot:1
+40 SET EXSDAT="NO START DATE"
+41 SET EXEDAT="NO END DATE"
+42 IF DVBDELIM
DO DELIMHDR(EXSDAT,EXEDAT,EXSTAT)
+43 DO GETRECSN(DVBRSTAT,.DVBCNT)
End DoDot:1
+44 IF '$TEST
Begin DoDot:1
+45 IF DVBDELIM
DO DELIMHDR(EXSDAT,EXEDAT,EXSTAT)
+46 DO GETRECS(DVBSDAT,DVBEDAT,DVBRSTAT,.DVBCNT)
End DoDot:1
D IF 'DVBCNT
Begin DoDot:1
+1 WRITE "NO DATA FOUND"
End DoDot:1
+2 IF '$TEST
Begin DoDot:1
+3 ;plain text format
IF 'DVBDELIM
DO PLAINHDR(EXSDAT,EXEDAT,EXSTAT)
DO PLAIN
+4 ;comma delimited format
IF DVBDELIM
DO DELIM
End DoDot:1
+5 ;
END ;Clean up local variables
+1 KILL DIWF,DIWL,DIWR,DVBAD,DVBAX,DVBAY,DVBCNRS,DVBEXAM,DVBIEN4,DVBI2,DVBX,DVBXCNT,LINE,X
+2 KILL DVBAD,DVBAX,DVBAY,DVBCT,DVBCTN,DVBCTW,DVBIEN4,DVBI2,DIWF,DIWL,DIWR,DVBX,DVBSC,DVBSCC,DVBSCN,DVBSCW,DVBSCWA,DVBXCNT,LINE,X
+3 KILL DVBSCNS,DVBAA,^TMP("DVBREQ",$JOB),^TMP("DVBREQH",$JOB)
+4 KILL DVBREQH,DVBREQL2,DVBREQL3,DVBI22,MSG,RCC,RCR,RRFRMSITE
+5 QUIT
+6 ;
GETRECS(SDAT,EDAT,RSTAT,CNT) ;collect 2507 REQUEST record matches, when DVBNODT=0 means not ignoring the date range
+1 ;This procedure collects all 2507 REQUEST records that have a
+2 ;DATE STATUS LAST CHANGED within the start and end dates and have
+3 ;a REQUEST STATUS that matches the input request status parameter.
+4 ;
+5 ; Input:
+6 ; SDAT - start date (FM format)
+7 ; EDAT - end date (FM format)
+8 ; RSTAT - request status (internal format)
+9 ; CNT - record count (passed by reference)
+10 ;
+11 ;change date
NEW CHGDAT
+12 ;2507 REQUEST IEN
NEW DVBIEN
+13 ;2507 REQUEST STATUS
NEW DVBSTAT
+14 ;field array in external format
NEW FLD
+15 SET CHGDAT=SDAT-1
+16 SET DVBIEN=0
SET CNT=0
FOR
SET CHGDAT=$ORDER(^DVB(396.3,"AH",CHGDAT))
if 'CHGDAT!(CHGDAT>EDAT)
QUIT
Begin DoDot:1
+17 FOR
SET DVBIEN=$ORDER(^DVB(396.3,"AH",CHGDAT,DVBIEN))
if 'DVBIEN
QUIT
Begin DoDot:2
+18 ;AJF; Request Status Conversion
+19 SET DVBSTAT=$$RSTAT^DVBCUTL8($PIECE(^DVB(396.3,DVBIEN,0),U,18))
+20 IF RSTAT="A"!(DVBSTAT=RSTAT)
Begin DoDot:3
+21 KILL FLD
+22 IF $$SETFLDS(DVBIEN,.FLD)
Begin DoDot:4
+23 SET CNT=CNT+1
SET DVBXCNT=1
+24 IF $GET(DVBAD)'=","
SET ^TMP("DVBREQX",$JOB,CNT)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT)
Begin DoDot:5
+25 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT)_U
+26 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=^TMP("DVBREQ",$JOB,CNT,DVBIEN)_FLD("DVBCTW")_U_FLD("DVBSCWA")_U_RRDATE_U_RRTOSITE_U_RRFRMSITE
+27 SET CNT=CNT+1
SET DVBXCNT=DVBXCNT+1
End DoDot:5
+28 IF $GET(DVBAD)=","
Begin DoDot:5
+29 SET (RCC,RCR)=""
+30 if $DATA(FLD("IEN4",1))
DO CANFLD
+31 SET FLD("CANRS")=RCR
SET FLD("CANCOM")=RCC
+32 SET FLD("RRLOC")=$TRANSLATE(FLD("RRLOC"),",","")
SET FLD("RRSTE")=$TRANSLATE(FLD("RRSTE"),",","")
+33 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=FLD("SS")_DVBAD_""""_FLD("NM")_""""_DVBAD_FLD("REQDT")_DVBAD_FLD("RELDT")_DVBAD_""""_FLD("PRTDT")_""""_DVBAD
+34 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=^TMP("DVBREQ",$JOB,CNT,DVBIEN)_""""_FLD("RS")_""""_DVBAD_FLD("CANDT")_DVBAD_""""_FLD("RO")_""""_DVBAD
+35 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=^TMP("DVBREQ",$JOB,CNT,DVBIEN)_""""_FLD("CANRS")_""""_DVBAD_FLD("CANCOM")_DVBAD_""""_FLD("DVBCTW")_""""_DVBAD
+36 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=^TMP("DVBREQ",$JOB,CNT,DVBIEN)_""""_FLD("DVBSCWA")_""""_DVBAD_FLD("RRDTE")_DVBAD_""""_FLD("RRLOC")_""""_DVBAD
+37 SET ^TMP("DVBREQ",$JOB,CNT,DVBIEN)=^TMP("DVBREQ",$JOB,CNT,DVBIEN)_""""_FLD("RRSTE")_""""_DVBAD
+38 SET CNT=CNT+1
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+39 QUIT
CANFLD ;
+1 NEW RS1,RC1,RRCR,RRCC
+2 SET DVBX=0
+3 FOR
SET DVBX=$ORDER(FLD("IEN4",DVBX))
if 'DVBX
QUIT
Begin DoDot:1
+4 SET RS1=FLD("CANRS",DVBX)
SET RC1=FLD("CANCOM",DVBX)
+5 SET RS1=$EXTRACT(RS1,1,50)
SET RC1=$EXTRACT(RC1,1,50)
+6 IF RS1'=""
IF '$DATA(RRCR(RS1))
SET RRCR(RS1)=""
+7 IF RC1'=""
IF '$DATA(RRCC(RC1))
SET RRCC(RC1)=""
End DoDot:1
+8 SET (RCR,RS1)=""
FOR
SET RS1=$ORDER(RRCR(RS1))
if RS1=""
QUIT
SET RCR=$SELECT(RCR="":RS1,1:RCR_"^"_RS1)
+9 SET (RCC,RC1)=""
FOR
SET RC1=$ORDER(RRCC(RC1))
if RC1=""
QUIT
SET RCC=$SELECT(RCC="":RC1,1:RCC_"^"_RC1)
+10 SET RCC=$TRANSLATE(RCC,",","")
+11 IF $LENGTH(RCR)>40
SET RCR="*"_$EXTRACT(RCR,1,40)
+12 IF $LENGTH(RCC)>40
SET RCC="*"_$EXTRACT(RCC,1,40)
+13 QUIT
+14 ;
SETFLDS(DVBIEN,DVBFLDS) ;build field array in external format
+1 ;This function formats the collected record data in external format
+2 ;and returns the results TRUE and an array on success. Otherwise,
+3 ;the function returns FALSE.
+4 ;
+5 ; Integration Reference #10061 - DEM^VADPT
+6 ;
+7 ; Input:
+8 ; DVBIEN - 2507 REQUEST IEN
+9 ; DVBFLDS - field array passed by reference
+10 ;
+11 ; Output:
+12 ; DVBFLDS("IEN") - 2507 REQUEST IEN
+13 ; DVBFLDS("NM") - patient name
+14 ; DVBFLDS("SS") - social security number
+15 ; DVBFLDS("RS") - request status
+16 ; DVBFLDS("REQDT") - request date
+17 ; DVBFLDS("RELDT") - release date
+18 ; DVBFLDS("PRTDT") - print date
+19 ; DVBFLDS("CANDT") - canceled date
+20 ; DVBFLDS("RO") - regional office
+21 ; DVBFLDS("IREQDT") - request date in internal FM format
+22 ; DVBFLDS("EXAM") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM name
+23 ; DVBFLDS("CANRS") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM CANCELLATION REASON name
+24 ; DVBFLDS("CANCOM") - added with patch DVB*2.7*189; HOLDS THE 2507 EXAM CANCELLATION COMMENTS name
+25 ;GRE add re-route fields
+26 ; DVBFLDS("RRDATE") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Date
+27 ; DVBFLDS("RRSITE") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Site
+28 ; DVBFLDS("RRLOC") - added with patch DVBA*2.7*193 holds the 2507 Re-Route Location
+29 ; Function Result - return 1 on success; otherwise returns 0
+30 ;
+31 ;PATIENT file IEN used in VADPT call
NEW DFN
+32 ;2507 REQUEST data field array
NEW DVBDAT
+33 ;FM IENS value
NEW DVBIENS
+34 ;function result
NEW DVBRSLT
+35 ;VADPT return array
NEW VADM
+36 ;the IEN FROM 2507 EXAM FILE 396.4
NEW DVBIEN4
+37 ;number of lines in the wp cancellation comments
NEW DVBALAST
+38 ;for loop index
NEW DVBAI
+39 ;
NEW DVBAX
+40 KILL DVBFLDS
+41 SET (RRDATE,RRFRMSITE,RRTOSITE)=""
+42 SET DVBRSLT=0
+43 SET DVBIENS=+$GET(DVBIEN)_","
+44 DO GETS^DIQ(396.3,DVBIENS,".01;1;2;13;15;17;19","IE","DVBDAT","")
+45 SET DFN=$GET(DVBDAT(396.3,DVBIENS,.01,"I"))
+46 DO DEM^VADPT
+47 ;only return record when name is resolved
IF $GET(VADM(1))'=""
Begin DoDot:1
+48 SET DVBFLDS("IEN")=DVBIEN
+49 SET DVBFLDS("NM")=$GET(VADM(1))
+50 SET DVBFLDS("SS")=$SELECT(DVBDELIM:$PIECE($GET(VADM(2)),U,2),1:$PIECE($GET(VADM(2)),U,1))
+51 SET DVBFLDS("RS")=$GET(DVBDAT(396.3,DVBIENS,17,"E"))
+52 SET DVBFLDS("REQDT")=$$FMTE^XLFDT($GET(DVBDAT(396.3,DVBIENS,1,"I")),"5DZ")
+53 SET DVBFLDS("RELDT")=$$FMTE^XLFDT($GET(DVBDAT(396.3,DVBIENS,13,"I")),"5DZ")
+54 SET DVBFLDS("PRTDT")=$$FMTE^XLFDT($GET(DVBDAT(396.3,DVBIENS,15,"I")),"5DZ")
+55 SET DVBFLDS("CANDT")=$$FMTE^XLFDT($GET(DVBDAT(396.3,DVBIENS,19,"I")),"5DZ")
+56 SET DVBFLDS("RO")=$GET(DVBDAT(396.3,DVBIENS,2,"E"))
+57 DO CLAIMTYP
DO SPEC
DO GETRRDAT
+58 SET DVBFLDS("DVBCTW")=DVBCTW
+59 SET DVBFLDS("DVBSCWA")=DVBSCWA
+60 SET DVBFLDS("RRDTE")=RRDATE
+61 SET DVBFLDS("RRSTE")=RRFRMSITE
+62 SET DVBFLDS("RRLOC")=RRTOSITE
+63 SET DVBXCNT=1
+64 SET (DVBFLDS("CANRS",DVBXCNT),DVBFLDS("CANCOM",DVBXCNT),DVBFLDS("IEN4"))=""
+65 SET DVBIEN4=0
FOR
SET DVBIEN4=$ORDER(^DVB(396.4,"C",DVBIEN,DVBIEN4))
if 'DVBIEN4
QUIT
Begin DoDot:2
+66 IF $DATA(^DVB(396.4,DVBIEN4,"CAN"))
Begin DoDot:3
+67 SET DVBAY=($PIECE($PIECE(^DVB(396.4,DVBIEN4,"CAN"),"^",1),".",1))
IF DVBAY>(DVBSDAT-1)&DVBAY<(DVBEDAT+1)
Begin DoDot:4
+68 SET DVBFLDS("CANRS",DVBXCNT)=$$GET1^DIQ(396.4,DVBIEN4,52)
+69 IF $DATA(^DVB(396.4,DVBIEN4,5))
Begin DoDot:5
+70 SET DVBFLDS("IEN4",DVBXCNT)=DVBIEN4
+71 ; this puts the wordprocessing field into an array 'WP(#,0)=' next it gets put into one entry of the DVBFLDS ARRAY so we can handle any comma's that aren't delimiters
KILL WP
SET DVBAX=$$GET1^DIQ(396.4,DVBIEN4,53,"Z","WP")
+72 ;DVBALAST gets the number of WP lines to loop through in the for loop
+73 SET DVBALAST=$PIECE(^DVB(396.4,DVBIEN4,5,0),U,3)
SET DVBAI=""
SET DVBFLDS("CANCOM",DVBXCNT)=WP(1,0)
+74 FOR DVBAI=1:1:DVBALAST
SET DVBFLDS("CANCOM",DVBXCNT)=DVBFLDS("CANCOM",DVBXCNT)_" "_WP(DVBAI,0)
if $LENGTH(DVBFLDS("CANCOM",DVBXCNT))>150
QUIT
+75 ;S DVBALAST=$P(^DVB(396.4,DVBIEN4,5,0),U,3) S DVBAI="" F DVBAI=1:1:DVBALAST S DVBFLDS("CANCOM",DVBAI)=WP(DVBAI,0)
+76 SET DVBXCNT=DVBXCNT+1
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
+77 SET DVBFLDS("IREQDT")=$GET(DVBDAT(396.3,DVBIENS,1,"I"))
+78 SET DVBRSLT=1
End DoDot:1
+79 QUIT DVBRSLT
+80 ;
DELIMHDR(EXSDAT,EXEDAT,EXSTAT) ;output delimited format header
+1 ; Input:
+2 ; EXSDAT - start date (external format)
+3 ; EXEDAT - end date (external format)
+4 ; EXSTAT - request status (external format)
+5 ; GRE ; added re-route status information to the report
+6 SET ^TMP("DVBREQH",$JOB,DVBCNT)="Request Status by Date Range Report"
SET DVBCNT=DVBCNT+1
+7 SET ^TMP("DVBREQH",$JOB,DVBCNT)="Date Range: "_EXSDAT_" - "_EXEDAT
SET DVBCNT=DVBCNT+1
+8 SET ^TMP("DVBREQH",$JOB,DVBCNT)=""""_"Request Status: "_EXSTAT_""""_$CHAR(13)
SET DVBCNT=DVBCNT+1
+9 SET ^TMP("DVBREQH",$JOB,DVBCNT)="SSN"_DVBAD_"PatientName"_DVBAD_"RequestDT"_DVBAD_"DTReleased"_DVBAD_"DTPrinted"_DVBAD_"RequestStatus"_DVBAD_"DtCanceled"_DVBAD_"Station"_DVBAD_"Cancellation Reason"_DVBAD_"Cancellation Comments"_DVBAD
+10 SET ^TMP("DVBREQH",$JOB,DVBCNT)=^TMP("DVBREQH",$JOB,DVBCNT)_"Claim Type"_DVBAD_"Special Consideration(s)"_DVBAD_"Re-Route Date"_DVBAD_"Re-Route To Site"_DVBAD_"Re-Route From Site"
SET DVBCNT=DVBCNT+1
+11 QUIT
+12 ;
DELIM ;output delimited format
+1 ;
+2 ;generic counter
NEW DVBI
+3 ;request record
NEW DVBREQ
+4 ;
+5 USE IO
+6 SET DVBI=0
FOR
SET DVBI=$ORDER(^TMP("DVBREQH",$JOB,DVBI))
if 'DVBI
QUIT
Begin DoDot:1
+7 SET DVBREQH=^TMP("DVBREQH",$JOB,DVBI)
+8 WRITE !,DVBREQH
End DoDot:1
+9 SET DVBI2=0
FOR
SET DVBI2=$ORDER(^TMP("DVBREQ",$JOB,DVBI2))
if 'DVBI2
QUIT
Begin DoDot:1
+10 SET DVBIEN=0
FOR
SET DVBIEN=$ORDER(^TMP("DVBREQ",$JOB,DVBI2,DVBIEN))
if 'DVBIEN
QUIT
Begin DoDot:2
+11 SET DVBREQL2=^TMP("DVBREQ",$JOB,DVBI2,DVBIEN)
+12 WRITE !,DVBREQL2
+13 SET DVBI22=0
FOR
SET DVBI22=$ORDER(^TMP("DVBREQ",$JOB,DVBI2,DVBIEN,DVBI22))
if 'DVBI22
QUIT
Begin DoDot:3
+14 SET DVBREQL3=^TMP("DVBREQ",$JOB,DVBI2,DVBIEN,DVBI22)
+15 WRITE !,DVBREQL3
End DoDot:3
End DoDot:2
End DoDot:1
+16 ;
+17 QUIT
+18 ;
PLAINHDR(EXSDAT,EXEDAT,EXSTAT) ;output plain text header
+1 ;Populate the header information.
+2 ;CAUTION: The CAPRI GUI pulls this information to populate the header
+3 ;for each page when creating a printed report. Do not modify the
+4 ;content or line count of the header information without validating
+5 ;against the CAPRI GUI interface.
+6 ;
+7 ;CAPRI GUI to populate
+8 ; Input:
+9 ; EXSDAT - start date (external format)
+10 ; EXEDAT - end date (external format)
+11 ; EXSTAT - request status (external format)
+12 ;
+13 ; N DVBLINE ;header separator
+14 ;
+15 USE IO
+16 ;S $P(DVBLINE,"-",131)=""
+17 WRITE !,"Date Range: "_EXSDAT_" - "_EXEDAT
+18 WRITE !,"Request Status: ",EXSTAT
+19 WRITE !,"-----------------------------------------------------------------------------------------------"
+20 QUIT
+21 ;
PLAIN ;output plain text format
+1 ;Output formatted text format. The patient name and station nameC
+2 ;are truncated at 20 characters to maintain 132 character report.
+3 ;
+4 ;generic counter
NEW DVBI
+5 ;request record
NEW DVBREQ
+6 USE IO
+7 SET DVBI=0
+8 FOR
SET DVBI=$ORDER(^TMP("DVBREQ",$JOB,DVBI))
if 'DVBI
QUIT
Begin DoDot:1
+9 SET DVBIEN=0
FOR
SET DVBIEN=$ORDER(^TMP("DVBREQ",$JOB,DVBI,DVBIEN))
if 'DVBIEN
QUIT
Begin DoDot:2
+10 SET DVBREQ=^TMP("DVBREQ",$JOB,DVBI,DVBIEN)
+11 DO GETRRDAT
+12 WRITE !,DVBLINE
+13 WRITE !,"SSN:",?14,$PIECE(DVBREQ,U,2)
+14 WRITE !,"PATIENT NAME:",?14,$EXTRACT($PIECE(DVBREQ,U,3),1,20)
+15 WRITE !,"REQUEST DT:",?14,$PIECE(DVBREQ,U,4)
+16 WRITE !,"DT RELEASED:",?14,$PIECE(DVBREQ,U,5)
+17 WRITE !,"DT PRINTED:",?14,$PIECE(DVBREQ,U,6)
+18 WRITE !,"STATUS:",?14,$PIECE(DVBREQ,U,7)
+19 WRITE !,"DT CANCELED:",?14,$PIECE(DVBREQ,U,8)
+20 DO CLAIMTYP
DO SPEC
+21 WRITE !,"CLAIM TYPE: ",DVBCTW
+22 WRITE !,"SPECIAL CONSIDERATION(S):",DVBSCWA
+23 WRITE !,"RE-ROUTE DATE:",RRDATE
+24 WRITE !,"RE-ROUTE FROM SITE:",RRFRMSITE
+25 WRITE !,"RE-ROUTE TO SITE:",RRTOSITE
+26 SET DVBIEN4=0
FOR
SET DVBIEN4=$ORDER(^DVB(396.4,"C",DVBIEN,DVBIEN4))
if 'DVBIEN4
QUIT
Begin DoDot:3
+27 IF $DATA(^DVB(396.4,DVBIEN4,"CAN"))
Begin DoDot:4
+28 SET DVBAY=($PIECE($PIECE(^DVB(396.4,DVBIEN4,"CAN"),"^",1),".",1))
IF DVBAY>(DVBSDAT-1)&DVBAY<(DVBEDAT+1)
Begin DoDot:5
+29 SET DVBCNRS=$$GET1^DIQ(396.4,DVBIEN4,52)
Begin DoDot:6
End DoDot:6
+30 IF DVBCNRS'=""
Begin DoDot:6
+31 ;W !,"CANCELLATION REASON:",?14,DVBCNRS
End DoDot:6
WRITE !,"CANCELLATION REASON:",?14,DVBCNRS
+32 IF $DATA(^DVB(396.4,DVBIEN4,5))
Begin DoDot:6
+33 KILL ^UTILITY($JOB,"W")
+34 WRITE !,"CANCELLATION COMMENTS:",?14
FOR LINE=0:0
SET LINE=$ORDER(^DVB(396.4,DVBIEN4,5,LINE))
if LINE=""
QUIT
SET X=^(LINE,0)
SET DIWL=5
SET DIWR=75
SET DIWF="NW"
DO ^DIWP
End DoDot:6
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+35 QUIT
+36 ;
GETRECSN(RSTAT,DVBCNT) ;collect 2507 REQUEST status matches and ignore date range
+1 ;This procedure collects all 2507 REQUEST records that have a REQUEST STATUS
+2 ;that matches the input request status parameter regardless of the LAST
+3 ;STATUS CHANGE DATE range. The procedure uses the "AF" index which sorts
+4 ;by REQUEST STATUS and REGIONAL OFFICE.
+5 ;
+6 ; Input:
+7 ; RSTAT - request status (internal format)
+8 ; DVBCNT - record count (passed by reference)
+9 ;
+10 ;
+11 ;2507 REQUEST IEN
NEW DVBIEN
+12 ;field array in external format
NEW FLD
+13 ;regional office
NEW DVBRO
+14 SET DVBRO=0
SET DVBCNT=0
FOR
SET DVBRO=$ORDER(^DVB(396.3,"AF",RSTAT,DVBRO))
if 'DVBRO
QUIT
Begin DoDot:1
+15 SET DVBIEN=0
+16 FOR
SET DVBIEN=$ORDER(^DVB(396.3,"AF",RSTAT,DVBRO,DVBIEN))
if 'DVBIEN
QUIT
Begin DoDot:2
+17 KILL FLD
+18 IF $$SETFLDS(DVBIEN,.FLD)
Begin DoDot:3
+19 SET DVBXCNT=1
+20 IF $GET(DVBAD)'=","
Begin DoDot:4
+21 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=FLD("IEN")_U_FLD("SS")_U_FLD("NM")_U_FLD("REQDT")_U_FLD("RELDT")_U_FLD("PRTDT")_U_FLD("RS")_U_FLD("CANDT")_U_FLD("RO")_U_FLD("CANRS",DVBXCNT)_U_FLD("CANCOM",DVBXCNT)_U
+22 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)_FLD("DVBCTW")_U_FLD("DVBSCWA")
+23 SET DVBCNT=DVBCNT+1
SET DVBXCNT=DVBXCNT+1
End DoDot:4
+24 IF $GET(DVBAD)=","
Begin DoDot:4
+25 SET (RCC,RCR)=""
+26 if $DATA(FLD("IEN4",1))
DO CANFLD
+27 SET FLD("CANRS")=RCR
SET FLD("CANCOM")=RCC
+28 SET FLD("RRLOC")=$TRANSLATE(FLD("RRLOC"),",","")
SET FLD("RRSTE")=$TRANSLATE(FLD("RRSTE"),",","")
+29 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=FLD("SS")_DVBAD_""""_FLD("NM")_""""_DVBAD_FLD("REQDT")_DVBAD_FLD("RELDT")_DVBAD_""""_FLD("PRTDT")_""""_DVBAD
+30 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)_""""_FLD("RS")_""""_DVBAD_FLD("CANDT")_DVBAD_""""_FLD("RO")_""""_DVBAD
+31 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)_""""_FLD("CANRS")_""""_DVBAD_FLD("CANCOM")_DVBAD_""""_FLD("DVBCTW")_""""_DVBAD
+32 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)_""""_FLD("DVBSCWA")_""""_DVBAD_FLD("RRDTE")_DVBAD_""""_FLD("RRSTE")_""""_DVBAD
+33 SET ^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)=^TMP("DVBREQ",$JOB,DVBCNT,DVBIEN)_""""_FLD("RRLOC")_""""_DVBAD
+34 SET DVBCNT=DVBCNT+1
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+35 ;load output global with sorted list
+36 ;use "" because value could be zero ("0")
SET CHGDAT=""
SET CNT=0
+37 FOR
SET CHGDAT=$ORDER(^TMP("DVBREQN",$JOB,CHGDAT))
if (CHGDAT="")
QUIT
Begin DoDot:1
+38 SET DVBIEN=0
+39 FOR
SET DVBIEN=$ORDER(^TMP("DVBREQN",$JOB,CHGDAT,DVBIEN))
if 'DVBIEN
QUIT
Begin DoDot:2
+40 SET CNT=CNT+1
+41 SET ^TMP("DVBREQ",$JOB,CNT)=^TMP("DVBREQN",$JOB,CHGDAT,DVBIEN)
End DoDot:2
End DoDot:1
+42 QUIT
+43 ;
CLAIMTYP ;THE CLAIM TYPE OF A 2507 REQUEST
+1 SET DVBCTW=""
+2 if '$DATA(^DVB(396.3,DVBIEN,9,0))
QUIT
+3 ;DVBIEN is the 2507 REQUEST FILE IEN
+4 ;DVBCTW is the string /name of the CLAIM TYPE
+5 DO GETS^DIQ(396.3,DVBIEN_",","9.1*","E","MSG","ERR")
+6 SET DVBCTW=$GET(MSG("396.32","1,"_DVBIEN_",",".01","E"))
+7 QUIT
+8 ;
SPEC ;SPECIAL CONSIDERATION(S) FOR A 2507 REQUEST
+1 KILL DVBSCW
+2 SET DVBSCWA=""
+3 NEW DVBX
+4 ;DVBIEN is the 2507 REQUEST FILE IEN
+5 ;DVBSC is a the SPECIAL CONSIDERATION entry for the 2507 REQUEST
+6 ;DVBSCN is the pointer number to the SPECIAL CONSIDERATION file 396.25
+7 ;DVBSCW is the string /name of the SPECIAL CONSIDERATION
+8 if '$DATA(^DVB(396.3,DVBIEN,8,0))
QUIT
+9 SET DVBAA=$PIECE(^DVB(396.3,DVBIEN,8,0),U,4)
+10 SET (DVBSC,DVBCNT)=0
FOR
SET DVBSC=$ORDER(^DVB(396.3,DVBIEN,8,DVBSC))
if 'DVBSC
QUIT
Begin DoDot:1
+11 SET DVBSCN=$PIECE(^DVB(396.3,DVBIEN,8,DVBSC,0),U,1)
+12 SET DVBSCW(DVBSC)=$GET(^DVB(396.25,DVBSCN,0))
+13 SET DVBCNT=DVBCNT+1
+14 IF (DVBCNT'=DVBAA)
if $DATA(DVBSCW(DVBSC))
SET DVBSCW(DVBSC)=DVBSCW(DVBSC)_","
End DoDot:1
+15 SET DVBX=""
FOR
SET DVBX=$ORDER(DVBSCW(DVBX))
if 'DVBX
QUIT
SET DVBSCWA=DVBSCWA_DVBSCW(DVBX)
+16 QUIT
+17 ;
GETRRDAT ;GRE Input=IEN , get re-route date, to and from site and re-route status
+1 SET (RRDATE,RRTOSITE,RRFRMSITE,RRSTATDTE)=""
+2 if '$DATA(^DVB(396.3,DVBIEN,6,0))
QUIT
+3 ; quit if no re-route data found
+4 KILL RRIENINC,RRSTATINC,RRSTAT,RRDATE,RRTOSITE,RRFRMSITE,RRSTATDTE
+5 SET (RRIENINC,RRSTATINC)=0
+6 FOR
SET RRIENINC=$ORDER(^DVB(396.3,DVBIEN,6,RRIENINC))
if RRIENINC="B"
QUIT
Begin DoDot:1
+7 SET RRFRMSITE=$$EXTERNAL^DILFD(396.34,.02,,$PIECE(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,4))
+8 SET RRDATE=$$FMTE^XLFDT($PIECE(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,1),"5DZ")
+9 SET RRTOSITE=$$EXTERNAL^DILFD(396.34,.02,,$PIECE(^DVB(396.3,DVBIEN,6,RRIENINC,0),U,7))
+10 SET RRSTATINC=0
+11 FOR
SET RRSTATINC=$ORDER(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC))
if RRSTATINC=""
QUIT
Begin DoDot:2
+12 if '$DATA(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0))
QUIT
+13 SET RRSTATDTE=$$FMTE^XLFDT($PIECE(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0),U,1),"5DZ")
+14 SET RRSTAT=$$EXTERNAL^DILFD(396.341,1,,$PIECE(^DVB(396.3,DVBIEN,6,RRIENINC,RRSTATINC,0),U,2))
End DoDot:2
End DoDot:1
+15 QUIT
+16 ;