DVBANRE ;ALB/NGC - New Requests Export - RPCs and Taskman entry points ; 9/22/25 12:57pm
;;2.7;AMIE;**255**;Apr 10, 1995;Build 21
;Per VHA Directive 6402 this routine should not be modified
;
;ICRs
; Reference to $$SITE^VASITE in ICR #10112
; Reference to File 2 ^DPT in ICR #10035
; Reference to File 19.2 ^DIC(19.2) in ICR #4078
; Reference to File 40.8 ^DIC(40.8) in ICR #728
; Reference to NOW^XLFDT in ICR #10103
; Reference to FMTE^XLFDT in ICR #10103
; Reference to FMADD^XLFDT in ICR #10103
; Reference to LOW^XLFSTR in ICR #10104
; Reference to GET1^DIQ in ICR #10004
;
Q ;no direct entry
;
;
;DVBA CAPRI NRE HISTORY
;Parameters - DVBDIVID : internal division Id
; - DVBRANGEID : range identifier supplied to CAPRI by RPC:NRE STATIC
;Returns - history array () = processId ^ date/time ^ description ^ 1 ^ info mark ^ run method
HISTORYRPC(DVBRETURN,DVBDIVID,DVBRANGEID) ;CAPRI-12377:NGC - Export history for a division and date range(coded)
N DVBOPTIONDA,DVBFROMDATE,DVBTODATE,DVBPROCESSSTATUS,DVBPAIRNAME,DVBHISTORYROW,DVBDIVSTATUS,DVBPROCESSID
S DVBRETURN=$NA(^TMP("RPCHISTORY",$J)) K @DVBRETURN
I (DVBDIVID="") S @DVBRETURN@(0)="-1^Missing division" Q
I ('$D(^DVB(396.1,1,3,"B",DVBDIVID))) S @DVBRETURN@(0)="-1^No such division" Q
I ('+$G(DVBRANGEID)) S @DVBRETURN@(0)="-1^Range ID not specified/correct" Q
D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
S DVBOPTIONDA=DVBDIVSTATUS("optionDA")
S DVBFROMDATE=$$FMADD^XLFDT(DT,-DVBRANGEID),DVBTODATE=DT
S DVBPAIRNAME=""
F S DVBPAIRNAME=$O(^DIC(19.2,DVBOPTIONDA,2,"B",DVBPAIRNAME)) Q:DVBPAIRNAME="" D:(DVBPAIRNAME?1"DVBANREPROC".E)
. S DVBPROCESSID=$P($P(DVBPAIRNAME,"(",2),")",1)
. D PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
. Q:(DVBPROCESSSTATUS("divId")'=DVBDIVID) ;not for this division
. Q:(DVBPROCESSSTATUS("processDate")<DVBFROMDATE)!(DVBPROCESSSTATUS("processDate")>DVBTODATE) ;out of range
. S DVBHISTORYROW=""
. S $P(DVBHISTORYROW,"^",1)=DVBPROCESSID ; ProcessId
. S $P(DVBHISTORYROW,"^",2)=$E(DVBPROCESSSTATUS("processDTM"),1,12) ; Date Time (no seconds)
. S $P(DVBHISTORYROW,"^",3)="Complete with "_DVBPROCESSSTATUS("request")_" request(s) exported"
. S $P(DVBHISTORYROW,"^",4)=1
. S $P(DVBHISTORYROW,"^",5)=$$LOW^XLFSTR(DVBPROCESSSTATUS("exportMark")) ; Informational Mark
. S $P(DVBHISTORYROW,"^",6)=DVBPROCESSSTATUS("runMethod") ; How run
. S @DVBRETURN@($O(@DVBRETURN@(""),-1)+1)=DVBHISTORYROW
. Q
Q
;
;
LOADRPC(DVBRETURN,DVBDIVID) ;CAPRI-12375:NGC - Return NRE configuration for a division
;DVBA CAPRI NRE LOAD
;Parameters - DVBDIVID - division Id
;Returns - divId ^ timeList ^ rowGroup ^^^^^^^ divSummary ^ divName
N DVBDIVSTATUS
K DVBRETURN
S DVBRETURN=""
I (DVBDIVID="") S DVBRETURN="-1^Missing Division" Q
I ('$D(^DVB(396.1,1,3,"B",DVBDIVID))) S DVBRETURN="-1^No such division" Q
D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS) ; retrieve standard data set for a division
S $P(DVBRETURN,"^",1)=DVBDIVID
S $P(DVBRETURN,"^",2)=DVBDIVSTATUS("divTimeList")
S $P(DVBRETURN,"^",3)=+DVBDIVSTATUS("divRowGroup")
S $P(DVBRETURN,"^",10)=DVBDIVSTATUS("summary")
S $P(DVBRETURN,"^",11)=DVBDIVSTATUS("name")
Q
;
;
MARKRPC(DVBRSLT,DVBPROCESSID,DVBEXPORTMARK) ;CAPRI-12378:NGC - Mark a export item with an annotated status
;DVBA CAPRI NRE MARK
;Parameters - dvbProcessId : processing (export file) id
; - dvbExportMark : ('viewed' | 'in-progress' | 'complete')
;Returns - none
N DVBOPTIONDA,DVBPROCESSSTORE
I (DVBEXPORTMARK'?1.20E) S DVBRSLT="-1^Invalid information mark" Q
S DVBRSLT=0,DVBOPTIONDA=$$FINDIDBYNAME^DVBLIBTM("DVBA CAPRI NRE PROCESS TM") Q:('+DVBOPTIONDA)
S DVBPROCESSSTORE=$$GETNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,"DVBANREPROC("_DVBPROCESSID_")") ;load record
I (DVBPROCESSSTORE="") S DVBRSLT="-1^Process Id not specified / not found" Q
S $P(DVBPROCESSSTORE,"|",4)=$$LOW^XLFSTR(DVBEXPORTMARK) ;update values
S $P(DVBPROCESSSTORE,"|",7)=$$NOW^XLFDT
S $P(DVBPROCESSSTORE,"|",8)=DUZ
D SETNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,"DVBANREPROC("_DVBPROCESSID_")",DVBPROCESSSTORE) ;save record
Q
;
;
OPENRPC(DVBRETURN,DVBPROCESSID) ;CAPRI-12377:NGC - Return an array of the selected export file
;DVBA CAPRI NRE OPEN
;Parameters - dvbProcessId : processing (export file) id
;Returns - global array of string. header row followed by nn csv rows
N DVBROW,DVBREQID,DVBDFN,DVBCSV,DVBEXAM,DVBCNUMBER,DVBSSN,DVBCOUNT
S DVBRETURN=$NA(^TMP("RPCNREOPEN",$J)) K @DVBRETURN
D PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
I ('$D(DVBPROCESSSTATUS)) S @DVBRETURN@(0)="-1^Process Id not found" Q
S DVBROW=0,@DVBRETURN@(DVBROW)="0^File View^DVBANRE_2507s_Export_"_DVBPROCESSID_".csv"
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("C&P New Requests Export - Division: "_$$GET1^DIQ(40.8,DVBPROCESSSTATUS("divId"),.01))
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Export generated: "_$$FMTE^XLFDT(DVBPROCESSSTATUS("processDTM"),"1PM")_". Last run: "_$$FMTE^XLFDT(DVBPROCESSSTATUS("prevProcessDTM"),"1PM"))
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=""
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)="Patient,SSN,DateOfBirth,RequestDate,Requester,ExamCount,CurrentStatus"
S DVBREQID=""
F S DVBREQID=$O(DVBPROCESSSTATUS("request",DVBREQID)) Q:DVBREQID="" D
. S DVBDFN=$$GET1^DIQ(396.3,DVBREQID,.01,"I")
. S DVBCSV="",$P(DVBCSV,"~",8)=""
. S $P(DVBCSV,"~",1)=$$CSV^DVBLIBGN($$GET1^DIQ(2,DVBDFN,.01)) ; patient Name
. D:('$$ISSENSITIVE^DVBLIBGN(DVBDFN))
.. S DVBSSN=$$GET1^DIQ(2,DVBDFN,.09,"I"),$P(DVBCSV,"~",2)=$$CSV^DVBLIBGN($S(DVBSSN?9N:$TR("abc-de-fghi","abcdefghi",DVBSSN),1:DVBSSN)) ; SSN
.. S $P(DVBCSV,"~",3)=$$CSV^DVBLIBGN($$GET1^DIQ(2,DVBDFN,.03,"E")) ; Date of Birth
.. S $P(DVBCSV,"~",4)=$$CSV^DVBLIBGN($$FMTE^XLFDT($$GET1^DIQ(396.3,DVBREQID,1,"I"),"1PM")) ; 2507 Request Date (no seconds)
.. S $P(DVBCSV,"~",5)=$$CSV^DVBLIBGN($$GET1^DIQ(396.3,DVBREQID,3,"E")) ; 2507 Requester
.. S DVBEXAM="" F DVBCOUNT=0:1 S DVBEXAM=$O(^DVB(396.4,"C",DVBREQID,DVBEXAM)) Q:DVBEXAM="" ; Count Exams
.. S $P(DVBCSV,"~",6)=$$CSV^DVBLIBGN(DVBCOUNT) ; Count Exams
.. S $P(DVBCSV,"~",7)=$$CSV^DVBLIBGN($$GET1^DIQ(396.3,DVBREQID,17,"E")_" ("_$$FMTE^XLFDT($$GET1^DIQ(396.3,DVBREQID,7,"I"),"1P")_")") ; Status (changed date)
. S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=$TR(DVBCSV,"~",",")
. Q
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)="------------------------------------------------"
S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Complete : "_DVBPROCESSSTATUS("request")_" request(s) at "_$$FMTE^XLFDT(DVBPROCESSSTATUS("processDTM"),"1PM"))
D:(DVBPROCESSSTATUS("exportMarkText")'="")
. S DVBROW=DVBROW+1,@DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Last Action: "_DVBPROCESSSTATUS("exportMarkText"))
;If status is 'new', change export status to 'opened'.
D:("new opened"[DVBPROCESSSTATUS("exportMark"))
. S DVBPROCESSSTORE=$$GETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREPROC("_DVBPROCESSID_")")
. S $P(DVBPROCESSSTORE,"|",4)="opened"
. S $P(DVBPROCESSSTORE,"|",7)=$$NOW^XLFDT
. S $P(DVBPROCESSSTORE,"|",8)=DUZ
. D SETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREPROC("_DVBPROCESSID_")",DVBPROCESSSTORE)
. Q
Q
;
;
RUNNOWRPC(DVBSAVERESPONSE,DVBDIVSAVESTRING) ;CAPRI-12378:NGC - Execute an export in real dvbTime with the current configuration as modified in CAPRI
;Parameters - dvbDivSaveString : divId ^ timeList ^ rowGroup
;Returns - status ^ notification text ^ next run text ~ outstanding count
N DVBDIVSTATUS,DVBDIVID
S DVBDIVID=$P(DVBDIVSAVESTRING,"^",1)
D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
S DVBDIVSTATUS("divRowGroup")=$P(DVBDIVSAVESTRING,"^",3)
D PROCESSEXPORT^DVBANREP(DVBDIVID,.DVBDIVSTATUS,"AdHoc")
D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
S DVBSAVERESPONSE=""
S $P(DVBSAVERESPONSE,"^",1)=0
S $P(DVBSAVERESPONSE,"^",2)="Run Complete"
S $P(DVBSAVERESPONSE,"^",3)=DVBDIVSTATUS("summary")
Q
;
;
SAVERPC(DVBSAVERESPONSE,DVBDIVSAVESTRING) ;CAPRI-12376:NGC - Save configuration for a division
;Parameters - dvbDivSaveString : divId ^ timeList ^ rowGroup
;Returns - status ^ notification text ^ next run text ~ outstanding count
N DVBDIVID,DVBDIVSTORE,DVBERROR,DVBDIVSTATUS
S DVBDIVID=$P(DVBDIVSAVESTRING,"^",1)
S DVBERROR=$$VALSAVESTRING^DVBANREP(.DVBDIVSAVESTRING)
D:(DVBERROR="") ;no error => perform save
. S DVBDIVSTORE=$$GETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREDIV("_DVBDIVID_")")
. S $P(DVBDIVSTORE,"|",1)=DVBDIVID
. S $P(DVBDIVSTORE,"|",2)=$P(DVBDIVSAVESTRING,"^",2)
. S $P(DVBDIVSTORE,"|",3)=''$P(DVBDIVSAVESTRING,"^",3)
. D SETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREDIV("_DVBDIVID_")",DVBDIVSTORE)
. Q
;Generate response string (if error or no error)
D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
S DVBSAVERESPONSE=""
S $P(DVBSAVERESPONSE,"^",1)=$S(DVBERROR="":0,1:-1)
S $P(DVBSAVERESPONSE,"^",2)=$S(DVBERROR="":"Configuration saved",1:DVBERROR)
S $P(DVBSAVERESPONSE,"^",3)=DVBDIVSTATUS("summary")
Q
;
;
STATICRPC(DVBSOLNSTATIC) ;CAPRI-12375:NGC - Return static meta data to allow the report form to be drawn
;for RPC DVBA CAPRI NRE STATIC
;Parameters - None
;Return - division list ^ range list ^ purgeInterval
N DVBDIVID,DVBDIVLIST,DVBRANGELIST,DVBPURGE,DVBRANGE
S DVBDIVLIST=""
S DVBDIVID="" F S DVBDIVID=$O(^DVB(396.1,1,3,"B",DVBDIVID)) Q:DVBDIVID="" D
. S DVBDIVLIST=DVBDIVLIST_$S(DVBDIVLIST="":"",1:",")_DVBDIVID_"~"_$$GET1^DIQ(40.8,DVBDIVID,.01)
S DVBPURGE=$$GET^XPAR("PKG","DVBAB CAPRI NRE PURGE") S:(DVBPURGE="") DVBPURGE=30
S DVBRANGELIST="1~Yesterday and Today~1"
F DVBRANGE=7,14,30 S:DVBPURGE>DVBRANGE DVBRANGELIST=DVBRANGELIST_","_DVBRANGE_"~Last "_DVBRANGE_" days"
S DVBRANGELIST=DVBRANGELIST_","_DVBPURGE_"~Last "_DVBPURGE_" days"
S DVBSOLNSTATIC=""
S $P(DVBSOLNSTATIC,"^",1)=DVBDIVLIST ; division list
S $P(DVBSOLNSTATIC,"^",2)=DVBRANGELIST ; range list
;CAPRI-23935 NGC 12/25 - Removed 4 pieces returning no longer needed data
S $P(DVBSOLNSTATIC,"^",3)=DVBPURGE ; purge interval
Q
;
;
SUMMARYRPC(DVBRETURN) ;CAPRI-12374:NGC - return a summary, per division : last run summary, next run summary, outstanding requests
;Parameters - None
;Result - DVBSUMMARY : array of string
;Output - for each division, name, last run, next run, outstanding count
N DVBDIVID,DVBDIVSTATUS,DVBROW
K DVBRETURN
S DVBROW=0,DVBRETURN(DVBROW)="C&P New Requests Export"
S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=""
S DVBDIVID="" F S DVBDIVID=$O(^DVB(396.1,1,3,"B",DVBDIVID)) Q:DVBDIVID="" D
. D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=""
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=DVBDIVSTATUS("name")
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=$TR($J("",$L(DVBDIVSTATUS("name")))," ","-")
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=" Last Run: "_DVBDIVSTATUS("lastRunText")
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=" Next Run: "_DVBDIVSTATUS("nextRunText")
. S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=" Currently: "_DVBDIVSTATUS("nextRunCount")_" request(s) pending for export."
S:(DVBROW<7) DVBROW=DVBROW+1,DVBRETURN(DVBROW)="No active divisions found for site."
S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=""
S DVBROW=DVBROW+1,DVBRETURN(DVBROW)=$$FMTE^XLFDT($$NOW^XLFDT,"1PM") ;format example: Jan 10, 2025 11:19 am
Q
;
;
TMPROCESS ;CAPRI-12378:NGC - Endpoint for 'DVBA CAPRI NRE PROCESS TM' Taskman call
N DVBDIVID,DVBDIVSTATUS,DVBNOWTIME
S DVBDIVID=""
S DVBNOWTIME=$$NOW^XLFDT
F S DVBDIVID=$O(^DVB(396.1,1,3,"B",DVBDIVID)) Q:(DVBDIVID="") D
. D DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
. Q:(DVBDIVSTATUS("nextRunDTM")>DVBNOWTIME)
. D PROCESSEXPORT^DVBANREP(DVBDIVID,.DVBDIVSTATUS,"Scheduled")
. Q
Q
;
;
TMPURGE ;CAPRI-12378:NGC - Endpoint for 'DVBA CAPRI NRE PURGE TM' taskman job
N DVBOPTIONDA,DVBPURGE,DVBFROMDATE,DVBPAIRNAME,DVBPROCESSID,DVBPROCESSSTATUS
S DVBOPTIONDA=$$FINDIDBYNAME^DVBLIBTM("DVBA CAPRI NRE PROCESS TM") Q:('+DVBOPTIONDA)
S DVBPURGE=$$GET^XPAR("PKG","DVBAB CAPRI NRE PURGE") S:(DVBPURGE="") DVBPURGE=30
S DVBFROMDATE=$$FMADD^XLFDT($$NOW^XLFDT,-DVBPURGE)
S DVBPAIRNAME=""
F S DVBPAIRNAME=$O(^DIC(19.2,DVBOPTIONDA,2,"B",DVBPAIRNAME)) Q:(DVBPAIRNAME="") D:(DVBPAIRNAME?1"DVBANREPROC".E)
. S DVBPROCESSID=$P($P(DVBPAIRNAME,"(",2),")",1)
. D PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
. D:(DVBPROCESSSTATUS("processDate")<DVBFROMDATE) DELNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,DVBPAIRNAME)
. Q
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBANRE 12923 printed Mar 25, 2026@15:05:42 Page 2
DVBANRE ;ALB/NGC - New Requests Export - RPCs and Taskman entry points ; 9/22/25 12:57pm
+1 ;;2.7;AMIE;**255**;Apr 10, 1995;Build 21
+2 ;Per VHA Directive 6402 this routine should not be modified
+3 ;
+4 ;ICRs
+5 ; Reference to $$SITE^VASITE in ICR #10112
+6 ; Reference to File 2 ^DPT in ICR #10035
+7 ; Reference to File 19.2 ^DIC(19.2) in ICR #4078
+8 ; Reference to File 40.8 ^DIC(40.8) in ICR #728
+9 ; Reference to NOW^XLFDT in ICR #10103
+10 ; Reference to FMTE^XLFDT in ICR #10103
+11 ; Reference to FMADD^XLFDT in ICR #10103
+12 ; Reference to LOW^XLFSTR in ICR #10104
+13 ; Reference to GET1^DIQ in ICR #10004
+14 ;
+15 ;no direct entry
QUIT
+16 ;
+17 ;
+18 ;DVBA CAPRI NRE HISTORY
+19 ;Parameters - DVBDIVID : internal division Id
+20 ; - DVBRANGEID : range identifier supplied to CAPRI by RPC:NRE STATIC
+21 ;Returns - history array () = processId ^ date/time ^ description ^ 1 ^ info mark ^ run method
HISTORYRPC(DVBRETURN,DVBDIVID,DVBRANGEID) ;CAPRI-12377:NGC - Export history for a division and date range(coded)
+1 NEW DVBOPTIONDA,DVBFROMDATE,DVBTODATE,DVBPROCESSSTATUS,DVBPAIRNAME,DVBHISTORYROW,DVBDIVSTATUS,DVBPROCESSID
+2 SET DVBRETURN=$NAME(^TMP("RPCHISTORY",$JOB))
KILL @DVBRETURN
+3 IF (DVBDIVID="")
SET @DVBRETURN@(0)="-1^Missing division"
QUIT
+4 IF ('$DATA(^DVB(396.1,1,3,"B",DVBDIVID)))
SET @DVBRETURN@(0)="-1^No such division"
QUIT
+5 IF ('+$GET(DVBRANGEID))
SET @DVBRETURN@(0)="-1^Range ID not specified/correct"
QUIT
+6 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+7 SET DVBOPTIONDA=DVBDIVSTATUS("optionDA")
+8 SET DVBFROMDATE=$$FMADD^XLFDT(DT,-DVBRANGEID)
SET DVBTODATE=DT
+9 SET DVBPAIRNAME=""
+10 FOR
SET DVBPAIRNAME=$ORDER(^DIC(19.2,DVBOPTIONDA,2,"B",DVBPAIRNAME))
if DVBPAIRNAME=""
QUIT
if (DVBPAIRNAME?1"DVBANREPROC".E)
Begin DoDot:1
+11 SET DVBPROCESSID=$PIECE($PIECE(DVBPAIRNAME,"(",2),")",1)
+12 DO PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
+13 ;not for this division
if (DVBPROCESSSTATUS("divId")'=DVBDIVID)
QUIT
+14 ;out of range
if (DVBPROCESSSTATUS("processDate")<DVBFROMDATE)!(DVBPROCESSSTATUS("processDate")>DVBTODATE)
QUIT
+15 SET DVBHISTORYROW=""
+16 ; ProcessId
SET $PIECE(DVBHISTORYROW,"^",1)=DVBPROCESSID
+17 ; Date Time (no seconds)
SET $PIECE(DVBHISTORYROW,"^",2)=$EXTRACT(DVBPROCESSSTATUS("processDTM"),1,12)
+18 SET $PIECE(DVBHISTORYROW,"^",3)="Complete with "_DVBPROCESSSTATUS("request")_" request(s) exported"
+19 SET $PIECE(DVBHISTORYROW,"^",4)=1
+20 ; Informational Mark
SET $PIECE(DVBHISTORYROW,"^",5)=$$LOW^XLFSTR(DVBPROCESSSTATUS("exportMark"))
+21 ; How run
SET $PIECE(DVBHISTORYROW,"^",6)=DVBPROCESSSTATUS("runMethod")
+22 SET @DVBRETURN@($ORDER(@DVBRETURN@(""),-1)+1)=DVBHISTORYROW
+23 QUIT
End DoDot:1
+24 QUIT
+25 ;
+26 ;
LOADRPC(DVBRETURN,DVBDIVID) ;CAPRI-12375:NGC - Return NRE configuration for a division
+1 ;DVBA CAPRI NRE LOAD
+2 ;Parameters - DVBDIVID - division Id
+3 ;Returns - divId ^ timeList ^ rowGroup ^^^^^^^ divSummary ^ divName
+4 NEW DVBDIVSTATUS
+5 KILL DVBRETURN
+6 SET DVBRETURN=""
+7 IF (DVBDIVID="")
SET DVBRETURN="-1^Missing Division"
QUIT
+8 IF ('$DATA(^DVB(396.1,1,3,"B",DVBDIVID)))
SET DVBRETURN="-1^No such division"
QUIT
+9 ; retrieve standard data set for a division
DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+10 SET $PIECE(DVBRETURN,"^",1)=DVBDIVID
+11 SET $PIECE(DVBRETURN,"^",2)=DVBDIVSTATUS("divTimeList")
+12 SET $PIECE(DVBRETURN,"^",3)=+DVBDIVSTATUS("divRowGroup")
+13 SET $PIECE(DVBRETURN,"^",10)=DVBDIVSTATUS("summary")
+14 SET $PIECE(DVBRETURN,"^",11)=DVBDIVSTATUS("name")
+15 QUIT
+16 ;
+17 ;
MARKRPC(DVBRSLT,DVBPROCESSID,DVBEXPORTMARK) ;CAPRI-12378:NGC - Mark a export item with an annotated status
+1 ;DVBA CAPRI NRE MARK
+2 ;Parameters - dvbProcessId : processing (export file) id
+3 ; - dvbExportMark : ('viewed' | 'in-progress' | 'complete')
+4 ;Returns - none
+5 NEW DVBOPTIONDA,DVBPROCESSSTORE
+6 IF (DVBEXPORTMARK'?1.20E)
SET DVBRSLT="-1^Invalid information mark"
QUIT
+7 SET DVBRSLT=0
SET DVBOPTIONDA=$$FINDIDBYNAME^DVBLIBTM("DVBA CAPRI NRE PROCESS TM")
if ('+DVBOPTIONDA)
QUIT
+8 ;load record
SET DVBPROCESSSTORE=$$GETNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,"DVBANREPROC("_DVBPROCESSID_")")
+9 IF (DVBPROCESSSTORE="")
SET DVBRSLT="-1^Process Id not specified / not found"
QUIT
+10 ;update values
SET $PIECE(DVBPROCESSSTORE,"|",4)=$$LOW^XLFSTR(DVBEXPORTMARK)
+11 SET $PIECE(DVBPROCESSSTORE,"|",7)=$$NOW^XLFDT
+12 SET $PIECE(DVBPROCESSSTORE,"|",8)=DUZ
+13 ;save record
DO SETNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,"DVBANREPROC("_DVBPROCESSID_")",DVBPROCESSSTORE)
+14 QUIT
+15 ;
+16 ;
OPENRPC(DVBRETURN,DVBPROCESSID) ;CAPRI-12377:NGC - Return an array of the selected export file
+1 ;DVBA CAPRI NRE OPEN
+2 ;Parameters - dvbProcessId : processing (export file) id
+3 ;Returns - global array of string. header row followed by nn csv rows
+4 NEW DVBROW,DVBREQID,DVBDFN,DVBCSV,DVBEXAM,DVBCNUMBER,DVBSSN,DVBCOUNT
+5 SET DVBRETURN=$NAME(^TMP("RPCNREOPEN",$JOB))
KILL @DVBRETURN
+6 DO PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
+7 IF ('$DATA(DVBPROCESSSTATUS))
SET @DVBRETURN@(0)="-1^Process Id not found"
QUIT
+8 SET DVBROW=0
SET @DVBRETURN@(DVBROW)="0^File View^DVBANRE_2507s_Export_"_DVBPROCESSID_".csv"
+9 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("C&P New Requests Export - Division: "_$$GET1^DIQ(40.8,DVBPROCESSSTATUS("divId"),.01))
+10 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Export generated: "_$$FMTE^XLFDT(DVBPROCESSSTATUS("processDTM"),"1PM")_". Last run: "_$$FMTE^XLFDT(DVBPROCESSSTATUS("prevProcessDTM"),"1PM"))
+11 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=""
+12 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)="Patient,SSN,DateOfBirth,RequestDate,Requester,ExamCount,CurrentStatus"
+13 SET DVBREQID=""
+14 FOR
SET DVBREQID=$ORDER(DVBPROCESSSTATUS("request",DVBREQID))
if DVBREQID=""
QUIT
Begin DoDot:1
+15 SET DVBDFN=$$GET1^DIQ(396.3,DVBREQID,.01,"I")
+16 SET DVBCSV=""
SET $PIECE(DVBCSV,"~",8)=""
+17 ; patient Name
SET $PIECE(DVBCSV,"~",1)=$$CSV^DVBLIBGN($$GET1^DIQ(2,DVBDFN,.01))
+18 if ('$$ISSENSITIVE^DVBLIBGN(DVBDFN))
Begin DoDot:2
+19 ; SSN
SET DVBSSN=$$GET1^DIQ(2,DVBDFN,.09,"I")
SET $PIECE(DVBCSV,"~",2)=$$CSV^DVBLIBGN($SELECT(DVBSSN?9N:$TRANSLATE("abc-de-fghi","abcdefghi",DVBSSN),1:DVBSSN))
+20 ; Date of Birth
SET $PIECE(DVBCSV,"~",3)=$$CSV^DVBLIBGN($$GET1^DIQ(2,DVBDFN,.03,"E"))
+21 ; 2507 Request Date (no seconds)
SET $PIECE(DVBCSV,"~",4)=$$CSV^DVBLIBGN($$FMTE^XLFDT($$GET1^DIQ(396.3,DVBREQID,1,"I"),"1PM"))
+22 ; 2507 Requester
SET $PIECE(DVBCSV,"~",5)=$$CSV^DVBLIBGN($$GET1^DIQ(396.3,DVBREQID,3,"E"))
+23 ; Count Exams
SET DVBEXAM=""
FOR DVBCOUNT=0:1
SET DVBEXAM=$ORDER(^DVB(396.4,"C",DVBREQID,DVBEXAM))
if DVBEXAM=""
QUIT
+24 ; Count Exams
SET $PIECE(DVBCSV,"~",6)=$$CSV^DVBLIBGN(DVBCOUNT)
+25 ; Status (changed date)
SET $PIECE(DVBCSV,"~",7)=$$CSV^DVBLIBGN($$GET1^DIQ(396.3,DVBREQID,17,"E")_" ("_$$FMTE^XLFDT($$GET1^DIQ(396.3,DVBREQID,7,"I"),"1P")_")")
End DoDot:2
+26 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=$TRANSLATE(DVBCSV,"~",",")
+27 QUIT
End DoDot:1
+28 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)="------------------------------------------------"
+29 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Complete : "_DVBPROCESSSTATUS("request")_" request(s) at "_$$FMTE^XLFDT(DVBPROCESSSTATUS("processDTM"),"1PM"))
+30 if (DVBPROCESSSTATUS("exportMarkText")'="")
Begin DoDot:1
+31 SET DVBROW=DVBROW+1
SET @DVBRETURN@(DVBROW)=$$CSV^DVBLIBGN("Last Action: "_DVBPROCESSSTATUS("exportMarkText"))
End DoDot:1
+32 ;If status is 'new', change export status to 'opened'.
+33 if ("new opened"[DVBPROCESSSTATUS("exportMark"))
Begin DoDot:1
+34 SET DVBPROCESSSTORE=$$GETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREPROC("_DVBPROCESSID_")")
+35 SET $PIECE(DVBPROCESSSTORE,"|",4)="opened"
+36 SET $PIECE(DVBPROCESSSTORE,"|",7)=$$NOW^XLFDT
+37 SET $PIECE(DVBPROCESSSTORE,"|",8)=DUZ
+38 DO SETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREPROC("_DVBPROCESSID_")",DVBPROCESSSTORE)
+39 QUIT
End DoDot:1
+40 QUIT
+41 ;
+42 ;
RUNNOWRPC(DVBSAVERESPONSE,DVBDIVSAVESTRING) ;CAPRI-12378:NGC - Execute an export in real dvbTime with the current configuration as modified in CAPRI
+1 ;Parameters - dvbDivSaveString : divId ^ timeList ^ rowGroup
+2 ;Returns - status ^ notification text ^ next run text ~ outstanding count
+3 NEW DVBDIVSTATUS,DVBDIVID
+4 SET DVBDIVID=$PIECE(DVBDIVSAVESTRING,"^",1)
+5 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+6 SET DVBDIVSTATUS("divRowGroup")=$PIECE(DVBDIVSAVESTRING,"^",3)
+7 DO PROCESSEXPORT^DVBANREP(DVBDIVID,.DVBDIVSTATUS,"AdHoc")
+8 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+9 SET DVBSAVERESPONSE=""
+10 SET $PIECE(DVBSAVERESPONSE,"^",1)=0
+11 SET $PIECE(DVBSAVERESPONSE,"^",2)="Run Complete"
+12 SET $PIECE(DVBSAVERESPONSE,"^",3)=DVBDIVSTATUS("summary")
+13 QUIT
+14 ;
+15 ;
SAVERPC(DVBSAVERESPONSE,DVBDIVSAVESTRING) ;CAPRI-12376:NGC - Save configuration for a division
+1 ;Parameters - dvbDivSaveString : divId ^ timeList ^ rowGroup
+2 ;Returns - status ^ notification text ^ next run text ~ outstanding count
+3 NEW DVBDIVID,DVBDIVSTORE,DVBERROR,DVBDIVSTATUS
+4 SET DVBDIVID=$PIECE(DVBDIVSAVESTRING,"^",1)
+5 SET DVBERROR=$$VALSAVESTRING^DVBANREP(.DVBDIVSAVESTRING)
+6 ;no error => perform save
if (DVBERROR="")
Begin DoDot:1
+7 SET DVBDIVSTORE=$$GETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREDIV("_DVBDIVID_")")
+8 SET $PIECE(DVBDIVSTORE,"|",1)=DVBDIVID
+9 SET $PIECE(DVBDIVSTORE,"|",2)=$PIECE(DVBDIVSAVESTRING,"^",2)
+10 SET $PIECE(DVBDIVSTORE,"|",3)=''$PIECE(DVBDIVSAVESTRING,"^",3)
+11 DO SETNAMEDVALUE^DVBLIBTM("DVBA CAPRI NRE PROCESS TM","DVBANREDIV("_DVBDIVID_")",DVBDIVSTORE)
+12 QUIT
End DoDot:1
+13 ;Generate response string (if error or no error)
+14 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+15 SET DVBSAVERESPONSE=""
+16 SET $PIECE(DVBSAVERESPONSE,"^",1)=$SELECT(DVBERROR="":0,1:-1)
+17 SET $PIECE(DVBSAVERESPONSE,"^",2)=$SELECT(DVBERROR="":"Configuration saved",1:DVBERROR)
+18 SET $PIECE(DVBSAVERESPONSE,"^",3)=DVBDIVSTATUS("summary")
+19 QUIT
+20 ;
+21 ;
STATICRPC(DVBSOLNSTATIC) ;CAPRI-12375:NGC - Return static meta data to allow the report form to be drawn
+1 ;for RPC DVBA CAPRI NRE STATIC
+2 ;Parameters - None
+3 ;Return - division list ^ range list ^ purgeInterval
+4 NEW DVBDIVID,DVBDIVLIST,DVBRANGELIST,DVBPURGE,DVBRANGE
+5 SET DVBDIVLIST=""
+6 SET DVBDIVID=""
FOR
SET DVBDIVID=$ORDER(^DVB(396.1,1,3,"B",DVBDIVID))
if DVBDIVID=""
QUIT
Begin DoDot:1
+7 SET DVBDIVLIST=DVBDIVLIST_$SELECT(DVBDIVLIST="":"",1:",")_DVBDIVID_"~"_$$GET1^DIQ(40.8,DVBDIVID,.01)
End DoDot:1
+8 SET DVBPURGE=$$GET^XPAR("PKG","DVBAB CAPRI NRE PURGE")
if (DVBPURGE="")
SET DVBPURGE=30
+9 SET DVBRANGELIST="1~Yesterday and Today~1"
+10 FOR DVBRANGE=7,14,30
if DVBPURGE>DVBRANGE
SET DVBRANGELIST=DVBRANGELIST_","_DVBRANGE_"~Last "_DVBRANGE_" days"
+11 SET DVBRANGELIST=DVBRANGELIST_","_DVBPURGE_"~Last "_DVBPURGE_" days"
+12 SET DVBSOLNSTATIC=""
+13 ; division list
SET $PIECE(DVBSOLNSTATIC,"^",1)=DVBDIVLIST
+14 ; range list
SET $PIECE(DVBSOLNSTATIC,"^",2)=DVBRANGELIST
+15 ;CAPRI-23935 NGC 12/25 - Removed 4 pieces returning no longer needed data
+16 ; purge interval
SET $PIECE(DVBSOLNSTATIC,"^",3)=DVBPURGE
+17 QUIT
+18 ;
+19 ;
SUMMARYRPC(DVBRETURN) ;CAPRI-12374:NGC - return a summary, per division : last run summary, next run summary, outstanding requests
+1 ;Parameters - None
+2 ;Result - DVBSUMMARY : array of string
+3 ;Output - for each division, name, last run, next run, outstanding count
+4 NEW DVBDIVID,DVBDIVSTATUS,DVBROW
+5 KILL DVBRETURN
+6 SET DVBROW=0
SET DVBRETURN(DVBROW)="C&P New Requests Export"
+7 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=""
+8 SET DVBDIVID=""
FOR
SET DVBDIVID=$ORDER(^DVB(396.1,1,3,"B",DVBDIVID))
if DVBDIVID=""
QUIT
Begin DoDot:1
+9 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+10 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=""
+11 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=DVBDIVSTATUS("name")
+12 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=$TRANSLATE($JUSTIFY("",$LENGTH(DVBDIVSTATUS("name")))," ","-")
+13 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=" Last Run: "_DVBDIVSTATUS("lastRunText")
+14 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=" Next Run: "_DVBDIVSTATUS("nextRunText")
+15 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=" Currently: "_DVBDIVSTATUS("nextRunCount")_" request(s) pending for export."
End DoDot:1
+16 if (DVBROW<7)
SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)="No active divisions found for site."
+17 SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=""
+18 ;format example: Jan 10, 2025 11:19 am
SET DVBROW=DVBROW+1
SET DVBRETURN(DVBROW)=$$FMTE^XLFDT($$NOW^XLFDT,"1PM")
+19 QUIT
+20 ;
+21 ;
TMPROCESS ;CAPRI-12378:NGC - Endpoint for 'DVBA CAPRI NRE PROCESS TM' Taskman call
+1 NEW DVBDIVID,DVBDIVSTATUS,DVBNOWTIME
+2 SET DVBDIVID=""
+3 SET DVBNOWTIME=$$NOW^XLFDT
+4 FOR
SET DVBDIVID=$ORDER(^DVB(396.1,1,3,"B",DVBDIVID))
if (DVBDIVID="")
QUIT
Begin DoDot:1
+5 DO DIVSTATUS^DVBANREP(DVBDIVID,.DVBDIVSTATUS)
+6 if (DVBDIVSTATUS("nextRunDTM")>DVBNOWTIME)
QUIT
+7 DO PROCESSEXPORT^DVBANREP(DVBDIVID,.DVBDIVSTATUS,"Scheduled")
+8 QUIT
End DoDot:1
+9 QUIT
+10 ;
+11 ;
TMPURGE ;CAPRI-12378:NGC - Endpoint for 'DVBA CAPRI NRE PURGE TM' taskman job
+1 NEW DVBOPTIONDA,DVBPURGE,DVBFROMDATE,DVBPAIRNAME,DVBPROCESSID,DVBPROCESSSTATUS
+2 SET DVBOPTIONDA=$$FINDIDBYNAME^DVBLIBTM("DVBA CAPRI NRE PROCESS TM")
if ('+DVBOPTIONDA)
QUIT
+3 SET DVBPURGE=$$GET^XPAR("PKG","DVBAB CAPRI NRE PURGE")
if (DVBPURGE="")
SET DVBPURGE=30
+4 SET DVBFROMDATE=$$FMADD^XLFDT($$NOW^XLFDT,-DVBPURGE)
+5 SET DVBPAIRNAME=""
+6 FOR
SET DVBPAIRNAME=$ORDER(^DIC(19.2,DVBOPTIONDA,2,"B",DVBPAIRNAME))
if (DVBPAIRNAME="")
QUIT
if (DVBPAIRNAME?1"DVBANREPROC".E)
Begin DoDot:1
+7 SET DVBPROCESSID=$PIECE($PIECE(DVBPAIRNAME,"(",2),")",1)
+8 DO PROCESSSTATUS^DVBANREP(DVBPROCESSID,.DVBPROCESSSTATUS)
+9 if (DVBPROCESSSTATUS("processDate")<DVBFROMDATE)
DO DELNAMEDVALUE^DVBLIBTM(DVBOPTIONDA,DVBPAIRNAME)
+10 QUIT
End DoDot:1
+11 QUIT