RORX021A ;BPOIFO/CLR - HCV DAA CANDIDATES(QUERY & STORE) ;7/15/11 3:37pm
;;1.5;CLINICAL CASE REGISTRIES;**17,19,21,27,26,31,33,34,39**;Feb 17, 2006;Build 4
;
; This routine uses the following IAs:
;
; #10103 FMADD^XLFDT (supported)
; #10035 Direct read of the DOD field of the file #2 (supported)
; #10000 C^%DTC (supported)
; #10103 $$TRIM^XLFSTR (supported)
; #10103 $$UP^XLFSTR (supported)
;
;******************************************************************************
;******************************************************************************
; --- ROUTINE MODIFICATION LOG ---
;
;PKG/PATCH DATE DEVELOPER MODIFICATION
;----------- ---------- ----------- ----------------------------------------
;ROR*1.5*19 JUN 2012 K GUPTA Support for ICD-10 Coding System
;ROR*1.5*21 SEP 2013 T KOPP Added ICN as last report column if
; additional identifier option selected
;ROR*1.5*27 FEB 2015 T KOPP Remove requirement to skip patient in
; report if they received Boceprevir or
; Telaprevir, removed requirement that
; only genotype 1 is included on the
; report.
;ROR*1.5*26 MAR 2015 T KOPP Added FIB-4 as report column if FIB-4
; range option selected (STORE), calculate
; FIB-4 score if parameter selected.
; Remove treatment status column.
;ROR*1.5*31 MAY 2017 M FERRARESE Adding PACT ,PCP,and AGE/DOB as additional
; identifiers.
;ROR*1.5*33 APR 2018 F TRAXLER Adding FUT_APPT as additional identifier.
;ROR*1.5*34 SEP 2018 F TRAXLER Adding FUT_CLIN column.
;ROR*1.5*39 JUN 2021 F TRAXLER Replace real SSN with zeroes.
;******************************************************************************
;******************************************************************************
Q
;
;***** LAB SEARCH CALLBACK
;
; .ROR8DST Reference to the ROR8DST parameter.
;
; INVDT IEN of the Lab test (inverted date)
;
; .RESULT Reference to a local variable, which contains
; the result (see the $$LTSEARCH^RORUTL10).
;
; Return Values:
; <0 Error code (the search will be aborted)
; 0 Ok
; 1 Skip this result
; 2 Skip this and all remaining results
;
LTSCB(ROR8DST,INVDT,RESULT) ;
N DATE,IEN,NAME,RC,TMP,VAL,CAT,SUB
S IEN=+RESULT(2) Q:IEN'>0 1 ; IEN of the Lab test
S NAME=$P(RESULT(2),U,2) Q:NAME="" 1 ; Name of the test
S DATE=+$P(RESULT(1),U,1) Q:DATE'>0 1 ; Date of the test
S CAT=$P(RESULT(2),U,4) Q:CAT="" 1 ; Category(lab group) of the test
S VAL=$P(RESULT(1),U,3) Q:VAL="" 1 ; Result of the test
;--- Skip if test is not in lab groups HepC GT, Quant, or Qual
I CAT'="HepC GT",(CAT'="HepC Quant"),(CAT'="HepC Qual") Q 1
;=== Mark values as quantitative, qualitative or responded to treatment
;--- HCVQT=quant,HCVQL=qual,HCVOK=cured
I CAT="HepC Quant"!(CAT="HepC Qual") D Q:TMP 1
. S TMP=0
. S VAL=$$UP^XLFSTR(VAL) ;convert to upper case
. S VAL=$TR(VAL," ") ;strip out all spaces
. I VAL["POS" S SUB="HCVQL" Q
. I $E(VAL,1,1)="P" S SUB="HCVQL" Q
. I VAL["NEG" S SUB="HCVOK" Q
. I VAL["NO" S SUB="HCVOK" Q
. I $E(VAL,1,1)="N" S SUB="HCVOK" Q
. I VAL["COMMENT"!(VAL["CANC")!(VAL["DNR")!(VAL["TNP") S TMP=1 Q
. I +VAL=VAL,VAL<51 S TMP=1 Q ;skip abnormally low values
. I $$NUMERIC^RORUTL05($TR(VAL," >,GT")) S SUB="HCVQT" Q
. I $$NUMERIC^RORUTL05($TR(VAL," <,LT")) S SUB="HCVOK" Q
. S TMP=1
S SUB=$S(CAT="HepC GT":"GT",1:SUB)
;--- Store the result
S @ROR8DST@(SUB,DATE)=$P(RESULT(1),U,3)
Q 0
;
;***** QUERIES THE REGISTRY
; REPORT Parent IEN of report
; FLAGS Flags for the $$SKIP^RORXU005
; .NSPT Number of selected patients is returned here
; .RORLC sub-file and LOINC codes to search for FIB4
;
; Return Values:
; <0 Fatal error
; 0 Ok
; >0 Number of non-fatal errors
;
QUERY(REPORT,FLAGS,NSPT,RORLC) ;
N RORLDST ; Descriptor for Lab search API
N RORPTN ; Number of patients in the registry
N RORXDST ; Descriptor for pharmacy search API
N RORCDLIST ; Flag to indicate whether a clinic or division list exists
N RORCDSTDT ; Start date for clinic/division utilization search
N RORCDENDT ; End date for clinic/division utilization search
N RORXCDT ; User selected cut off date for registry meds
N RORTS ; User selected treatment status categories
N RORXEDT ; RX end date
N RORXSDT ; RX start date
N RORTH ; Patient treatment status (EXP=experienced, NAIVE=naive)
;
N CNT,ECNT,IEN,IENS,LTEDT,LTSDT,PATIEN,RC,RXEDT,SKIP,TMP,UTEDT,UTIL,UTSDT,VA,VADM,XREFNODE
N RCC,FLAG,HCV,GT,ROR1,ROR2,ROR3
S XREFNODE=$NA(^RORDATA(798,"AC",+RORREG))
S (CNT,ECNT,NSPT,RC)=0,(UTEDT,UTSDT)=0
;=== Set up parameters
;--- Utilization date range
D:$$PARAM^RORTSK01("PATIENTS","CAREONLY")
. S UTSDT=$$PARAM^RORTSK01("DATE_RANGE_3","START")\1
. S UTEDT=$$PARAM^RORTSK01("DATE_RANGE_3","END")\1
;--- Number of patients in the registry
S RORPTN=$$REGSIZE^RORUTL02(+RORREG) S:RORPTN<0 RORPTN=0
;--- Set up Treatment status parameters
F TMP="NAIVE","EXP","EXP_DAYS" D
. S RORTS(TMP)=$$PARAM^RORTSK01("TREATMENT_HISTORY",TMP)
;--- Lab parameters
S RORLDST("RORCB")="$$LTSCB^RORX021A"
;--- Labs date range
S LTSDT=""
S LTEDT=DT
;--- Shift the Labs end date
S LTEDT=$$FMADD^XLFDT(LTEDT,1)
;== Pharm parameters
S RORXDST("GENERIC")=1 ;only meds with generic name
S RORXDST("RORCB")="$$RXOCB^RORX021A" ;call back routine
;--- RX cut off date (inverse)/shift cut off back one day
N X1,X2,X S X2=-(+RORTS("EXP_DAYS")+1),X1=DT D C^%DTC S RORXCDT=99999999-X
;--- RX start and end dates
S RORXSDT=2000101 ;start date 1/1/1900
S RORXEDT=DT
;--- RX list of HepC registry drugs
S RORXL=$$ALLOC^RORTMP()
S RC=$$DRUGLIST^RORUTL16(RORXL,+RORREG)
;--- Shift the Labs end date
S RORXEDT=$$FMADD^XLFDT(RORXEDT\1,1)
;--- Set up Clinic/Division list parameters date_range_3
S RORCDLIST=$$CDPARMS^RORXU001(.RORTSK,.RORCDSTDT,.RORCDENDT,1)
;--- Set up ICD parameters
S FLAG=$G(RORTSK("PARAMS","ICDFILT","A","FILTER"))
;=== Browse through the registry records
S IEN=0
F S IEN=$O(@XREFNODE@(IEN)) Q:IEN'>0 D Q:RC<0
. S TMP=$S(RORPTN>0:CNT/RORPTN,1:"")
. S RC=$$LOOP^RORTSK01(TMP) Q:RC<0
. S IENS=IEN_",",CNT=CNT+1
. ;--- Get patient DFN
. S PATIEN=$$PTIEN^RORUTL01(IEN) Q:PATIEN'>0
. I +$P($G(^DPT(PATIEN,.35)),U)>0 Q ;patient has died
. ;--- Check if the patient should be skipped based on standard filters
. Q:$$SKIP^RORXU005(IEN,FLAGS,UTSDT,UTEDT)
. ;--- Check if patient should be skipped because of ICD codes
. S RCC=0
. I FLAG'="ALL" D
. . S RCC=$$ICD^RORXU010(PATIEN)
. I (FLAG="INCLUDE")&(RCC=0) Q
. I (FLAG="EXCLUDE")&(RCC=1) Q
. ;
. ;--- Check if patient should be skipped because of Clinic or Division
. I RORCDLIST,'$$CDUTIL^RORXU001(.RORTSK,PATIEN,RORCDSTDT,RORCDENDT) Q
. ;=== Check labs and meds
. S SKIP=1,UTIL=0
. D I RC<0 S ECNT=ECNT+1,RC=0 Q
. . S RORLDST=$NA(^TMP("RORX021",$J,"PAT",PATIEN,"LR"))
. . S RC=$$LTSEARCH^RORUTL10(PATIEN,+RORREG,.RORLDST,,LTSDT,LTEDT)
. . Q:RC'>0
. . ;=== Skip if patient no longer has HCV
. . S ROR1=+$O(@RORLDST@("HCVOK","")),ROR2=+$O(@RORLDST@("HCVQL","")),ROR3=(+$O(@RORLDST@("HCVQT","")))
. . I ROR1>0 D Q:SKIP=1
. . . ;--- Skip if date of most recent HCV test is normal
. . . I (ROR1<ROR2),(ROR1<ROR3) S SKIP=1 Q
. . . I (ROR1<ROR2),(ROR3=0) S SKIP=1 Q
. . . I (ROR1<ROR3),(ROR2=0) S SKIP=1 Q
. . . ;--- Skip if no qual or quant test
. . . I ROR2+ROR3=0 S SKIP=1 Q
. . . S SKIP=0
. . ;--- Check if patient should be skipped because of user selected Treatment status
. . S RORXDST=$NA(^TMP("RORX021",$J,"PAT",PATIEN,"RX"))
. . S RC=$$RXSEARCH^RORUTL14(PATIEN,RORXL,.RORXDST,"EIOV",RORXSDT,RORXEDT)
. . Q:RC<0 ;error occurred
. . I $G(RORXDST("SKIP")) S SKIP=1 K RORXDST("SKIP") Q ;skip if taking DAA meds
. . I RC>0,'+RORTS("EXP") S SKIP=1 Q ; skip naive patients
. . I RC=0,'+RORTS("NAIVE") S SKIP=1 Q ;skip experienced patients
. . I RC>0,$O(@RORXDST@(RORXCDT),-1) S SKIP=1 Q ;skip if patient has meds after cutoff
. . ;--- Include patient
. . S RORTH=$S(RC>0:"EXP",RC=0:"NAIVE",1:"")
. . S SKIP=0
. ;--- Check if patient should be skipped because no utilization in the corresponding date range
. I 'SKIP D:$$PARAM^RORTSK01("PATIENTS","CAREONLY")
. . K TMP S TMP("ALL")=1
. . S UTIL=+$$UTIL^RORXU003(UTSDT,UTEDT,PATIEN,.TMP)
. . S:'UTIL SKIP=1
. ;
. ; Skip patient if FIB4 range has been selected and score does not match parameters
. I 'SKIP,$G(RORDATA("IDLST")) D
. . N OK
. . S OK=$$CALCFIB^RORX019A(PATIEN,"",.RORDATA,IEN,.RORLC)
. . I OK<0 S SKIP=1 Q
. . I '$$INRANGE^RORX019(.RORDATA) S SKIP=1 Q ;exclude patient from report if ANY score is out of range
. . I '$$SKIP^RORX019(.RORDATA) S SKIP=1 ;exclude patient from report with null scores
. ;--- Skip the patient if not all selection criteria have been met
. I SKIP K ^TMP("RORX021",$J,"PAT",PATIEN) Q
. ;
. ;--- Get and store the patient's data last4^name^treatment status^ICN^FIB-4 score^PACT^PCP^AGE/DOB
. D VADEM^RORUTL05(PATIEN,1) S VA("BID")="0000"
. S TMP=$S($$PARAM^RORTSK01("PATIENTS","ICN"):$$ICN^RORUTL02(PATIEN),1:"")
. S ^TMP("RORX021",$J,"PAT",PATIEN)=VA("BID")_U_VADM(1)_U_RORTH_U_TMP_U_$G(RORDATA("SCORE",4))
. S AGETYPE=$$PARAM^RORTSK01("AGE_RANGE","TYPE") D
. . S AGE=$S(AGETYPE="AGE":$P(VADM(4),U),AGETYPE="DOB":$$DATE^RORXU002($P(VADM(3),U)\1),1:"")
. S TMP=$S($$PARAM^RORTSK01("PATIENTS","PACT"):$$PACT^RORUTL02(PATIEN),1:"")
. S ^TMP("RORX021",$J,"PAT",PATIEN)=^TMP("RORX021",$J,"PAT",PATIEN)_U_TMP
. S TMP=$S($$PARAM^RORTSK01("PATIENTS","PCP"):$$PCP^RORUTL02(PATIEN),1:"")
. S ^TMP("RORX021",$J,"PAT",PATIEN)=^TMP("RORX021",$J,"PAT",PATIEN)_U_TMP_U_AGE
. S TMP=$S($$PARAM^RORTSK01("OPTIONS","FUT_APPT"):$$FUTAPPT^RORUTL02(PATIEN,$$PARAM^RORTSK01("OPTIONS","FUT_APPT")),1:"")
. S ^TMP("RORX021",$J,"PAT",PATIEN)=^TMP("RORX021",$J,"PAT",PATIEN)_U_$P(TMP,U)_U_$P(TMP,U,2)
. S NSPT=NSPT+1 ;increment count of selected patients
;
D FREE^RORTMP(RORXL) ;clean up drug list
Q $S(RC<0:RC,1:ECNT)
;
;***** CALLBACK FUNCTION FOR THE PHARMACY SEARCH API
;
;
; .ROR8DST Reference to the ROR8DST parameter.
;
;
; ORDER Order number (from condensed list)
;
; FLAGS Flags describing the order to be
; processed.
;
; DRUG Dispensed drug
; ^01: Drug IEN in file #50
; ^02: Drug name
;
; DATE Order date (issue date for outpatient
; drugs or start date for inpatient)
;
;Return Values:
; <0 Error code (the search will be aborted)
; 0 Ok
; 1 Skip this result
; 2 Skip this and all remaining results
;
RXOCB(ROR8DST,ORDER,ORDFLG,DRUG,DATE) ;
N DRUGIEN,DRUGNAME,IEN,IRP,OFD,RPSUB,RXBUF,RXCNT,RXNUM,TMP
;--- Skip med if med does not have a generic name
I ROR8DST("GENERIC") D
. S DRUGIEN=+ROR8DST("RORXGEN"),DRUGNAME=$P(ROR8DST("RORXGEN"),U,2)
E Q 1
Q:(DRUGIEN'>0)!(DRUGNAME="") 1
;--- Process the order
S TMP=$G(^TMP("PS",$J,"RXN",0))
S RXNUM=$P(TMP,U) S:RXNUM="" RXNUM=" "
S RXCNT=0
;--- Original prescription
I ORDFLG["I" D ;--- Inpatient
. S OFD=$P($G(^TMP("PS",$J,0)),U,5) ; Start Date
. S RXCNT=RXCNT+1
. S @ROR8DST@((99999999-OFD),DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
E D ;--- Outpatient
. S OFD=+$P($G(^TMP("PS",$J,"RXN",0)),U,6) ; Original Fill Date
. Q:(OFD<ROR8DST("RORSDT"))!(OFD'<ROR8DST("ROREDT"))
. S RXCNT=RXCNT+1
. S @ROR8DST@((99999999-OFD),DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
;--- Refills and partials
F RPSUB="REF","PAR" D
. S $P(RXBUF,U)=$E(RPSUB,1)
. S IRP=0
. F S IRP=$O(^TMP("PS",$J,RPSUB,IRP)) Q:IRP'>0 D
. . S TMP=$G(^TMP("PS",$J,RPSUB,IRP,0))
. . I TMP>0 S RXCNT=RXCNT+1,TMP=99999999-TMP D
. . . S @ROR8DST@(+TMP,DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
Q 0
;***** STORES THE REPORT DATA
;
; REPORT IEN of the REPORT element
; NSPT Number of selected patients
;
; Return Values:
; <0 Error code
; 0 Ok
; >0 Number of non-fatal errors
;
STORE(REPORT,NSPT) ;
N RORFDT ;med fill date
N RORLBG ;lab test type (GT, HCVQT,HCVQL)
N RORLVAL ;lab value
N RORRX ;med name
N RORSTNAM ;
N RORLDST
N RORXDST
N RORICN
N RORFIB4
N RORPACT
N RORPCP
N RORBODY,PTAG ;parent iens
N CNT,DATE,DFN,ECNT,IEN,LAST4,LTLST,NAME,NODE,PTCNT,PTLST,PTNAME,RC,RXLST,TMP,VAL,THIST,AGE,AGETYPE
N GT,HCVQT,HCV,HCVQL,RORAPPT,RORCLIN
S (ECNT,RC)=0,(LTLST,PTLST,RXLST)=-1
;--- Create 'patients' table
S RORBODY=$$ADDVAL^RORTSK11(RORTSK,"PATIENTS",,REPORT)
D ADDATTR^RORTSK11(RORTSK,RORBODY,"TABLE","PATIENTS")
S (CNT,DFN,PTCNT)=0
F S DFN=$O(^TMP("RORX021",$J,"PAT",DFN)) Q:DFN'>0 D Q:RC<0
. S TMP=$S(NSPT>0:CNT/NSPT,1:"")
. S RC=$$LOOP^RORTSK01(TMP) Q:RC<0
. S CNT=CNT+1,NODE=$NA(^TMP("RORX021",$J,"PAT",DFN))
. ;--- Patient's data
. S TMP=$G(@NODE)
. S LAST4=$P(TMP,U),PTNAME=$P(TMP,U,2),THIST=$P(TMP,U,3),RORICN=$P(TMP,U,4),RORFIB4=$P(TMP,U,5)
. S RORPACT=$P(TMP,U,6),RORPCP=$P(TMP,U,7),AGE=$P(TMP,U,8),RORAPPT=$P(TMP,U,9),RORCLIN=$P(TMP,U,10)
. ;--- get lab results
. S RORLDST=$NA(^TMP("RORX021",$J,"PAT",DFN,"LR"))
. S RORXDST=$NA(^TMP("RORX021",$J,"PAT",DFN,"RX"))
. ;--- Gets most recent result for HepC Qual, HepC Quant and GT
. ; HCVQT=date of most recent quanitative test^result
. ; HCVQL=date of most recent qualitative test^result
. ; GT=date of most recent GT test^result
. K HCVQT,HCVQL,GT
. F RORLBG="HCVQT","HCVQL","GT" D
. . S NODE=RORLBG,@NODE="^"
. . S RORFDT=$O(@RORLDST@(RORLBG,""))
. . Q:RORFDT=""
. . S RORLVAL=$G(@RORLDST@(RORLBG,RORFDT))
. . S RORFDT=9999999-RORFDT
. . S RORFDT=RORFDT\1 ;strip time
. . S @NODE=(RORFDT)_U_RORLVAL
. ;--- get most recent registry med if experienced
. ;--- if more than one med give preference to INTERFERON
. S RORFDT=$O(@RORXDST@("")),RORRX=""
. I THIST="EXP" D
. . S RORSTNAM="",RORRX=""
. . F S RORSTNAM=$O(@RORXDST@(RORFDT,RORSTNAM)) Q:RORSTNAM="" D
. . . S RORRX=$S(RORRX="":RORSTNAM,RORRX["INTERFERON":RORRX,1:RORSTNAM)
. . S RORFDT=99999999-RORFDT
. . S RORFDT=RORFDT\1
. S PTAG=$$ADDVAL^RORTSK11(RORTSK,"PATIENT",,RORBODY,,DFN)
. ;--- give preference to quant result over qual result
. S HCV=$S(+$G(HCVQL)>+$G(HCVQT):HCVQL,$G(HCVQT):HCVQT,1:"")
. ;--- store
. D ADDVAL^RORTSK11(RORTSK,"NAME",PTNAME,PTAG,1)
. D ADDVAL^RORTSK11(RORTSK,"LAST4",LAST4,PTAG,2)
. S AGETYPE=$$PARAM^RORTSK01("AGE_RANGE","TYPE") I AGETYPE'="ALL" D
. . D ADDVAL^RORTSK11(RORTSK,AGETYPE,AGE,PTAG,1)
. ; I $G(RORDATA("LIST"))'["4" D ADDVAL^RORTSK11(RORTSK,"STATUS",THIST,PTAG,1)
. D ADDVAL^RORTSK11(RORTSK,"HCV_DATE",$P(HCV,U),PTAG,1)
. D ADDVAL^RORTSK11(RORTSK,"HCV",$P(HCV,U,2),PTAG,3)
. D ADDVAL^RORTSK11(RORTSK,"GT",$P(GT,U,2),PTAG,1)
. D ADDVAL^RORTSK11(RORTSK,"FILL_DATE",RORFDT,PTAG,1)
. D ADDVAL^RORTSK11(RORTSK,"FILL_MED",RORRX,PTAG,1)
. I $G(RORDATA("IDLST"))'="" D
. . S:RORDATA("IDLST")["4" TMP=$$ADDVAL^RORTSK11(RORTSK,"FIB4",RORFIB4,PTAG,3)
. I $$PARAM^RORTSK01("PATIENTS","ICN") D ADDVAL^RORTSK11(RORTSK,"ICN",RORICN,PTAG,1)
. I $$PARAM^RORTSK01("PATIENTS","PACT") D ADDVAL^RORTSK11(RORTSK,"PACT",RORPACT,PTAG,1)
. I $$PARAM^RORTSK01("PATIENTS","PCP") D ADDVAL^RORTSK11(RORTSK,"PCP",RORPCP,PTAG,1)
. I $$PARAM^RORTSK01("OPTIONS","FUT_APPT") D
. . D ADDVAL^RORTSK11(RORTSK,"FUT_APPT",RORAPPT,PTAG,1)
. . D ADDVAL^RORTSK11(RORTSK,"FUT_CLIN",RORCLIN,PTAG,1)
. S PTCNT=PTCNT+1
;--- Inactivate the patient list tag if the list is empty
D:PTCNT'>0 UPDVAL^RORTSK11(RORTSK,PTLST,,,1)
;---
Q ECNT
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRORX021A 16508 printed Dec 13, 2024@01:44:56 Page 2
RORX021A ;BPOIFO/CLR - HCV DAA CANDIDATES(QUERY & STORE) ;7/15/11 3:37pm
+1 ;;1.5;CLINICAL CASE REGISTRIES;**17,19,21,27,26,31,33,34,39**;Feb 17, 2006;Build 4
+2 ;
+3 ; This routine uses the following IAs:
+4 ;
+5 ; #10103 FMADD^XLFDT (supported)
+6 ; #10035 Direct read of the DOD field of the file #2 (supported)
+7 ; #10000 C^%DTC (supported)
+8 ; #10103 $$TRIM^XLFSTR (supported)
+9 ; #10103 $$UP^XLFSTR (supported)
+10 ;
+11 ;******************************************************************************
+12 ;******************************************************************************
+13 ; --- ROUTINE MODIFICATION LOG ---
+14 ;
+15 ;PKG/PATCH DATE DEVELOPER MODIFICATION
+16 ;----------- ---------- ----------- ----------------------------------------
+17 ;ROR*1.5*19 JUN 2012 K GUPTA Support for ICD-10 Coding System
+18 ;ROR*1.5*21 SEP 2013 T KOPP Added ICN as last report column if
+19 ; additional identifier option selected
+20 ;ROR*1.5*27 FEB 2015 T KOPP Remove requirement to skip patient in
+21 ; report if they received Boceprevir or
+22 ; Telaprevir, removed requirement that
+23 ; only genotype 1 is included on the
+24 ; report.
+25 ;ROR*1.5*26 MAR 2015 T KOPP Added FIB-4 as report column if FIB-4
+26 ; range option selected (STORE), calculate
+27 ; FIB-4 score if parameter selected.
+28 ; Remove treatment status column.
+29 ;ROR*1.5*31 MAY 2017 M FERRARESE Adding PACT ,PCP,and AGE/DOB as additional
+30 ; identifiers.
+31 ;ROR*1.5*33 APR 2018 F TRAXLER Adding FUT_APPT as additional identifier.
+32 ;ROR*1.5*34 SEP 2018 F TRAXLER Adding FUT_CLIN column.
+33 ;ROR*1.5*39 JUN 2021 F TRAXLER Replace real SSN with zeroes.
+34 ;******************************************************************************
+35 ;******************************************************************************
+36 QUIT
+37 ;
+38 ;***** LAB SEARCH CALLBACK
+39 ;
+40 ; .ROR8DST Reference to the ROR8DST parameter.
+41 ;
+42 ; INVDT IEN of the Lab test (inverted date)
+43 ;
+44 ; .RESULT Reference to a local variable, which contains
+45 ; the result (see the $$LTSEARCH^RORUTL10).
+46 ;
+47 ; Return Values:
+48 ; <0 Error code (the search will be aborted)
+49 ; 0 Ok
+50 ; 1 Skip this result
+51 ; 2 Skip this and all remaining results
+52 ;
LTSCB(ROR8DST,INVDT,RESULT) ;
+1 NEW DATE,IEN,NAME,RC,TMP,VAL,CAT,SUB
+2 ; IEN of the Lab test
SET IEN=+RESULT(2)
if IEN'>0
QUIT 1
+3 ; Name of the test
SET NAME=$PIECE(RESULT(2),U,2)
if NAME=""
QUIT 1
+4 ; Date of the test
SET DATE=+$PIECE(RESULT(1),U,1)
if DATE'>0
QUIT 1
+5 ; Category(lab group) of the test
SET CAT=$PIECE(RESULT(2),U,4)
if CAT=""
QUIT 1
+6 ; Result of the test
SET VAL=$PIECE(RESULT(1),U,3)
if VAL=""
QUIT 1
+7 ;--- Skip if test is not in lab groups HepC GT, Quant, or Qual
+8 IF CAT'="HepC GT"
IF (CAT'="HepC Quant")
IF (CAT'="HepC Qual")
QUIT 1
+9 ;=== Mark values as quantitative, qualitative or responded to treatment
+10 ;--- HCVQT=quant,HCVQL=qual,HCVOK=cured
+11 IF CAT="HepC Quant"!(CAT="HepC Qual")
Begin DoDot:1
+12 SET TMP=0
+13 ;convert to upper case
SET VAL=$$UP^XLFSTR(VAL)
+14 ;strip out all spaces
SET VAL=$TRANSLATE(VAL," ")
+15 IF VAL["POS"
SET SUB="HCVQL"
QUIT
+16 IF $EXTRACT(VAL,1,1)="P"
SET SUB="HCVQL"
QUIT
+17 IF VAL["NEG"
SET SUB="HCVOK"
QUIT
+18 IF VAL["NO"
SET SUB="HCVOK"
QUIT
+19 IF $EXTRACT(VAL,1,1)="N"
SET SUB="HCVOK"
QUIT
+20 IF VAL["COMMENT"!(VAL["CANC")!(VAL["DNR")!(VAL["TNP")
SET TMP=1
QUIT
+21 ;skip abnormally low values
IF +VAL=VAL
IF VAL<51
SET TMP=1
QUIT
+22 IF $$NUMERIC^RORUTL05($TRANSLATE(VAL," >,GT"))
SET SUB="HCVQT"
QUIT
+23 IF $$NUMERIC^RORUTL05($TRANSLATE(VAL," <,LT"))
SET SUB="HCVOK"
QUIT
+24 SET TMP=1
End DoDot:1
if TMP
QUIT 1
+25 SET SUB=$SELECT(CAT="HepC GT":"GT",1:SUB)
+26 ;--- Store the result
+27 SET @ROR8DST@(SUB,DATE)=$PIECE(RESULT(1),U,3)
+28 QUIT 0
+29 ;
+30 ;***** QUERIES THE REGISTRY
+31 ; REPORT Parent IEN of report
+32 ; FLAGS Flags for the $$SKIP^RORXU005
+33 ; .NSPT Number of selected patients is returned here
+34 ; .RORLC sub-file and LOINC codes to search for FIB4
+35 ;
+36 ; Return Values:
+37 ; <0 Fatal error
+38 ; 0 Ok
+39 ; >0 Number of non-fatal errors
+40 ;
QUERY(REPORT,FLAGS,NSPT,RORLC) ;
+1 ; Descriptor for Lab search API
NEW RORLDST
+2 ; Number of patients in the registry
NEW RORPTN
+3 ; Descriptor for pharmacy search API
NEW RORXDST
+4 ; Flag to indicate whether a clinic or division list exists
NEW RORCDLIST
+5 ; Start date for clinic/division utilization search
NEW RORCDSTDT
+6 ; End date for clinic/division utilization search
NEW RORCDENDT
+7 ; User selected cut off date for registry meds
NEW RORXCDT
+8 ; User selected treatment status categories
NEW RORTS
+9 ; RX end date
NEW RORXEDT
+10 ; RX start date
NEW RORXSDT
+11 ; Patient treatment status (EXP=experienced, NAIVE=naive)
NEW RORTH
+12 ;
+13 NEW CNT,ECNT,IEN,IENS,LTEDT,LTSDT,PATIEN,RC,RXEDT,SKIP,TMP,UTEDT,UTIL,UTSDT,VA,VADM,XREFNODE
+14 NEW RCC,FLAG,HCV,GT,ROR1,ROR2,ROR3
+15 SET XREFNODE=$NAME(^RORDATA(798,"AC",+RORREG))
+16 SET (CNT,ECNT,NSPT,RC)=0
SET (UTEDT,UTSDT)=0
+17 ;=== Set up parameters
+18 ;--- Utilization date range
+19 if $$PARAM^RORTSK01("PATIENTS","CAREONLY")
Begin DoDot:1
+20 SET UTSDT=$$PARAM^RORTSK01("DATE_RANGE_3","START")\1
+21 SET UTEDT=$$PARAM^RORTSK01("DATE_RANGE_3","END")\1
End DoDot:1
+22 ;--- Number of patients in the registry
+23 SET RORPTN=$$REGSIZE^RORUTL02(+RORREG)
if RORPTN<0
SET RORPTN=0
+24 ;--- Set up Treatment status parameters
+25 FOR TMP="NAIVE","EXP","EXP_DAYS"
Begin DoDot:1
+26 SET RORTS(TMP)=$$PARAM^RORTSK01("TREATMENT_HISTORY",TMP)
End DoDot:1
+27 ;--- Lab parameters
+28 SET RORLDST("RORCB")="$$LTSCB^RORX021A"
+29 ;--- Labs date range
+30 SET LTSDT=""
+31 SET LTEDT=DT
+32 ;--- Shift the Labs end date
+33 SET LTEDT=$$FMADD^XLFDT(LTEDT,1)
+34 ;== Pharm parameters
+35 ;only meds with generic name
SET RORXDST("GENERIC")=1
+36 ;call back routine
SET RORXDST("RORCB")="$$RXOCB^RORX021A"
+37 ;--- RX cut off date (inverse)/shift cut off back one day
+38 NEW X1,X2,X
SET X2=-(+RORTS("EXP_DAYS")+1)
SET X1=DT
DO C^%DTC
SET RORXCDT=99999999-X
+39 ;--- RX start and end dates
+40 ;start date 1/1/1900
SET RORXSDT=2000101
+41 SET RORXEDT=DT
+42 ;--- RX list of HepC registry drugs
+43 SET RORXL=$$ALLOC^RORTMP()
+44 SET RC=$$DRUGLIST^RORUTL16(RORXL,+RORREG)
+45 ;--- Shift the Labs end date
+46 SET RORXEDT=$$FMADD^XLFDT(RORXEDT\1,1)
+47 ;--- Set up Clinic/Division list parameters date_range_3
+48 SET RORCDLIST=$$CDPARMS^RORXU001(.RORTSK,.RORCDSTDT,.RORCDENDT,1)
+49 ;--- Set up ICD parameters
+50 SET FLAG=$GET(RORTSK("PARAMS","ICDFILT","A","FILTER"))
+51 ;=== Browse through the registry records
+52 SET IEN=0
+53 FOR
SET IEN=$ORDER(@XREFNODE@(IEN))
if IEN'>0
QUIT
Begin DoDot:1
+54 SET TMP=$SELECT(RORPTN>0:CNT/RORPTN,1:"")
+55 SET RC=$$LOOP^RORTSK01(TMP)
if RC<0
QUIT
+56 SET IENS=IEN_","
SET CNT=CNT+1
+57 ;--- Get patient DFN
+58 SET PATIEN=$$PTIEN^RORUTL01(IEN)
if PATIEN'>0
QUIT
+59 ;patient has died
IF +$PIECE($GET(^DPT(PATIEN,.35)),U)>0
QUIT
+60 ;--- Check if the patient should be skipped based on standard filters
+61 if $$SKIP^RORXU005(IEN,FLAGS,UTSDT,UTEDT)
QUIT
+62 ;--- Check if patient should be skipped because of ICD codes
+63 SET RCC=0
+64 IF FLAG'="ALL"
Begin DoDot:2
+65 SET RCC=$$ICD^RORXU010(PATIEN)
End DoDot:2
+66 IF (FLAG="INCLUDE")&(RCC=0)
QUIT
+67 IF (FLAG="EXCLUDE")&(RCC=1)
QUIT
+68 ;
+69 ;--- Check if patient should be skipped because of Clinic or Division
+70 IF RORCDLIST
IF '$$CDUTIL^RORXU001(.RORTSK,PATIEN,RORCDSTDT,RORCDENDT)
QUIT
+71 ;=== Check labs and meds
+72 SET SKIP=1
SET UTIL=0
+73 Begin DoDot:2
+74 SET RORLDST=$NAME(^TMP("RORX021",$JOB,"PAT",PATIEN,"LR"))
+75 SET RC=$$LTSEARCH^RORUTL10(PATIEN,+RORREG,.RORLDST,,LTSDT,LTEDT)
+76 if RC'>0
QUIT
+77 ;=== Skip if patient no longer has HCV
+78 SET ROR1=+$ORDER(@RORLDST@("HCVOK",""))
SET ROR2=+$ORDER(@RORLDST@("HCVQL",""))
SET ROR3=(+$ORDER(@RORLDST@("HCVQT","")))
+79 IF ROR1>0
Begin DoDot:3
+80 ;--- Skip if date of most recent HCV test is normal
+81 IF (ROR1<ROR2)
IF (ROR1<ROR3)
SET SKIP=1
QUIT
+82 IF (ROR1<ROR2)
IF (ROR3=0)
SET SKIP=1
QUIT
+83 IF (ROR1<ROR3)
IF (ROR2=0)
SET SKIP=1
QUIT
+84 ;--- Skip if no qual or quant test
+85 IF ROR2+ROR3=0
SET SKIP=1
QUIT
+86 SET SKIP=0
End DoDot:3
if SKIP=1
QUIT
+87 ;--- Check if patient should be skipped because of user selected Treatment status
+88 SET RORXDST=$NAME(^TMP("RORX021",$JOB,"PAT",PATIEN,"RX"))
+89 SET RC=$$RXSEARCH^RORUTL14(PATIEN,RORXL,.RORXDST,"EIOV",RORXSDT,RORXEDT)
+90 ;error occurred
if RC<0
QUIT
+91 ;skip if taking DAA meds
IF $GET(RORXDST("SKIP"))
SET SKIP=1
KILL RORXDST("SKIP")
QUIT
+92 ; skip naive patients
IF RC>0
IF '+RORTS("EXP")
SET SKIP=1
QUIT
+93 ;skip experienced patients
IF RC=0
IF '+RORTS("NAIVE")
SET SKIP=1
QUIT
+94 ;skip if patient has meds after cutoff
IF RC>0
IF $ORDER(@RORXDST@(RORXCDT),-1)
SET SKIP=1
QUIT
+95 ;--- Include patient
+96 SET RORTH=$SELECT(RC>0:"EXP",RC=0:"NAIVE",1:"")
+97 SET SKIP=0
End DoDot:2
IF RC<0
SET ECNT=ECNT+1
SET RC=0
QUIT
+98 ;--- Check if patient should be skipped because no utilization in the corresponding date range
+99 IF 'SKIP
if $$PARAM^RORTSK01("PATIENTS","CAREONLY")
Begin DoDot:2
+100 KILL TMP
SET TMP("ALL")=1
+101 SET UTIL=+$$UTIL^RORXU003(UTSDT,UTEDT,PATIEN,.TMP)
+102 if 'UTIL
SET SKIP=1
End DoDot:2
+103 ;
+104 ; Skip patient if FIB4 range has been selected and score does not match parameters
+105 IF 'SKIP
IF $GET(RORDATA("IDLST"))
Begin DoDot:2
+106 NEW OK
+107 SET OK=$$CALCFIB^RORX019A(PATIEN,"",.RORDATA,IEN,.RORLC)
+108 IF OK<0
SET SKIP=1
QUIT
+109 ;exclude patient from report if ANY score is out of range
IF '$$INRANGE^RORX019(.RORDATA)
SET SKIP=1
QUIT
+110 ;exclude patient from report with null scores
IF '$$SKIP^RORX019(.RORDATA)
SET SKIP=1
End DoDot:2
+111 ;--- Skip the patient if not all selection criteria have been met
+112 IF SKIP
KILL ^TMP("RORX021",$JOB,"PAT",PATIEN)
QUIT
+113 ;
+114 ;--- Get and store the patient's data last4^name^treatment status^ICN^FIB-4 score^PACT^PCP^AGE/DOB
+115 DO VADEM^RORUTL05(PATIEN,1)
SET VA("BID")="0000"
+116 SET TMP=$SELECT($$PARAM^RORTSK01("PATIENTS","ICN"):$$ICN^RORUTL02(PATIEN),1:"")
+117 SET ^TMP("RORX021",$JOB,"PAT",PATIEN)=VA("BID")_U_VADM(1)_U_RORTH_U_TMP_U_$GET(RORDATA("SCORE",4))
+118 SET AGETYPE=$$PARAM^RORTSK01("AGE_RANGE","TYPE")
Begin DoDot:2
+119 SET AGE=$SELECT(AGETYPE="AGE":$PIECE(VADM(4),U),AGETYPE="DOB":$$DATE^RORXU002($PIECE(VADM(3),U)\1),1:"")
End DoDot:2
+120 SET TMP=$SELECT($$PARAM^RORTSK01("PATIENTS","PACT"):$$PACT^RORUTL02(PATIEN),1:"")
+121 SET ^TMP("RORX021",$JOB,"PAT",PATIEN)=^TMP("RORX021",$JOB,"PAT",PATIEN)_U_TMP
+122 SET TMP=$SELECT($$PARAM^RORTSK01("PATIENTS","PCP"):$$PCP^RORUTL02(PATIEN),1:"")
+123 SET ^TMP("RORX021",$JOB,"PAT",PATIEN)=^TMP("RORX021",$JOB,"PAT",PATIEN)_U_TMP_U_AGE
+124 SET TMP=$SELECT($$PARAM^RORTSK01("OPTIONS","FUT_APPT"):$$FUTAPPT^RORUTL02(PATIEN,$$PARAM^RORTSK01("OPTIONS","FUT_APPT")),1:"")
+125 SET ^TMP("RORX021",$JOB,"PAT",PATIEN)=^TMP("RORX021",$JOB,"PAT",PATIEN)_U_$PIECE(TMP,U)_U_$PIECE(TMP,U,2)
+126 ;increment count of selected patients
SET NSPT=NSPT+1
End DoDot:1
if RC<0
QUIT
+127 ;
+128 ;clean up drug list
DO FREE^RORTMP(RORXL)
+129 QUIT $SELECT(RC<0:RC,1:ECNT)
+130 ;
+131 ;***** CALLBACK FUNCTION FOR THE PHARMACY SEARCH API
+132 ;
+133 ;
+134 ; .ROR8DST Reference to the ROR8DST parameter.
+135 ;
+136 ;
+137 ; ORDER Order number (from condensed list)
+138 ;
+139 ; FLAGS Flags describing the order to be
+140 ; processed.
+141 ;
+142 ; DRUG Dispensed drug
+143 ; ^01: Drug IEN in file #50
+144 ; ^02: Drug name
+145 ;
+146 ; DATE Order date (issue date for outpatient
+147 ; drugs or start date for inpatient)
+148 ;
+149 ;Return Values:
+150 ; <0 Error code (the search will be aborted)
+151 ; 0 Ok
+152 ; 1 Skip this result
+153 ; 2 Skip this and all remaining results
+154 ;
RXOCB(ROR8DST,ORDER,ORDFLG,DRUG,DATE) ;
+1 NEW DRUGIEN,DRUGNAME,IEN,IRP,OFD,RPSUB,RXBUF,RXCNT,RXNUM,TMP
+2 ;--- Skip med if med does not have a generic name
+3 IF ROR8DST("GENERIC")
Begin DoDot:1
+4 SET DRUGIEN=+ROR8DST("RORXGEN")
SET DRUGNAME=$PIECE(ROR8DST("RORXGEN"),U,2)
End DoDot:1
+5 IF '$TEST
QUIT 1
+6 if (DRUGIEN'>0)!(DRUGNAME="")
QUIT 1
+7 ;--- Process the order
+8 SET TMP=$GET(^TMP("PS",$JOB,"RXN",0))
+9 SET RXNUM=$PIECE(TMP,U)
if RXNUM=""
SET RXNUM=" "
+10 SET RXCNT=0
+11 ;--- Original prescription
+12 ;--- Inpatient
IF ORDFLG["I"
Begin DoDot:1
+13 ; Start Date
SET OFD=$PIECE($GET(^TMP("PS",$JOB,0)),U,5)
+14 SET RXCNT=RXCNT+1
+15 SET @ROR8DST@((99999999-OFD),DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
End DoDot:1
+16 ;--- Outpatient
IF '$TEST
Begin DoDot:1
+17 ; Original Fill Date
SET OFD=+$PIECE($GET(^TMP("PS",$JOB,"RXN",0)),U,6)
+18 if (OFD<ROR8DST("RORSDT"))!(OFD'<ROR8DST("ROREDT"))
QUIT
+19 SET RXCNT=RXCNT+1
+20 SET @ROR8DST@((99999999-OFD),DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
End DoDot:1
+21 ;--- Refills and partials
+22 FOR RPSUB="REF","PAR"
Begin DoDot:1
+23 SET $PIECE(RXBUF,U)=$EXTRACT(RPSUB,1)
+24 SET IRP=0
+25 FOR
SET IRP=$ORDER(^TMP("PS",$JOB,RPSUB,IRP))
if IRP'>0
QUIT
Begin DoDot:2
+26 SET TMP=$GET(^TMP("PS",$JOB,RPSUB,IRP,0))
+27 IF TMP>0
SET RXCNT=RXCNT+1
SET TMP=99999999-TMP
Begin DoDot:3
+28 SET @ROR8DST@(+TMP,DRUGNAME,DRUGIEN,RXNUM,RXCNT)=""
End DoDot:3
End DoDot:2
End DoDot:1
+29 QUIT 0
+30 ;***** STORES THE REPORT DATA
+31 ;
+32 ; REPORT IEN of the REPORT element
+33 ; NSPT Number of selected patients
+34 ;
+35 ; Return Values:
+36 ; <0 Error code
+37 ; 0 Ok
+38 ; >0 Number of non-fatal errors
+39 ;
STORE(REPORT,NSPT) ;
+1 ;med fill date
NEW RORFDT
+2 ;lab test type (GT, HCVQT,HCVQL)
NEW RORLBG
+3 ;lab value
NEW RORLVAL
+4 ;med name
NEW RORRX
+5 ;
NEW RORSTNAM
+6 NEW RORLDST
+7 NEW RORXDST
+8 NEW RORICN
+9 NEW RORFIB4
+10 NEW RORPACT
+11 NEW RORPCP
+12 ;parent iens
NEW RORBODY,PTAG
+13 NEW CNT,DATE,DFN,ECNT,IEN,LAST4,LTLST,NAME,NODE,PTCNT,PTLST,PTNAME,RC,RXLST,TMP,VAL,THIST,AGE,AGETYPE
+14 NEW GT,HCVQT,HCV,HCVQL,RORAPPT,RORCLIN
+15 SET (ECNT,RC)=0
SET (LTLST,PTLST,RXLST)=-1
+16 ;--- Create 'patients' table
+17 SET RORBODY=$$ADDVAL^RORTSK11(RORTSK,"PATIENTS",,REPORT)
+18 DO ADDATTR^RORTSK11(RORTSK,RORBODY,"TABLE","PATIENTS")
+19 SET (CNT,DFN,PTCNT)=0
+20 FOR
SET DFN=$ORDER(^TMP("RORX021",$JOB,"PAT",DFN))
if DFN'>0
QUIT
Begin DoDot:1
+21 SET TMP=$SELECT(NSPT>0:CNT/NSPT,1:"")
+22 SET RC=$$LOOP^RORTSK01(TMP)
if RC<0
QUIT
+23 SET CNT=CNT+1
SET NODE=$NAME(^TMP("RORX021",$JOB,"PAT",DFN))
+24 ;--- Patient's data
+25 SET TMP=$GET(@NODE)
+26 SET LAST4=$PIECE(TMP,U)
SET PTNAME=$PIECE(TMP,U,2)
SET THIST=$PIECE(TMP,U,3)
SET RORICN=$PIECE(TMP,U,4)
SET RORFIB4=$PIECE(TMP,U,5)
+27 SET RORPACT=$PIECE(TMP,U,6)
SET RORPCP=$PIECE(TMP,U,7)
SET AGE=$PIECE(TMP,U,8)
SET RORAPPT=$PIECE(TMP,U,9)
SET RORCLIN=$PIECE(TMP,U,10)
+28 ;--- get lab results
+29 SET RORLDST=$NAME(^TMP("RORX021",$JOB,"PAT",DFN,"LR"))
+30 SET RORXDST=$NAME(^TMP("RORX021",$JOB,"PAT",DFN,"RX"))
+31 ;--- Gets most recent result for HepC Qual, HepC Quant and GT
+32 ; HCVQT=date of most recent quanitative test^result
+33 ; HCVQL=date of most recent qualitative test^result
+34 ; GT=date of most recent GT test^result
+35 KILL HCVQT,HCVQL,GT
+36 FOR RORLBG="HCVQT","HCVQL","GT"
Begin DoDot:2
+37 SET NODE=RORLBG
SET @NODE="^"
+38 SET RORFDT=$ORDER(@RORLDST@(RORLBG,""))
+39 if RORFDT=""
QUIT
+40 SET RORLVAL=$GET(@RORLDST@(RORLBG,RORFDT))
+41 SET RORFDT=9999999-RORFDT
+42 ;strip time
SET RORFDT=RORFDT\1
+43 SET @NODE=(RORFDT)_U_RORLVAL
End DoDot:2
+44 ;--- get most recent registry med if experienced
+45 ;--- if more than one med give preference to INTERFERON
+46 SET RORFDT=$ORDER(@RORXDST@(""))
SET RORRX=""
+47 IF THIST="EXP"
Begin DoDot:2
+48 SET RORSTNAM=""
SET RORRX=""
+49 FOR
SET RORSTNAM=$ORDER(@RORXDST@(RORFDT,RORSTNAM))
if RORSTNAM=""
QUIT
Begin DoDot:3
+50 SET RORRX=$SELECT(RORRX="":RORSTNAM,RORRX["INTERFERON":RORRX,1:RORSTNAM)
End DoDot:3
+51 SET RORFDT=99999999-RORFDT
+52 SET RORFDT=RORFDT\1
End DoDot:2
+53 SET PTAG=$$ADDVAL^RORTSK11(RORTSK,"PATIENT",,RORBODY,,DFN)
+54 ;--- give preference to quant result over qual result
+55 SET HCV=$SELECT(+$GET(HCVQL)>+$GET(HCVQT):HCVQL,$GET(HCVQT):HCVQT,1:"")
+56 ;--- store
+57 DO ADDVAL^RORTSK11(RORTSK,"NAME",PTNAME,PTAG,1)
+58 DO ADDVAL^RORTSK11(RORTSK,"LAST4",LAST4,PTAG,2)
+59 SET AGETYPE=$$PARAM^RORTSK01("AGE_RANGE","TYPE")
IF AGETYPE'="ALL"
Begin DoDot:2
+60 DO ADDVAL^RORTSK11(RORTSK,AGETYPE,AGE,PTAG,1)
End DoDot:2
+61 ; I $G(RORDATA("LIST"))'["4" D ADDVAL^RORTSK11(RORTSK,"STATUS",THIST,PTAG,1)
+62 DO ADDVAL^RORTSK11(RORTSK,"HCV_DATE",$PIECE(HCV,U),PTAG,1)
+63 DO ADDVAL^RORTSK11(RORTSK,"HCV",$PIECE(HCV,U,2),PTAG,3)
+64 DO ADDVAL^RORTSK11(RORTSK,"GT",$PIECE(GT,U,2),PTAG,1)
+65 DO ADDVAL^RORTSK11(RORTSK,"FILL_DATE",RORFDT,PTAG,1)
+66 DO ADDVAL^RORTSK11(RORTSK,"FILL_MED",RORRX,PTAG,1)
+67 IF $GET(RORDATA("IDLST"))'=""
Begin DoDot:2
+68 if RORDATA("IDLST")["4"
SET TMP=$$ADDVAL^RORTSK11(RORTSK,"FIB4",RORFIB4,PTAG,3)
End DoDot:2
+69 IF $$PARAM^RORTSK01("PATIENTS","ICN")
DO ADDVAL^RORTSK11(RORTSK,"ICN",RORICN,PTAG,1)
+70 IF $$PARAM^RORTSK01("PATIENTS","PACT")
DO ADDVAL^RORTSK11(RORTSK,"PACT",RORPACT,PTAG,1)
+71 IF $$PARAM^RORTSK01("PATIENTS","PCP")
DO ADDVAL^RORTSK11(RORTSK,"PCP",RORPCP,PTAG,1)
+72 IF $$PARAM^RORTSK01("OPTIONS","FUT_APPT")
Begin DoDot:2
+73 DO ADDVAL^RORTSK11(RORTSK,"FUT_APPT",RORAPPT,PTAG,1)
+74 DO ADDVAL^RORTSK11(RORTSK,"FUT_CLIN",RORCLIN,PTAG,1)
End DoDot:2
+75 SET PTCNT=PTCNT+1
End DoDot:1
if RC<0
QUIT
+76 ;--- Inactivate the patient list tag if the list is empty
+77 if PTCNT'>0
DO UPDVAL^RORTSK11(RORTSK,PTLST,,,1)
+78 ;---
+79 QUIT ECNT