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

IBRFIWL.m

Go to the documentation of this file.
  1. IBRFIWL ;ALB/FA - IB LIST OF Request For Additional Information (RFAI) SCREEN ;18-JUL-2015
  1. ;;2.0;INTEGRATED BILLING;**547**;21-MAR-1994;Build 119
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EN ; Main entry point for RFAI Management Worklist
  1. ; Input: None
  1. ; Output: IBAUTHB - Selected Authorized Biller(s)
  1. ; IBSORT1 - Selected Primary Sort
  1. ; IBSORT2 - Selected Secondary Sort
  1. N IBAUTHB,IBDONE,IBSORT1,IBSORT2,VALMSG
  1. S IBDONE=$$SORT(0)
  1. I IBDONE D Q
  1. . W !!,*7,"Sort Criteria was not selected"
  1. . D PAUSE^VALM1
  1. . S VALMQUIT=1
  1. D EN^VALM("IBRFI 277 WL")
  1. Q
  1. ;
  1. HDR ;EP
  1. ; Build the listman template header information
  1. ; Input: IBAUTHB - Selected Authorized Biller(s)
  1. ; IBSORT1 - Selected Primary Sort
  1. ; IBSORT2 - Selected Secondary Sort
  1. ; Output: VALMHDR - array of header lines for the templaqte3
  1. ;N XX
  1. ;S XX="Primary Sort: "_$$SD^IBRFIWLA(IBSORT1)
  1. ;S:IBSORT2'="" XX=XX_" Secondary Sort: "_$$SD^IBRFIWLA(IBSORT2)
  1. ;S VALMHDR(1)=XX
  1. ;S:IBAUTHB VALMHDR(2)="Filter: Selected Authorized Billers"
  1. Q
  1. ;
  1. INIT ;EP
  1. ; Initialize variables and list array
  1. ; Input: IBAUTHB - Selected Authorized Biller(s)
  1. ; IBSORT1 - Selected Primary Sort
  1. ; IBSORT2 - Selected Secondary Sort
  1. ;K ^TMP("IBBIL",$J)
  1. K ^TMP("IBRFIWL",$J),^TMP("IBRFIWLS",$J),^TMP("IBRFIWLIX",$J)
  1. K VALMQUIT
  1. S VALMSG="|* Review in progress | Enter ?? for more actions|"
  1. D BLD(.IBAUTHB,IBSORT1,IBSORT2)
  1. Q
  1. ;
  1. SORT(REBUILD) ;EP
  1. ; Protocol action and also called initially from method EN
  1. ; Select/ReSelect Sort/Filter criteria
  1. ; Input: REBUILD - 1 to rebuild the worklist (set to 1 from Resort
  1. ; protocol option)
  1. ; Optional, defaults to 0
  1. ; IBAUTHB - Currently Selected Authorized Biller(s)
  1. ; IBSORT1 - Currently Selected Primary Sort
  1. ; IBSORT2 - Currently Selected Secondary Sort
  1. ; Output: IBAUTHB - Currently Selected Authorized Biller(s)
  1. ; IBSORT1 - Currently Selected Primary Sort
  1. ; IBSORT2 - Currently Selected Secondary Sort
  1. ; Returns: 1 - User exited without entering Sort/Filter criteria
  1. ; 0 Otherwise
  1. N IBDONE,IBSTOP,XX
  1. S:'$D(REBUILD) REBUILD=0
  1. D FULL^VALM1
  1. D AUTHB(.IBAUTHB,.IBDONE) ; Authorized Biller filter
  1. Q:IBDONE 1
  1. S IBSORT1=$$SORTSET^IBRFIWLA(1,"L","",.IBDONE) ; Primary Sort
  1. Q:IBDONE 1
  1. ;
  1. ; If the user selected Oldest or Newest Date Received as the primary sort,
  1. ; Do not ask for secondary sort
  1. ;I (IBSORT1="O")!(IBSORT1="N") S IBSORT2=0
  1. ;E D
  1. ;. S XX=$S(IBSORT1="O":"",1:"O") ; Default Secondary Sort
  1. ;. S IBSORT2=$$SORTSET^IBRFIWLA(2,XX,IBSORT1,.IBDONE) ; Secondary Sort
  1. S XX=$S(IBSORT1="O"!(IBSORT1="N"):"L",1:"O") ; Default Secondary Sort
  1. S IBSORT2=$$SORTSET^IBRFIWLA(2,XX,IBSORT1,.IBDONE) ; Secondary Sort
  1. I REBUILD D
  1. . D INIT ; Rebuild Sorted worklist
  1. . D HDR ; Redisplay Header
  1. . S VALMBCK="R"
  1. Q:IBDONE 1
  1. Q 0
  1. ;
  1. AUTHB(IBAUTHB,IBDONE) ; Set the Authorized Biller
  1. ; Input: None
  1. ; Output: IBAUTHB - 1 - Authorized Biller(s) selected, 0 otherwise
  1. ; IBDONE - 1 if user quit or timed out
  1. ;
  1. K ^TMP("IBBIL",$J)
  1. N FIRST,DIC,DTOUT,DONE,DUOUT,X,Y
  1. S FIRST=1,(DONE,IBDONE)=0,IBAUTHB=0
  1. F D Q:DONE
  1. . S DIC="^VA(200,",DIC(0)="AEQM"
  1. . S DIC("A")="Select "_$S(FIRST:"",1:" Another ")_"Authorizing Biller: "
  1. . S:FIRST DIC("A")=DIC("A")_"ALL// "
  1. . D ^DIC
  1. . K DIC
  1. . I Y<0 S DONE=1 Q
  1. . I $D(^TMP("IBBIL",$J,+Y)) D Q
  1. . . W !!,*7,"This biller has already been selected",!
  1. . S ^TMP("IBBIL",$J,+Y)="",FIRST=0,IBAUTHB=1
  1. I $D(DTOUT)!$D(DUOUT) S IBDONE=1 Q
  1. Q
  1. ;
  1. BLD(IBAUTHB,IBSORT1,IBSORT2) ; Build the listman template body
  1. ; Input: IBAUTHB - Authorized Biller filter
  1. ; IBSORT1 - Primary Sort
  1. ; IBSORT2 - Secondary Sort
  1. ; ^TMP("IBRFIWLS",$J,A,B)=RFAIEN - See GETMSGS
  1. ; ^TMP("IBRIFWLIX",$J,CNT)=RFAIEN^### - Message Selector Index
  1. N AA,CNT,PFILTER,RFAIEN,S1,S2,XX,SFILTER
  1. D GETMSGS(.IBAUTHB,IBSORT1,IBSORT2) ; Get Sorted/Filtered list
  1. S (CNT,VALMCNT)=0,(AA,PFILTER,S1)=""
  1. F D Q:AA=""
  1. . S AA=$O(^TMP("IBRFIWLS",$J,AA))
  1. . Q:AA=""
  1. . S S1=""
  1. . F D Q:S1=""
  1. . . S S1=$O(^TMP("IBRFIWLS",$J,AA,S1))
  1. . . Q:S1=""
  1. . . S S2=""
  1. . . F D Q:S2=""
  1. . . . S S2=$O(^TMP("IBRFIWLS",$J,AA,S1,S2))
  1. . . . Q:S2=""
  1. . . . S RFAIEN=""
  1. . . . F D Q:RFAIEN=""
  1. . . . . S RFAIEN=$O(^TMP("IBRFIWLS",$J,AA,S1,S2,RFAIEN))
  1. . . . . Q:RFAIEN=""
  1. . . . . S XX=$S(AA="~":S1,1:0)
  1. . . . . D BLDONEM(.VALMCNT,.CNT,RFAIEN,IBSORT1,.PFILTER,XX,S1,IBSORT2,S2,.SFILTER)
  1. Q
  1. ;
  1. GETMSGS(IBAUTHB,IBSORT1,IBSORT2) ; Retrieves the RFAI Messages filtering
  1. ; by Authorized Biller in sorted order
  1. ; Input: IBAUTHB - Authorized Biller filter
  1. ; IBSORT1 - Primary Sort
  1. ; IBSORT2 - Secondary Sort
  1. ; Output: ^TMP("IBRFIWLS",$J,A,B,C,IEN)=""- Where:
  1. ; A - ~ - Bad Record Indicator
  1. ; 1 - No Authorized Biller filter
  1. ; Authorized Biller Name
  1. ; B - When A=0 - Bad Data Type
  1. ; Otherwise Primary sort value
  1. ; C - When A=0 - 0
  1. ; Otherwise Secondary Sort value OR
  1. ; 0 if no secondary sort
  1. ; IEN - IEN of the RFAI Message
  1. N CNT,IBIFN,PIEN,RAUTHBV,RFAIEN,SKIP,STATUS,XX
  1. S CNT=0,RFAIEN=""
  1. F D Q:RFAIEN=""
  1. . S RFAIEN=$O(^IBA(368,"E",0,RFAIEN))
  1. . Q:RFAIEN=""
  1. . S SKIP=0
  1. . Q:$$BADREQ(RFAIEN) ; Quit if bad data error
  1. . S:'$G(IBAUTHB) RAUTHBV=1 ; No Authorized Biller filter or primary sort
  1. . S:IBSORT1="B" RAUTHBV=""
  1. . ;
  1. . ; Filtering on Authorized Biller
  1. . I $G(RAUTHBV)'=1 D Q:SKIP
  1. . . S RAUTHBV=$$GET1^DIQ(399,IBIFN,11,"I") ; IEN of Bill/Claims Authorizer
  1. . . ;
  1. . . ; If Request MRA bill, pull the MRA Requestor user instead
  1. . . I 'RAUTHBV D
  1. . . . S STATUS=$$GET1^DIQ(399,IBIFN,.13,"I") ; Status of Bill
  1. . . . Q:STATUS'=2 ; Not a Request MRA Bill
  1. . . . S RAUTHBV=$$GET1^DIQ(399,IBIFN,8,"I") ; MRA Requestor
  1. . . ;
  1. . . ; Not a selected Authorized Biller
  1. . . I $G(IBAUTHB),'$D(^TMP("IBBIL",$J,RAUTHBV)) S SKIP=1 Q
  1. . . S RAUTHBV=$$GET1^DIQ(200,RAUTHBV,.01) ; New Person NAME
  1. . ;
  1. . D GETONEM(RFAIEN,RAUTHBV,IBSORT1,IBSORT2,IBIFN) ; Get One Message
  1. Q
  1. ;
  1. BADREQ(RFAIEN) ; Marks a record that contains missing or incorrect
  1. ; critical data
  1. ; Input: RFAIEN - IEN of the record containing bad data
  1. ; ^TMP("IBRFIWLS",$J,-1,TYPE,0)=RFAIEN potentially
  1. ; Returns: 1 - Bad data found, 0 otherwise
  1. N PIEN,XX
  1. S IBIFN=$$GET1^DIQ(368,RFAIEN,111.01,"I") ; IEN for Bill/Claims file
  1. I IBIFN="" D Q 1
  1. . S ^TMP("IBRFIWLS",$J,"~",1,0,RFAIEN)=""
  1. ;
  1. S PIEN=$$GET1^DIQ(368,RFAIEN,109.01,"I") ; Patient IEN
  1. I PIEN="" D Q 1
  1. . S ^TMP("IBRFIWLS",$J,"~",2,0,RFAIEN)="" ; Patient Bill/Mismatch
  1. Q 0
  1. ;
  1. GETONEM(RFAIEN,RAUTHB,IBSORT1,IBSORT2,IBIFN) ; Get the Data for a specified
  1. ; RFAI Message
  1. ; Input: RFAIEN - IEN of the selected RFAI Message
  1. ; RAUTHB - Authorized Biller Name
  1. ; 1 - No Authorized Biller filter
  1. ; IBSORT1 - Primary Sort Code
  1. ; IBSORT2 - Secondary Sort Code
  1. ; IBIFN - IEN for the associated Bill/Claims record
  1. ; Output: ^TMP("IBRFIWLS",$J,A,B,C)=IEN - Where:
  1. ; A - 0 - Bad Record Indicator
  1. ; 1 - No Authorized Biller filter or it passed the filter
  1. ; B - When A=0 - Bad Data Type
  1. ; Otherwise Primary sort value
  1. ; C - When A=0 - 0
  1. ; Otherwise Secondary Sort value OR
  1. ; 0 if no secondary sort
  1. ; IEN - IEN of the RFAI Message
  1. N FIELDP,FIELDS,RDATE
  1. S (FIELDP,FIELDS)=""
  1. ;
  1. ; Determine the Primary Sort field
  1. S:(IBSORT1="N")!(IBSORT1="O") FIELDP=100.02 ; Request date/tinme
  1. I FIELDP="",((IBSORT1="E")!(IBSORT1="D")) D ; Response Date
  1. . S FIELDP=112.01
  1. I FIELDP="",IBSORT1="I" S FIELDP=101.01 ; Insurance Company Name
  1. I FIELDP="",IBSORT1="P" S FIELDP=109.01 ; Patient Name
  1. I FIELDP="",IBSORT1="L" S FIELDP=122.03 ; LOINC Code
  1. S:FIELDP="" FIELDP=-1 ; Authorized Biller
  1. ;
  1. ; Determine the Secondary Sort field
  1. I IBSORT2="" S FIELDS=-2 ; No Secondary Sort
  1. S:(IBSORT2="N")!(IBSORT2="O") FIELDS=100.03 ; Transmission Date
  1. I FIELDS="",((IBSORT2="E")!(IBSORT2="D")) D ; Request Due Date
  1. . S FIELDS=112.01
  1. I FIELDS="",IBSORT2="I" S FIELDS=101.01 ; Insurance Company Name
  1. I FIELDS="",IBSORT2="P" S FIELDS=109.01 ; Patient Name
  1. I FIELDS="",IBSORT2="L" S FIELDS=122.03 ; LOINC Code
  1. S:FIELDS="" FIELDS=-1 ; Authorized Biller
  1. ;
  1. ; Get the sort values
  1. ;S RDATE=$S(IBSORT1="N":1,IBSORT1="E":1,1:2)
  1. S RDATE=$S(IBSORT1="O":1,IBSORT1="D":1,1:2)
  1. S FIELDP=$S(IBSORT1="B":RAUTHB,1:$$GETFVAL(FIELDP,RFAIEN,RAUTHB,RDATE)) ; Get Primary sort value
  1. I ".D.O.N.E."[("."_IBSORT1_".") S FIELDP=$P(FIELDP,".") ; don't need times for sort
  1. ;S RDATE=$S(IBSORT2="N":1,IBSORT2="E":1,1:2)
  1. S RDATE=$S(IBSORT2="O":1,IBSORT2="D":1,1:2)
  1. S FIELDS=$$GETFVAL(FIELDS,RFAIEN,RAUTHB,RDATE) ; Get Secondary sort value
  1. I ".D.O.N.E."[("."_IBSORT2_".") S FIELDS=$P(FIELDS,".")
  1. I IBSORT2=""!(IBSORT2=0) S FIELDS=0 ; no secondary, avoild subscript error
  1. ;
  1. ; Finally set the sorted record into the list
  1. S ^TMP("IBRFIWLS",$J,$S(RAUTHB="~":"~",1:1),FIELDP,FIELDS,RFAIEN)=""
  1. Q
  1. ;
  1. GETFVAL(FIELD,RFAIEN,RAUTHB,RDATE,RETNA) ;EP
  1. ; Returns the external value of the specified field
  1. ; Input: FIELD - # of the field to be retrieved
  1. ; NOTE: if this number is >100 AND no value is found, then
  1. ; the value of FIELD-100 will be returned which is
  1. ; the raw value received from the HL7 message.
  1. ; The following are 'special' FIELD values:
  1. ; -1 - RAUTHB variable is used
  1. ; -2 - 0 is returned
  1. ; -3 - Last 4 digits of the SSN are returned
  1. ; -4 - Current balance is returned
  1. ; FIELD
  1. ; RFAIEN - IEN of the RFAI Message (file 368) to retrieve values from
  1. ; RAUTHB - IEN of the Authorized Billed (special case)
  1. ; Optional, defaults to ""
  1. ; RDATE - 1 - Return negative internal date (used for sorting)
  1. ; 2 - Return internal date (used for sorting)
  1. ; 3 - Force Date conversion to DD/MM/YY
  1. ; 0 - Return external date (DD/MM/YY)
  1. ; Optional, defaults to 0
  1. ; RETNA - 2 - Return null if field does not contain a value
  1. ; 1 - Return '*NA*' if field does not contain a value
  1. ; 0 - Return '0'
  1. ; Optional, defaults to 0
  1. ; Returns: External Field value
  1. N VAL,VAL2,XX,YY
  1. S:'$D(RAUTHB) RAUTHB=0
  1. S:'$D(RDATE) RDATE=0
  1. S:'$D(RETNA) RETNA=0
  1. I $F(FIELD,",") D Q VAL
  1. . N FILE
  1. . S FILE=$P(FIELD,","),FIELD=$P(FIELD,",",2)
  1. . S VAL=$$GET1^DIQ(FILE,RFAIEN,FIELD)
  1. . I RDATE=3,VAL]"" S VAL2=$$GET1^DIQ(FILE,RFAIEN,FIELD,"I") S:VAL2]"" VAL=$$FMTE^XLFDT(VAL2,"2DZ")
  1. . I VAL="" D ; Return raw value
  1. .. I FILE=368.0113 S FILE=368.013
  1. .. I FILE=368.0121 S FILE=368.021
  1. .. I FILE=368.12199 S FILE=368.2199
  1. .. S VAL=$$GET1^DIQ(FILE,RFAIEN,FIELD)
  1. .. I VAL="" S VAL=$S(RETNA=1:"*NA*",RETNA=2:"",1:0)
  1. .. Q
  1. . Q
  1. I FIELD=-1 Q $$GET1^DIQ(200,RAUTHB,.01) ; Authorized Biller Name
  1. I FIELD=-2 Q 0
  1. I FIELD=-3 D Q VAL ; Last 4 digits of SSN
  1. . S VAL=$$GET1^DIQ(368,RFAIEN,109.01,"I") ; Patient Pointer
  1. . I VAL="" S VAL=$S(RETNA=1:"*NA*",RETNA=2:"",1:0) Q
  1. . S VAL=$$GET1^DIQ(2,VAL,.09) ; SSN number
  1. . I VAL="" S VAL=$S(RETNA=1:"*NA*",RETNA=2:"",1:0) Q
  1. . S VAL=$E(VAL,6,9)
  1. I FIELD=-4 D Q VAL ; Current Balance
  1. . S VAL=$$GET1^DIQ(368,RFAIEN,111.01,"I") ; Bill pointer
  1. . I VAL="" S VAL=$S(RETNA=1:"*NA*",RETNA=2:"",1:0) Q
  1. . S XX=$$GET1^DIQ(399,VAL,201,"I") ; Current Balance
  1. . S YY=$$GET1^DIQ(399,VAL,202,"I") ; Offset
  1. . S VAL=XX-YY
  1. ;
  1. S VAL=$$GET1^DIQ(368,RFAIEN,FIELD,"E") ; Get external value
  1. I FIELD=122.03,VAL'="" S VAL=VAL_": "_$$GET1^DIQ(368,RFAIEN,FIELD_":1") ; add LOINC code description
  1. I FIELD=122.03,VAL="" S VAL=$$GET1^DIQ(368,RFAIEN,22.03,"E") ; for LOINC codes not in LAB LOINC file
  1. I ((FIELD=100.02)!(FIELD=100.03)!(FIELD=.03)!(FIELD=122.04)!(FIELD=113.03)!(FIELD=112.01)!(FIELD=114.03)!(FIELD=114.04)),VAL'="" D Q VAL
  1. . S VAL=$$GET1^DIQ(368,RFAIEN,FIELD,"I")
  1. . Q:RDATE=2 ; Return internal date
  1. . I RDATE=1 S VAL=VAL*-1 Q ; Return negative internal date
  1. . S VAL=$$FMTE^XLFDT(VAL,"2DZ") ; Return external date
  1. I VAL'="" Q VAL
  1. I VAL="",FIELD>100 D ; Return raw value
  1. . S FIELD=FIELD-100
  1. . S VAL=$$GET1^DIQ(368,RFAIEN,FIELD)
  1. S:VAL="" VAL=$S(RETNA=1:"*NA*",RETNA=2:"",1:0)
  1. Q VAL
  1. ;
  1. BLDONEM(VALMCNT,MSGCNT,RFAIEN,IBSORT1,PFILTER,BTYPE,PSORT,IBSORT2,SSORT,SFILTER) ; Build one Message into
  1. ; the listman display
  1. ; Input: VALMCNT - Current Line of the display being
  1. ; (re)built
  1. ; MSGCNT - Current Message Number
  1. ; RFAIEN - IEN of the message to be displayed
  1. ; IBSORT1 - Primary Sort Code
  1. ; PFILTER - Current Filter line value
  1. ; BTYPE - 0 - Not a bad record
  1. ; Otherwise, type of bad record (1-2)
  1. ; PSORT - External value of primary sort data
  1. ; IBSORT2 - Secondary Sort Code
  1. ; SSORT - External value of secondary sort data
  1. ;
  1. ; Output: VALMCNT - Updated Line of the display being
  1. ; MSGCNT - Updated Message Number
  1. ; PFILTER - Update Filter line Value
  1. ; ^TMP("IBRIFWLIX",$J,CNT) - Message Selector Index
  1. N LINE,VAL,XX
  1. I BTYPE D ; Display Bad Record Type
  1. . Q:PFILTER=BTYPE ; Same as previous line
  1. . S VALMCNT=VALMCNT+1,PFILTER=BTYPE
  1. . I BTYPE=1 D
  1. . . S LINE="Messages with an invalid Bill Number"
  1. . I BTYPE=2 D
  1. . . S LINE="Messages with Patient/Bill Mismatch"
  1. . D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. I 'BTYPE D
  1. . I ".N.O.E.D."[("."_IBSORT1_".") S PSORT=$TR(PSORT,"-"),PSORT=$$FMTE^XLFDT(PSORT,"2DZ")
  1. . S LINE=$S(IBSORT1="I":"Insurance Company Name: ",IBSORT1="P":"Patient Name: ",IBSORT1="B":"Authorizing Biller: ",IBSORT1="L":"LOINC Code: ",IBSORT1="E"!(IBSORT1="D"):"Date Due: ",1:"Date Received: ")_PSORT
  1. . I PFILTER'=LINE D
  1. . . S VALMCNT=VALMCNT+1,PFILTER=LINE
  1. . . D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. . . S SFILTER=""
  1. . I $G(IBSORT2)]"",$G(IBSORT2)'=0 D
  1. . . I ".N.O.E.D."[("."_IBSORT2_".") S SSORT=$TR(SSORT,"-"),SSORT=$$FMTE^XLFDT(SSORT,"2DZ")
  1. . . S LINE=" "_$S(IBSORT2="I":"Insurance Company Name: ",IBSORT2="P":"Patient Name: ",IBSORT2="B":"Authorizing Biller: ",IBSORT2="L":"LOINC Code: ",IBSORT2="E"!(IBSORT2="D"):"Date Due: ",1:"Date Received: ")_SSORT
  1. . . I SFILTER'=LINE D
  1. . . . S VALMCNT=VALMCNT+1,SFILTER=LINE
  1. . . . D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S CNT=CNT+1,VALMCNT=VALMCNT+1
  1. S ^TMP("IBRFIWLIX",$J,CNT)=RFAIEN
  1. S LINE=$$SETL("",MSGCNT,"",1,4) ; Message #
  1. S VAL=$$GETFVAL(111.01,RFAIEN,"",0,2) ; External Bill #
  1. S XX=$$GET1^DIQ(368,RFAIEN,200.04,"I") ; Review Status
  1. S:XX VAL=VAL_"*"
  1. S LINE=$$SETL(LINE,VAL,"",5,8)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S VAL=$$GETFVAL(101.01,RFAIEN,"",0,2) ; Ins. Co. Name
  1. S LINE=$$SETL(LINE,VAL,"",15,16)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S VAL=$$GETFVAL(109.01,RFAIEN,"",0,2) ; Patient Name
  1. S LINE=$$SETL(LINE,VAL,"",33,20)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S VAL=$$GETFVAL(-3,RFAIEN,"",0,2) ; SSN
  1. S LINE=$$SETL(LINE,VAL,"",56,4)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S VAL=$$GETFVAL(114.03,RFAIEN,"",2,2) ; Service Date
  1. I VAL'="" S VAL=$$FMTE^XLFDT(VAL,"2Z")
  1. S LINE=$$SETL(LINE,VAL,"",61,8)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. S VAL=$$GETFVAL(-4,RFAIEN,"",0,2) ; Current Balance
  1. S VAL=$J("$"_$FN(VAL,"",2),9)
  1. S LINE=$$SETL(LINE,VAL,"",71,9)
  1. D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. ;
  1. S ^TMP("IBRFIWLIX",$J,CNT)=RFAIEN_U_VALMCNT ; Selection Index - RFAIEN is pointer to file 368, VALMCNT points to detailed entry in worklist ^TMP
  1. ;I IBSORT1'="L" D
  1. ;. S VALMCNT=VALMCNT+1
  1. ;. S VAL=$$GETFVAL(122.03,RFAIEN,"",0,2) ; LOINC Code + Description
  1. ;. I VAL'="" D
  1. ;. . S LINE=$$SETL("",VAL,"",6,80)
  1. ;. . D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. ;
  1. S VALMCNT=VALMCNT+1
  1. S VAL=$$GETFVAL(122.03,RFAIEN,"",0,2) ; LOINC Code + Description
  1. I VAL'="" D
  1. . S LINE=$$SETL("",VAL,"",5,80)
  1. . D SET^VALM10(VALMCNT,LINE,VALMCNT)
  1. Q
  1. ;
  1. SETL(LINE,DATA,LABEL,COL,LNG) ; Creates a line of data to be set into the body
  1. ; of the worklist
  1. ; Input: LINE - Current line being created
  1. ; DATA - Information to be added to the end of the current line
  1. ; LABEL - Label to describe the information being added
  1. ; COL - Column position in line to add information add
  1. ; LNG - Maximum length of data information to include on the line
  1. ; Returns: Line updated with added information
  1. S LINE=LINE_$J("",(COL-$L(LABEL)-$L(LINE)))_LABEL_$E(DATA,1,LNG)
  1. Q LINE
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. S VALMSG="* Indicates review in progress"
  1. Q
  1. ;
  1. SMSG ;EP
  1. ; Protocol action to select an RFI message to be worked
  1. ; Input: ^TMP("IBRFIWLIX",$J,CNT)=RFAIEN
  1. N RFAIEN,RFAIDET,RFAIDHDR
  1. S VALMBCK="R"
  1. D FULL^VALM1
  1. S RFAIEN=$$SELMSG^IBRFIWLA("Select Message")
  1. I RFAIEN="" S VALMSG="|* Review in progress | Enter ?? for more actions|" Q
  1. S (RFAIDET,RFAIDHDR)=""
  1. I $P(RFAIEN,U,2) D
  1. .S RFAIDET=$P($G(RFAIEN),U,2)
  1. .I $G(RFAIDET) S RFAIDET=$E($G(^TMP("IBRFIWL",$J,+$G(RFAIDET),0)),6,999)
  1. .S RFAIDHDR=$E($G(VALMCAP),6,999)
  1. S RFAIEN=$P(RFAIEN,U)
  1. ;
  1. D EN^IBRFIWL1(RFAIEN,RFAIDET,RFAIDHDR) ; Show the detail of the message
  1. D INIT ; Rebuild the list
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K IBAUTH,IBSORT1,IBSORT2
  1. K ^TMP("IBBIL",$J),^TMP("IBRFIWL",$J),^TMP("IBRFIWLS",$J),^TMP("IBRFIWLIX",$J)
  1. D CLEAN^VALM10
  1. Q