- IBTRH2 ;ALB/YMG - HCSR worklist expand entry ;18-JUN-2014
- ;;2.0;INTEGRATED BILLING;**517**;21-MAR-94;Build 240
- ;;Per VA Directive 6402, this routine should not be modified.
- ;
- Q
- ;
- EN ; main entry point for IBT HCSR ENTRY
- N DFN,DLINE,EVENTDT,IEN312,IEN36,INSNODE0,NODE0,IBTRNM,IBTRENT
- S VALMBCK="R"
- S IBTRNM="IBTRH2",IBTRENT=0
- S IBTRIEN=+$$SELEVENT^IBTRH1(0,"Select entry",.DLINE) ; select entry to expand
- I IBTRIEN'>0 Q
- ; try to lock the entry
- I '$$LOCKEV^IBTRH1(IBTRIEN) D LOCKERR^IBTRH2A S VALMSG="?Await #In-Prog -RespErr !Unable +Pend *NextRev" D MSG^VALM10(VALMSG) Q
- D EN^VALM("IBT HCSR ENTRY")
- ; unlock entry
- D UNLOCKEV^IBTRH1(IBTRIEN)
- Q
- ;
- EN2(IBTRNM,IBTRIEN) ; Secondary entry point.
- ; IBTRNM is the calling routine name.
- ; IBTRIEN is the internal id for ^IBT(356.22)
- I $G(IBTRNM)="" S VALMQUIT="" Q
- I '$G(IBTRIEN) S VALMQUIT="" Q
- N DFN,EVENTDT,IEN312,INSNODE0,NODE0
- D INIT
- Q
- ;
- HDR ; header code
- N VADM,VA,VAERR,Z
- S Z=""
- I +$G(DFN) D DEM^VADPT S Z=$E(VADM(1),1,28),Z=Z_$J("",35-$L(Z))_$P(VADM(2),U,2)_" DOB: "_$P(VADM(3),U,2)_" AGE: "_VADM(4)
- S VALMHDR(1)=Z
- Q
- ;
- INIT ; init variables and list array
- K ^TMP(IBTRNM,$J)
- I '$G(IBTRIEN) S VALMQUIT="" Q
- S NODE0=$G(^IBT(356.22,IBTRIEN,0))
- S DFN=+$P(NODE0,U,2)
- S IEN312=+$P(NODE0,U,3)
- S INSNODE0="" S:IEN312>0 INSNODE0=$G(^DPT(DFN,.312,IEN312,0)) ; 0-node in file 2.312
- S IEN36=+$P(INSNODE0,U)
- S EVENTDT=$P(NODE0,U,7)
- D BLD
- Q
- ;
- HELP ; help code
- D FULL^VALM1
- W !!,"This screen displays an expanded view of a Healthcare Services Review Worklist entry."
- W !!,"The actions allow editing of data and transmission of HCSR inquiry."
- D PAUSE^VALM1 S VALMBCK="R"
- Q
- ;
- EXIT ; exit code
- K ^TMP(IBTRNM,$J)
- D CLEAR^VALM1,CLEAN^VALM10
- Q
- ;
- BLD ; build screen array
- N AAADATA,ADDR,CMTDATA,DATA36,DATA3553,IBL,IBLINE,IBY,IEN3553,IENS,PNDDATA,RESPONSE,STATUS,TMPARY,Z,Z0,Z1,Z2
- S IEN3553=+$P(INSNODE0,U,18),STATUS=$$STATUS(IBTRIEN),RESPONSE=+$P($G(^IBT(356.22,IBTRIEN,0)),U,14)
- I $P($G(^IBT(356.22,IBTRIEN,0)),U,20)=2 S RESPONSE=IBTRIEN
- S VALMCNT=0
- ;
- S IENS=IEN36_","
- D GETS^DIQ(36,IENS,".01;1;.131:.133","EI","DATA36")
- D SET(" ") S IBY=$J("",26)_"Insurance Company Information" D SET(IBY,"B") S IBLINE=""
- S IBL="Name: ",IBY=$G(DATA36(36,IENS,.01,"E")),IBLINE=$$SETL("",IBY,IBL,10,30)
- S IBL="Reimburse?: ",IBY=$G(DATA36(36,IENS,1,"E")),IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- D SET(IBLINE) S IBLINE=""
- S IBL="Phone: ",IBY=$G(DATA36(36,IENS,.131,"E")),IBLINE=$$SETL(IBLINE,IBY,IBL,10,20)
- S IBL="Billing Phone: ",IBY=$G(DATA36(36,IENS,.132,"E")),IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- D SET(IBLINE) S IBLINE=""
- S IBL="Precert Phone: ",IBY=$G(DATA36(36,IENS,.133,"E")),IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- D SET(IBLINE) S IBLINE=""
- D ADDR^IBTRH2A(36,IEN36,.111,.112,.113,.114,.115,.116,.ADDR)
- S IBL="Address: ",IBY=ADDR(1),IBLINE=$$SETL(IBLINE,IBY,IBL,10,69)
- D SET(IBLINE) S IBLINE=""
- F Z=2:1:9 S IBL="",IBY=$G(ADDR(Z)) Q:IBY="" S IBLINE=$$SETL(IBLINE,IBY,IBL,10,69) D SET(IBLINE) S IBLINE=""
- ;
- S IENS=IEN3553_","
- D GETS^DIQ(355.3,IENS,".02:.09;.12;6.02;6.03;11",,"DATA3553")
- D SET(" ") S IBY=$J("",29)_"Group/Plan Information" D SET(IBY,"B") S IBLINE=""
- S IBL="Type Of Plan: ",IBY=$G(DATA3553(355.3,IENS,.09)),IBLINE=$$SETL("",IBY,IBL,16,40)
- S IBL="Require UR: ",IBY=$G(DATA3553(355.3,IENS,.05)),IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- D SET(IBLINE) S IBLINE=""
- S IBL="Group?: ",IBY=$G(DATA3553(355.3,IENS,.02)),IBLINE=$$SETL("",IBY,IBL,16,3)
- S IBL="Require Amb Cert: ",IBY=$G(DATA3553(355.3,IENS,.12)),IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- D SET(IBLINE) S IBLINE=""
- S IBL="Group Name: ",IBY=$G(DATA3553(355.3,IENS,.03)),IBLINE=$$SETL("",IBY,IBL,16,20)
- S IBL="Require Pre-Cert: ",IBY=$G(DATA3553(355.3,IENS,.06)),IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- D SET(IBLINE) S IBLINE=""
- S IBL="Group Number: ",IBY=$G(DATA3553(355.3,IENS,.04)),IBLINE=$$SETL("",IBY,IBL,16,17)
- S IBL="Exclude Pre-Cond: ",IBY=$G(DATA3553(355.3,IENS,.07)),IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- D SET(IBLINE) S IBLINE=""
- S IBL="BIN: ",IBY=$G(DATA3553(355.3,IENS,6.02)),IBLINE=$$SETL("",IBY,IBL,16,10)
- S IBL="Benefits Assignable: ",IBY=$G(DATA3553(355.3,IENS,.08)),IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- D SET(IBLINE) S IBLINE=""
- S IBL="PCN: ",IBY=$G(DATA3553(355.3,IENS,6.03)),IBLINE=$$SETL("",IBY,IBL,16,20)
- D SET(IBLINE) S IBLINE=""
- D SET(" ")
- S IBL="Plan Comments: ",IBY="",IBLINE=$$SETL("",IBY,IBL,10,69)
- D SET(IBLINE) S IBLINE=""
- S IBL="",Z0=0 F S Z0=$O(DATA3553(355.3,IENS,11,Z0)) Q:'Z0 D
- .S IBY=$G(DATA3553(355.3,IENS,11,Z0)),IBLINE=$$SETL("",IBY,IBL,10,69) D SET(IBLINE) S IBLINE=""
- .Q
- D SET(" ") S IBY=$J("",26)_"Policy/Subscriber Information" D SET(IBY,"B") S IBLINE=""
- S IBL="Insured's Name: ",IBY=$P(INSNODE0,U,17),IBLINE=$$SETL("",IBY,IBL,18,30)
- S IBL="Effective: ",IBY=$$FMTE^XLFDT($P(INSNODE0,U,8),5),IBLINE=$$SETL(IBLINE,IBY,IBL,62,10)
- D SET(IBLINE) S IBLINE=""
- S IBL="Subscriber Id: ",IBY=$P(INSNODE0,U,2),IBLINE=$$SETL("",IBY,IBL,18,20)
- S IBL="Expiration: ",IBY=$$FMTE^XLFDT($P(INSNODE0,U,4),5),IBLINE=$$SETL(IBLINE,IBY,IBL,62,13)
- D SET(IBLINE) S IBLINE=""
- S IBL="Relationship: ",IBY=$$EXPAND^IBTRE(2.312,4.03,$P($G(^DPT(DFN,.312,IEN312,4)),U,3)),IBLINE=$$SETL("",IBY,IBL,18,16)
- S IBL="Coord of Benefits: ",IBY=$$EXPAND^IBTRE(2.312,.2,$P(INSNODE0,U,20)),IBLINE=$$SETL(IBLINE,IBY,IBL,62,16)
- D SET(IBLINE) S IBLINE=""
- S IBL="Insured's DOB: ",IBY=$$FMTE^XLFDT($P($G(^DPT(DFN,.312,IEN312,3)),U),5),IBLINE=$$SETL("",IBY,IBL,18,10)
- D SET(IBLINE) S IBLINE=""
- S IBL="Employer Sponsored Group Health Plan?: ",IBY=$$EXPAND^IBTRE(2.312,2.1,$P($G(^DPT(DFN,.312,IEN312,2)),U))
- S IBLINE=$$SETL("",IBY,IBL,40,3)
- D SET(IBLINE) S IBLINE=""
- D SET(" ") S IBY=$J("",23)_"User Added Comments for This Entry" D SET(IBY,"B") S IBLINE=""
- S IENS=IBTRIEN_"," D GETS^DIQ(356.22,IENS,"1*","IE","CMTDATA")
- S Z0="" F S Z0=$O(CMTDATA(356.221,Z0)) Q:Z0="" D
- .I $G(CMTDATA(356.221,Z0,.01,"I"))="" Q
- .S IBL="User's Name: ",IBY=$G(CMTDATA(356.221,Z0,.02,"E")),IBLINE=$$SETL("",IBY,IBL,10,30)
- .S IBL="Date Comment Entered: ",IBY=$$FMTE^XLFDT(CMTDATA(356.221,Z0,.01,"I"),5),IBLINE=$$SETL(IBLINE,IBY,IBL,60,19)
- .D SET(IBLINE) S IBLINE=""
- .S IBL="Comment: ",IBY="",IBLINE=$$SETL("",IBY,IBL,10,69) D SET(IBLINE) S IBLINE=""
- .K TMPARY D FSTRNG^IBJU1($$WP2STR^IBTRHLO2(356.221,.03,Z0),75,.TMPARY)
- .S IBL=" " F Z1=1:1:TMPARY S IBY=TMPARY(Z1),IBLINE=$$SETL("",IBY,IBL,1,75) D SET(IBLINE) S IBLINE=""
- .D SET(" ")
- .Q
- ; STATUS = "03" - unable to send, STATUS = "04" - negative response received
- I STATUS="03"!(STATUS="04") D
- .I STATUS="04",RESPONSE'>0 Q ; no response pointer
- .S IENS=$S(STATUS="04":RESPONSE,1:IBTRIEN)_","
- .D SET(" ")
- .S IBY=$S(STATUS="03":$J("",16)_"Unable to send request for the following reasons",1:$J("",26)_"278 response error condition")
- .D SET(IBY,"B") S IBLINE=""
- .D GETS^DIQ(356.22,IENS,"101*","IE","AAADATA")
- .S Z0="" F S Z0=$O(AAADATA(356.22101,Z0)) Q:Z0="" D
- ..I STATUS="04" D
- ...S Z1=+$G(AAADATA(356.22101,Z0,.02,"I")) I Z1>0 D
- ....S IBL="Error Source: ",IBY=$P($G(^IBE(365.027,Z1,0)),U,2)_" (Loop "_$G(AAADATA(356.22101,Z0,.02,"E"))_")"
- ....S IBLINE=$$SETL("",IBY,IBL,10,69) D SET(IBLINE) S IBLINE=""
- ...S IBL="Reject Reason Code: ",IBY=$G(AAADATA(356.22101,Z0,.04,"E"))
- ...I IBY'="" S IBLINE=$$SETL("",IBY,IBL,20,59) D SET(IBLINE) S IBLINE=""
- ...S Z1=+$G(AAADATA(356.22101,Z0,.04,"I"))
- ...I Z1>0 S IBL="Reject Reason Text: ",IBY=$P($G(^IBE(365.017,Z1,0)),U,2),IBLINE=$$SETL("",IBY,IBL,20,59) D SET(IBLINE) S IBLINE=""
- ...S IBL="Action Code: ",IBY=$G(AAADATA(356.22101,Z0,.05,"E"))
- ...I IBY'="" S IBLINE=$$SETL("",IBY,IBL,20,59) D SET(IBLINE) S IBLINE=""
- ...S Z1=+$G(AAADATA(356.22101,Z0,.05,"I"))
- ...I Z1>0 S IBL="Action Text: ",IBY=$P($G(^IBE(365.018,Z1,0)),U,2),IBLINE=$$SETL("",IBY,IBL,20,59) D SET(IBLINE) S IBLINE=""
- ...Q
- ..S Z1=$G(AAADATA(356.22101,Z0,1,"E")) I Z1'="" D
- ...;D SET(" ")
- ...S IBL=$S(STATUS="04":"Error message:",1:""),IBY="",IBLINE=$$SETL("",IBY,IBL,10,69) D SET(IBLINE) S IBLINE=""
- ...K TMPARY D FSTRNG^IBJU1(Z1,75,.TMPARY)
- ...S IBL="" F Z2=1:1:TMPARY S IBY=TMPARY(Z2),IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE)
- ...Q
- ..D SET(" ")
- ..Q
- .Q
- ; "Pending" response received
- I RESPONSE>0 D
- .S IENS=RESPONSE_","
- .D GETS^DIQ(356.22,IENS,"11*;12;17.02;103.01;103.03","IE","PNDDATA")
- .I $G(PNDDATA(356.22,IENS,103.01,"E"))'="A4" Q ; only display this section if Certification Action Code = A4
- .D SET(" ") S IBY=$J("",23)_"278 Response with 'Pending' status" D SET(IBY,"B") S IBLINE=""
- .D SET(" ")
- .S IBL="Admin Reference #: ",IBY=$G(PNDDATA(356.22,IENS,17.02,"E")),IBLINE=$$SETL("",IBY,IBL,10,69)
- .D SET(IBLINE) S IBLINE=""
- .S IBL="Review Decision Reason Code: ",IBY=$G(PNDDATA(356.22,IENS,103.03,"E")),IBLINE=$$SETL("",IBY,IBL,10,69)
- .D SET(IBLINE) S IBLINE=""
- .S IBL="Review Decision Reason Text: ",IBY=$P($G(^IBT(356.021,+$G(PNDDATA(356.22,IENS,103.03,"I")),0)),U,2)
- .S IBLINE=$$SETL("",IBY,IBL,10,69)
- .D SET(IBLINE) S IBLINE=""
- .I $D(PNDDATA(356.22,IENS,12)) D
- ..S IBL="Message: ",IBY="",IBLINE=$$SETL("",IBY,IBL,1,79)
- ..D SET(IBLINE) S IBLINE="",IBL=""
- ..S Z0=0 F S Z0=$O(PNDDATA(356.22,IENS,12,Z0)) Q:Z0'=+Z0 D
- ...S Z1=$G(PNDDATA(356.22,IENS,12,Z0))
- ...K TMPARY D FSTRNG^IBJU1(Z1,75,.TMPARY)
- ...S IBL="" F Z2=1:1:TMPARY S IBY=TMPARY(Z2),IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE)
- ...S IBLINE=""
- ...Q
- ..Q
- .I $D(PNDDATA(356.2211)) D
- ..D SET(" ")
- ..S IBL="Reports: ",IBY="",IBLINE=$$SETL("",IBY,IBL,40,9)
- ..D SET(IBLINE) S IBLINE=""
- ..D SET(" ")
- ..S Z="" F S Z=$O(PNDDATA(356.2211,Z)) Q:Z="" D
- ...S IBL="Attachment Report Type Code: ",IBY=$P($G(^IBT(356.018,+$G(PNDDATA(356.2211,Z,.01,"I")),0)),U)
- ...S IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE) S IBLINE=""
- ...S IBL="Attachment Report Type Text: ",IBY=$G(PNDDATA(356.2211,Z,.01,"E"))
- ...S IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE) S IBLINE=""
- ...S IBL="Report Transmission Code: ",IBY=$G(PNDDATA(356.2211,Z,.02,"I"))
- ...S IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE) S IBLINE=""
- ...S IBL="Report Transmission Text: ",IBY=$G(PNDDATA(356.2211,Z,.02,"E"))
- ...S IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE) S IBLINE=""
- ...S IBL="Report Control #: ",IBY=$G(PNDDATA(356.2211,Z,.03,"E"))
- ...S IBLINE=$$SETL("",IBY,IBL,1,79) D SET(IBLINE) S IBLINE=""
- ...S IBL="Attachment Description: ",IBY="",IBLINE=$$SETL("",IBY,IBL,1,79)
- ...D SET(IBLINE) S IBLINE=""
- ...S IBL="",IBY=$G(PNDDATA(356.2211,Z,.04,"E")),IBLINE=$$SETL("",IBY,IBL,1,79)
- ...D SET(IBLINE) S IBLINE=""
- ...D SET(" ")
- ...Q
- ..Q
- .Q
- S Z=+$O(^TMP(IBTRNM,$J,""),-1) I Z,$G(^TMP(IBTRNM,$J,Z,0))=" " K ^TMP(IBTRNM,$J,Z) S VALMCNT=VALMCNT-1
- Q
- ;
- SETL(LINE,DATA,LABEL,COL,LNG) ;
- S LINE=LINE_$J("",(COL-$L(LABEL)-$L(LINE)))_LABEL_$E(DATA,1,LNG)
- Q LINE
- ;
- SET(LINE,SPEC) ;
- S VALMCNT=VALMCNT+1
- S ^TMP(IBTRNM,$J,VALMCNT,0)=LINE
- I $G(SPEC)="B" D CNTRL^VALM10(VALMCNT,1,80,IOINHI,IOINORM)
- Q
- ;
- ADDCMT(FROMWL) ; add entry comment
- ; called from action protocol IBT HCSR ADD COMMENT
- ; Input: FROMWL - Optional, only sent when adding a comment to entry
- ; directly from the main worklist.
- ; Defaults to 0
- N CMTIEN,DA,DD,DIC,DIE,DIK,DINUM,DLAYGO,DO,DR,DTOUT,DUOUT,DIRUT,X,Y
- S:'$D(FROMWL) FROMWL=0
- S VALMBCK="R"
- ; create new entry in the comments multiple (356.221)
- S DA(1)=IBTRIEN,DLAYGO=356.221,DIC(0)="L",DIC="^IBT(356.22,"_DA(1)_",1,",X=$$NOW^XLFDT()
- D FILE^DICN K DD,DO S (CMTIEN,DA)=+Y I DA<1 Q
- ; prompt for the comment
- S DIE="^IBT(356.22,"_DA(1)_",1,",DR=".02////"_DUZ_";.03" D ^DIE
- ; if no comment was added, delete the entry in 356.221 we just created
- I $G(^IBT(356.22,IBTRIEN,1,CMTIEN,1,1,0))="" S DIK=DIE,DA(1)=IBTRIEN,DA=CMTIEN D ^DIK Q
- ;
- ; If called from the main worklist, skip the next line
- Q:FROMWL
- ;
- ; rebuild the listman screen in order to show the newly added comment
- D INIT^IBTRH2,HDR^IBTRH2
- Q
- ;
- SEND278 ; send 278 request
- N ADMIEN,DDT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,EDT,DISIEN,IBEXIT,IENS,STATUS,X,Y
- ; IBTRENT - where this action is called from:
- ; 0 = from HCSR Worklist (full view)
- ; 1 = from HCSR Worklist (short view)
- ; 2 = from HCSR Response Worklist
- ; 3 = from Insurance Review Editor or Claims Tracking Editor
- S IBTRENT=+$G(IBTRENT)
- S:'$D(IBRESP) IBRESP=0
- S VALMBCK="R"
- D FULL^VALM1
- I $G(IBTRIEN)="" S IBTRENT=3 D ; coming from either Insurance Review Editor or Claims Tracking Editor
- .I $G(IBTRN)'="" D
- ..S IENS=IBTRN_",",DDT=""
- ..S EDT=$$GET1^DIQ(356,IENS,.06,"I") ; get event date from file 356
- ..S ADMIEN=+$$GET1^DIQ(356,IENS,.05,"I") ; get admission (ptr to file 405) from file 356
- ..I ADMIEN>0 D
- ...S DISIEN=+$$GET1^DIQ(405,ADMIEN_",",.17,"I") ; get discharge (ptr to file 405) from file 405
- ...I DISIEN>0 S DDT=$$GET1^DIQ(405,DISIEN_",",.01,"I") ; get discharge date from file 405
- ...Q
- ..S IBTRIEN=$O(^IBT(356.22,"D",DFN,EDT_$S(DDT'="":"-"_DDT,1:""),""))
- .Q
- ; if no valid 356.22 ien, complain and bail out
- I +$G(IBTRIEN)'>0 D STATMSG^IBTRH2A(1) Q
- ;
- S STATUS=$$STATUS(IBTRIEN)
- ; don't send a new request if we're waiting for response
- I STATUS="02" D STATMSG^IBTRH2A(3) Q
- ; if status is pending, still waiting on payer
- I STATUS="07" D STATMSG^IBTRH2A(4) Q
- ; Create the 278 request to be sent
- I IBTRENT'=1 S IBEXIT=$$CRT278^IBTRH5I(IBTRIEN)
- I IBTRENT=1 S IBEXIT=1
- ;
- ; Quit if the user '^' exited the template or if there is missing required fields
- I $$REQMISS^IBTRH5I(IBTRIEN,IBEXIT) D Q
- . D PAUSE^VALM1
- . ; Refresh display
- . I IBTRENT=0 D INIT^IBTRH2
- ;
- S DIR("A")="Send Request? (Y/N): ",DIR("B")="N",DIR(0)="YAO" D ^DIR K DIR
- I $G(DTOUT)!$G(DUOUT)!$G(DIROUT)!($G(Y)'=1) Q
- D EN^IBTRHLO(IBTRIEN,0)
- ; check if message id got populated and display appropriate message
- D STATMSG^IBTRH2A($S($P($G(^IBT(356.22,IBTRIEN,0)),U,12)="":2,1:0))
- ; refresh display
- I IBTRENT=0 D INIT^IBTRH2
- Q
- ;
- STATUS(IBTRIEN) ; returns 356.22 entry status
- ; IBTRIEN - file 356.22 ien
- ;
- N RES
- S RES=""
- I +$G(IBTRIEN)>0 S RES=$P($G(^IBT(356.22,IBTRIEN,0)),U,8)
- Q RES
- ;
- PRMARK(WHICH) ;EP
- ; Listman Protocol Action to Mark/Remove 'In-Progress' from a selected entry
- ; from the expand entry worklist
- ; Input: WHICH - 0 - Remove 'In-Progress' mark
- ; 1 - Set 'In-Progress' mark
- ; IBTRIEN - IEN of the Expanded Entry being marked/removed
- D PRMARK^IBTRH1(WHICH,IBTRIEN)
- I WHICH=1 D Q
- . I +$$STATUS^IBTRH2(IBTRIEN)=1 S VALMSG="Entry has been Marked" Q
- . S VALMSG="Nothing Done"
- ;
- I +$$STATUS^IBTRH2(IBTRIEN)=0 S VALMSG="Entry has been Unmarked" Q
- S VALMSG="Nothing Done"
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBTRH2 14764 printed Jan 18, 2025@03:29:12 Page 2
- IBTRH2 ;ALB/YMG - HCSR worklist expand entry ;18-JUN-2014
- +1 ;;2.0;INTEGRATED BILLING;**517**;21-MAR-94;Build 240
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- +4 QUIT
- +5 ;
- EN ; main entry point for IBT HCSR ENTRY
- +1 NEW DFN,DLINE,EVENTDT,IEN312,IEN36,INSNODE0,NODE0,IBTRNM,IBTRENT
- +2 SET VALMBCK="R"
- +3 SET IBTRNM="IBTRH2"
- SET IBTRENT=0
- +4 ; select entry to expand
- SET IBTRIEN=+$$SELEVENT^IBTRH1(0,"Select entry",.DLINE)
- +5 IF IBTRIEN'>0
- QUIT
- +6 ; try to lock the entry
- +7 IF '$$LOCKEV^IBTRH1(IBTRIEN)
- DO LOCKERR^IBTRH2A
- SET VALMSG="?Await #In-Prog -RespErr !Unable +Pend *NextRev"
- DO MSG^VALM10(VALMSG)
- QUIT
- +8 DO EN^VALM("IBT HCSR ENTRY")
- +9 ; unlock entry
- +10 DO UNLOCKEV^IBTRH1(IBTRIEN)
- +11 QUIT
- +12 ;
- EN2(IBTRNM,IBTRIEN) ; Secondary entry point.
- +1 ; IBTRNM is the calling routine name.
- +2 ; IBTRIEN is the internal id for ^IBT(356.22)
- +3 IF $GET(IBTRNM)=""
- SET VALMQUIT=""
- QUIT
- +4 IF '$GET(IBTRIEN)
- SET VALMQUIT=""
- QUIT
- +5 NEW DFN,EVENTDT,IEN312,INSNODE0,NODE0
- +6 DO INIT
- +7 QUIT
- +8 ;
- HDR ; header code
- +1 NEW VADM,VA,VAERR,Z
- +2 SET Z=""
- +3 IF +$GET(DFN)
- DO DEM^VADPT
- SET Z=$EXTRACT(VADM(1),1,28)
- SET Z=Z_$JUSTIFY("",35-$LENGTH(Z))_$PIECE(VADM(2),U,2)_" DOB: "_$PIECE(VADM(3),U,2)_" AGE: "_VADM(4)
- +4 SET VALMHDR(1)=Z
- +5 QUIT
- +6 ;
- INIT ; init variables and list array
- +1 KILL ^TMP(IBTRNM,$JOB)
- +2 IF '$GET(IBTRIEN)
- SET VALMQUIT=""
- QUIT
- +3 SET NODE0=$GET(^IBT(356.22,IBTRIEN,0))
- +4 SET DFN=+$PIECE(NODE0,U,2)
- +5 SET IEN312=+$PIECE(NODE0,U,3)
- +6 ; 0-node in file 2.312
- SET INSNODE0=""
- if IEN312>0
- SET INSNODE0=$GET(^DPT(DFN,.312,IEN312,0))
- +7 SET IEN36=+$PIECE(INSNODE0,U)
- +8 SET EVENTDT=$PIECE(NODE0,U,7)
- +9 DO BLD
- +10 QUIT
- +11 ;
- HELP ; help code
- +1 DO FULL^VALM1
- +2 WRITE !!,"This screen displays an expanded view of a Healthcare Services Review Worklist entry."
- +3 WRITE !!,"The actions allow editing of data and transmission of HCSR inquiry."
- +4 DO PAUSE^VALM1
- SET VALMBCK="R"
- +5 QUIT
- +6 ;
- EXIT ; exit code
- +1 KILL ^TMP(IBTRNM,$JOB)
- +2 DO CLEAR^VALM1
- DO CLEAN^VALM10
- +3 QUIT
- +4 ;
- BLD ; build screen array
- +1 NEW AAADATA,ADDR,CMTDATA,DATA36,DATA3553,IBL,IBLINE,IBY,IEN3553,IENS,PNDDATA,RESPONSE,STATUS,TMPARY,Z,Z0,Z1,Z2
- +2 SET IEN3553=+$PIECE(INSNODE0,U,18)
- SET STATUS=$$STATUS(IBTRIEN)
- SET RESPONSE=+$PIECE($GET(^IBT(356.22,IBTRIEN,0)),U,14)
- +3 IF $PIECE($GET(^IBT(356.22,IBTRIEN,0)),U,20)=2
- SET RESPONSE=IBTRIEN
- +4 SET VALMCNT=0
- +5 ;
- +6 SET IENS=IEN36_","
- +7 DO GETS^DIQ(36,IENS,".01;1;.131:.133","EI","DATA36")
- +8 DO SET(" ")
- SET IBY=$JUSTIFY("",26)_"Insurance Company Information"
- DO SET(IBY,"B")
- SET IBLINE=""
- +9 SET IBL="Name: "
- SET IBY=$GET(DATA36(36,IENS,.01,"E"))
- SET IBLINE=$$SETL("",IBY,IBL,10,30)
- +10 SET IBL="Reimburse?: "
- SET IBY=$GET(DATA36(36,IENS,1,"E"))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- +11 DO SET(IBLINE)
- SET IBLINE=""
- +12 SET IBL="Phone: "
- SET IBY=$GET(DATA36(36,IENS,.131,"E"))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,10,20)
- +13 SET IBL="Billing Phone: "
- SET IBY=$GET(DATA36(36,IENS,.132,"E"))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- +14 DO SET(IBLINE)
- SET IBLINE=""
- +15 SET IBL="Precert Phone: "
- SET IBY=$GET(DATA36(36,IENS,.133,"E"))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,57,20)
- +16 DO SET(IBLINE)
- SET IBLINE=""
- +17 DO ADDR^IBTRH2A(36,IEN36,.111,.112,.113,.114,.115,.116,.ADDR)
- +18 SET IBL="Address: "
- SET IBY=ADDR(1)
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,10,69)
- +19 DO SET(IBLINE)
- SET IBLINE=""
- +20 FOR Z=2:1:9
- SET IBL=""
- SET IBY=$GET(ADDR(Z))
- if IBY=""
- QUIT
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,10,69)
- DO SET(IBLINE)
- SET IBLINE=""
- +21 ;
- +22 SET IENS=IEN3553_","
- +23 DO GETS^DIQ(355.3,IENS,".02:.09;.12;6.02;6.03;11",,"DATA3553")
- +24 DO SET(" ")
- SET IBY=$JUSTIFY("",29)_"Group/Plan Information"
- DO SET(IBY,"B")
- SET IBLINE=""
- +25 SET IBL="Type Of Plan: "
- SET IBY=$GET(DATA3553(355.3,IENS,.09))
- SET IBLINE=$$SETL("",IBY,IBL,16,40)
- +26 SET IBL="Require UR: "
- SET IBY=$GET(DATA3553(355.3,IENS,.05))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- +27 DO SET(IBLINE)
- SET IBLINE=""
- +28 SET IBL="Group?: "
- SET IBY=$GET(DATA3553(355.3,IENS,.02))
- SET IBLINE=$$SETL("",IBY,IBL,16,3)
- +29 SET IBL="Require Amb Cert: "
- SET IBY=$GET(DATA3553(355.3,IENS,.12))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- +30 DO SET(IBLINE)
- SET IBLINE=""
- +31 SET IBL="Group Name: "
- SET IBY=$GET(DATA3553(355.3,IENS,.03))
- SET IBLINE=$$SETL("",IBY,IBL,16,20)
- +32 SET IBL="Require Pre-Cert: "
- SET IBY=$GET(DATA3553(355.3,IENS,.06))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- +33 DO SET(IBLINE)
- SET IBLINE=""
- +34 SET IBL="Group Number: "
- SET IBY=$GET(DATA3553(355.3,IENS,.04))
- SET IBLINE=$$SETL("",IBY,IBL,16,17)
- +35 SET IBL="Exclude Pre-Cond: "
- SET IBY=$GET(DATA3553(355.3,IENS,.07))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- +36 DO SET(IBLINE)
- SET IBLINE=""
- +37 SET IBL="BIN: "
- SET IBY=$GET(DATA3553(355.3,IENS,6.02))
- SET IBLINE=$$SETL("",IBY,IBL,16,10)
- +38 SET IBL="Benefits Assignable: "
- SET IBY=$GET(DATA3553(355.3,IENS,.08))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,63,3)
- +39 DO SET(IBLINE)
- SET IBLINE=""
- +40 SET IBL="PCN: "
- SET IBY=$GET(DATA3553(355.3,IENS,6.03))
- SET IBLINE=$$SETL("",IBY,IBL,16,20)
- +41 DO SET(IBLINE)
- SET IBLINE=""
- +42 DO SET(" ")
- +43 SET IBL="Plan Comments: "
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- +44 DO SET(IBLINE)
- SET IBLINE=""
- +45 SET IBL=""
- SET Z0=0
- FOR
- SET Z0=$ORDER(DATA3553(355.3,IENS,11,Z0))
- if 'Z0
- QUIT
- Begin DoDot:1
- +46 SET IBY=$GET(DATA3553(355.3,IENS,11,Z0))
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- DO SET(IBLINE)
- SET IBLINE=""
- +47 QUIT
- End DoDot:1
- +48 DO SET(" ")
- SET IBY=$JUSTIFY("",26)_"Policy/Subscriber Information"
- DO SET(IBY,"B")
- SET IBLINE=""
- +49 SET IBL="Insured's Name: "
- SET IBY=$PIECE(INSNODE0,U,17)
- SET IBLINE=$$SETL("",IBY,IBL,18,30)
- +50 SET IBL="Effective: "
- SET IBY=$$FMTE^XLFDT($PIECE(INSNODE0,U,8),5)
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,62,10)
- +51 DO SET(IBLINE)
- SET IBLINE=""
- +52 SET IBL="Subscriber Id: "
- SET IBY=$PIECE(INSNODE0,U,2)
- SET IBLINE=$$SETL("",IBY,IBL,18,20)
- +53 SET IBL="Expiration: "
- SET IBY=$$FMTE^XLFDT($PIECE(INSNODE0,U,4),5)
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,62,13)
- +54 DO SET(IBLINE)
- SET IBLINE=""
- +55 SET IBL="Relationship: "
- SET IBY=$$EXPAND^IBTRE(2.312,4.03,$PIECE($GET(^DPT(DFN,.312,IEN312,4)),U,3))
- SET IBLINE=$$SETL("",IBY,IBL,18,16)
- +56 SET IBL="Coord of Benefits: "
- SET IBY=$$EXPAND^IBTRE(2.312,.2,$PIECE(INSNODE0,U,20))
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,62,16)
- +57 DO SET(IBLINE)
- SET IBLINE=""
- +58 SET IBL="Insured's DOB: "
- SET IBY=$$FMTE^XLFDT($PIECE($GET(^DPT(DFN,.312,IEN312,3)),U),5)
- SET IBLINE=$$SETL("",IBY,IBL,18,10)
- +59 DO SET(IBLINE)
- SET IBLINE=""
- +60 SET IBL="Employer Sponsored Group Health Plan?: "
- SET IBY=$$EXPAND^IBTRE(2.312,2.1,$PIECE($GET(^DPT(DFN,.312,IEN312,2)),U))
- +61 SET IBLINE=$$SETL("",IBY,IBL,40,3)
- +62 DO SET(IBLINE)
- SET IBLINE=""
- +63 DO SET(" ")
- SET IBY=$JUSTIFY("",23)_"User Added Comments for This Entry"
- DO SET(IBY,"B")
- SET IBLINE=""
- +64 SET IENS=IBTRIEN_","
- DO GETS^DIQ(356.22,IENS,"1*","IE","CMTDATA")
- +65 SET Z0=""
- FOR
- SET Z0=$ORDER(CMTDATA(356.221,Z0))
- if Z0=""
- QUIT
- Begin DoDot:1
- +66 IF $GET(CMTDATA(356.221,Z0,.01,"I"))=""
- QUIT
- +67 SET IBL="User's Name: "
- SET IBY=$GET(CMTDATA(356.221,Z0,.02,"E"))
- SET IBLINE=$$SETL("",IBY,IBL,10,30)
- +68 SET IBL="Date Comment Entered: "
- SET IBY=$$FMTE^XLFDT(CMTDATA(356.221,Z0,.01,"I"),5)
- SET IBLINE=$$SETL(IBLINE,IBY,IBL,60,19)
- +69 DO SET(IBLINE)
- SET IBLINE=""
- +70 SET IBL="Comment: "
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- DO SET(IBLINE)
- SET IBLINE=""
- +71 KILL TMPARY
- DO FSTRNG^IBJU1($$WP2STR^IBTRHLO2(356.221,.03,Z0),75,.TMPARY)
- +72 SET IBL=" "
- FOR Z1=1:1:TMPARY
- SET IBY=TMPARY(Z1)
- SET IBLINE=$$SETL("",IBY,IBL,1,75)
- DO SET(IBLINE)
- SET IBLINE=""
- +73 DO SET(" ")
- +74 QUIT
- End DoDot:1
- +75 ; STATUS = "03" - unable to send, STATUS = "04" - negative response received
- +76 IF STATUS="03"!(STATUS="04")
- Begin DoDot:1
- +77 ; no response pointer
- IF STATUS="04"
- IF RESPONSE'>0
- QUIT
- +78 SET IENS=$SELECT(STATUS="04":RESPONSE,1:IBTRIEN)_","
- +79 DO SET(" ")
- +80 SET IBY=$SELECT(STATUS="03":$JUSTIFY("",16)_"Unable to send request for the following reasons",1:$JUSTIFY("",26)_"278 response error condition")
- +81 DO SET(IBY,"B")
- SET IBLINE=""
- +82 DO GETS^DIQ(356.22,IENS,"101*","IE","AAADATA")
- +83 SET Z0=""
- FOR
- SET Z0=$ORDER(AAADATA(356.22101,Z0))
- if Z0=""
- QUIT
- Begin DoDot:2
- +84 IF STATUS="04"
- Begin DoDot:3
- +85 SET Z1=+$GET(AAADATA(356.22101,Z0,.02,"I"))
- IF Z1>0
- Begin DoDot:4
- +86 SET IBL="Error Source: "
- SET IBY=$PIECE($GET(^IBE(365.027,Z1,0)),U,2)_" (Loop "_$GET(AAADATA(356.22101,Z0,.02,"E"))_")"
- +87 SET IBLINE=$$SETL("",IBY,IBL,10,69)
- DO SET(IBLINE)
- SET IBLINE=""
- End DoDot:4
- +88 SET IBL="Reject Reason Code: "
- SET IBY=$GET(AAADATA(356.22101,Z0,.04,"E"))
- +89 IF IBY'=""
- SET IBLINE=$$SETL("",IBY,IBL,20,59)
- DO SET(IBLINE)
- SET IBLINE=""
- +90 SET Z1=+$GET(AAADATA(356.22101,Z0,.04,"I"))
- +91 IF Z1>0
- SET IBL="Reject Reason Text: "
- SET IBY=$PIECE($GET(^IBE(365.017,Z1,0)),U,2)
- SET IBLINE=$$SETL("",IBY,IBL,20,59)
- DO SET(IBLINE)
- SET IBLINE=""
- +92 SET IBL="Action Code: "
- SET IBY=$GET(AAADATA(356.22101,Z0,.05,"E"))
- +93 IF IBY'=""
- SET IBLINE=$$SETL("",IBY,IBL,20,59)
- DO SET(IBLINE)
- SET IBLINE=""
- +94 SET Z1=+$GET(AAADATA(356.22101,Z0,.05,"I"))
- +95 IF Z1>0
- SET IBL="Action Text: "
- SET IBY=$PIECE($GET(^IBE(365.018,Z1,0)),U,2)
- SET IBLINE=$$SETL("",IBY,IBL,20,59)
- DO SET(IBLINE)
- SET IBLINE=""
- +96 QUIT
- End DoDot:3
- +97 SET Z1=$GET(AAADATA(356.22101,Z0,1,"E"))
- IF Z1'=""
- Begin DoDot:3
- +98 ;D SET(" ")
- +99 SET IBL=$SELECT(STATUS="04":"Error message:",1:"")
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- DO SET(IBLINE)
- SET IBLINE=""
- +100 KILL TMPARY
- DO FSTRNG^IBJU1(Z1,75,.TMPARY)
- +101 SET IBL=""
- FOR Z2=1:1:TMPARY
- SET IBY=TMPARY(Z2)
- SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- +102 QUIT
- End DoDot:3
- +103 DO SET(" ")
- +104 QUIT
- End DoDot:2
- +105 QUIT
- End DoDot:1
- +106 ; "Pending" response received
- +107 IF RESPONSE>0
- Begin DoDot:1
- +108 SET IENS=RESPONSE_","
- +109 DO GETS^DIQ(356.22,IENS,"11*;12;17.02;103.01;103.03","IE","PNDDATA")
- +110 ; only display this section if Certification Action Code = A4
- IF $GET(PNDDATA(356.22,IENS,103.01,"E"))'="A4"
- QUIT
- +111 DO SET(" ")
- SET IBY=$JUSTIFY("",23)_"278 Response with 'Pending' status"
- DO SET(IBY,"B")
- SET IBLINE=""
- +112 DO SET(" ")
- +113 SET IBL="Admin Reference #: "
- SET IBY=$GET(PNDDATA(356.22,IENS,17.02,"E"))
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- +114 DO SET(IBLINE)
- SET IBLINE=""
- +115 SET IBL="Review Decision Reason Code: "
- SET IBY=$GET(PNDDATA(356.22,IENS,103.03,"E"))
- SET IBLINE=$$SETL("",IBY,IBL,10,69)
- +116 DO SET(IBLINE)
- SET IBLINE=""
- +117 SET IBL="Review Decision Reason Text: "
- SET IBY=$PIECE($GET(^IBT(356.021,+$GET(PNDDATA(356.22,IENS,103.03,"I")),0)),U,2)
- +118 SET IBLINE=$$SETL("",IBY,IBL,10,69)
- +119 DO SET(IBLINE)
- SET IBLINE=""
- +120 IF $DATA(PNDDATA(356.22,IENS,12))
- Begin DoDot:2
- +121 SET IBL="Message: "
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,1,79)
- +122 DO SET(IBLINE)
- SET IBLINE=""
- SET IBL=""
- +123 SET Z0=0
- FOR
- SET Z0=$ORDER(PNDDATA(356.22,IENS,12,Z0))
- if Z0'=+Z0
- QUIT
- Begin DoDot:3
- +124 SET Z1=$GET(PNDDATA(356.22,IENS,12,Z0))
- +125 KILL TMPARY
- DO FSTRNG^IBJU1(Z1,75,.TMPARY)
- +126 SET IBL=""
- FOR Z2=1:1:TMPARY
- SET IBY=TMPARY(Z2)
- SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- +127 SET IBLINE=""
- +128 QUIT
- End DoDot:3
- +129 QUIT
- End DoDot:2
- +130 IF $DATA(PNDDATA(356.2211))
- Begin DoDot:2
- +131 DO SET(" ")
- +132 SET IBL="Reports: "
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,40,9)
- +133 DO SET(IBLINE)
- SET IBLINE=""
- +134 DO SET(" ")
- +135 SET Z=""
- FOR
- SET Z=$ORDER(PNDDATA(356.2211,Z))
- if Z=""
- QUIT
- Begin DoDot:3
- +136 SET IBL="Attachment Report Type Code: "
- SET IBY=$PIECE($GET(^IBT(356.018,+$GET(PNDDATA(356.2211,Z,.01,"I")),0)),U)
- +137 SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- SET IBLINE=""
- +138 SET IBL="Attachment Report Type Text: "
- SET IBY=$GET(PNDDATA(356.2211,Z,.01,"E"))
- +139 SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- SET IBLINE=""
- +140 SET IBL="Report Transmission Code: "
- SET IBY=$GET(PNDDATA(356.2211,Z,.02,"I"))
- +141 SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- SET IBLINE=""
- +142 SET IBL="Report Transmission Text: "
- SET IBY=$GET(PNDDATA(356.2211,Z,.02,"E"))
- +143 SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- SET IBLINE=""
- +144 SET IBL="Report Control #: "
- SET IBY=$GET(PNDDATA(356.2211,Z,.03,"E"))
- +145 SET IBLINE=$$SETL("",IBY,IBL,1,79)
- DO SET(IBLINE)
- SET IBLINE=""
- +146 SET IBL="Attachment Description: "
- SET IBY=""
- SET IBLINE=$$SETL("",IBY,IBL,1,79)
- +147 DO SET(IBLINE)
- SET IBLINE=""
- +148 SET IBL=""
- SET IBY=$GET(PNDDATA(356.2211,Z,.04,"E"))
- SET IBLINE=$$SETL("",IBY,IBL,1,79)
- +149 DO SET(IBLINE)
- SET IBLINE=""
- +150 DO SET(" ")
- +151 QUIT
- End DoDot:3
- +152 QUIT
- End DoDot:2
- +153 QUIT
- End DoDot:1
- +154 SET Z=+$ORDER(^TMP(IBTRNM,$JOB,""),-1)
- IF Z
- IF $GET(^TMP(IBTRNM,$JOB,Z,0))=" "
- KILL ^TMP(IBTRNM,$JOB,Z)
- SET VALMCNT=VALMCNT-1
- +155 QUIT
- +156 ;
- SETL(LINE,DATA,LABEL,COL,LNG) ;
- +1 SET LINE=LINE_$JUSTIFY("",(COL-$LENGTH(LABEL)-$LENGTH(LINE)))_LABEL_$EXTRACT(DATA,1,LNG)
- +2 QUIT LINE
- +3 ;
- SET(LINE,SPEC) ;
- +1 SET VALMCNT=VALMCNT+1
- +2 SET ^TMP(IBTRNM,$JOB,VALMCNT,0)=LINE
- +3 IF $GET(SPEC)="B"
- DO CNTRL^VALM10(VALMCNT,1,80,IOINHI,IOINORM)
- +4 QUIT
- +5 ;
- ADDCMT(FROMWL) ; add entry comment
- +1 ; called from action protocol IBT HCSR ADD COMMENT
- +2 ; Input: FROMWL - Optional, only sent when adding a comment to entry
- +3 ; directly from the main worklist.
- +4 ; Defaults to 0
- +5 NEW CMTIEN,DA,DD,DIC,DIE,DIK,DINUM,DLAYGO,DO,DR,DTOUT,DUOUT,DIRUT,X,Y
- +6 if '$DATA(FROMWL)
- SET FROMWL=0
- +7 SET VALMBCK="R"
- +8 ; create new entry in the comments multiple (356.221)
- +9 SET DA(1)=IBTRIEN
- SET DLAYGO=356.221
- SET DIC(0)="L"
- SET DIC="^IBT(356.22,"_DA(1)_",1,"
- SET X=$$NOW^XLFDT()
- +10 DO FILE^DICN
- KILL DD,DO
- SET (CMTIEN,DA)=+Y
- IF DA<1
- QUIT
- +11 ; prompt for the comment
- +12 SET DIE="^IBT(356.22,"_DA(1)_",1,"
- SET DR=".02////"_DUZ_";.03"
- DO ^DIE
- +13 ; if no comment was added, delete the entry in 356.221 we just created
- +14 IF $GET(^IBT(356.22,IBTRIEN,1,CMTIEN,1,1,0))=""
- SET DIK=DIE
- SET DA(1)=IBTRIEN
- SET DA=CMTIEN
- DO ^DIK
- QUIT
- +15 ;
- +16 ; If called from the main worklist, skip the next line
- +17 if FROMWL
- QUIT
- +18 ;
- +19 ; rebuild the listman screen in order to show the newly added comment
- +20 DO INIT^IBTRH2
- DO HDR^IBTRH2
- +21 QUIT
- +22 ;
- SEND278 ; send 278 request
- +1 NEW ADMIEN,DDT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,EDT,DISIEN,IBEXIT,IENS,STATUS,X,Y
- +2 ; IBTRENT - where this action is called from:
- +3 ; 0 = from HCSR Worklist (full view)
- +4 ; 1 = from HCSR Worklist (short view)
- +5 ; 2 = from HCSR Response Worklist
- +6 ; 3 = from Insurance Review Editor or Claims Tracking Editor
- +7 SET IBTRENT=+$GET(IBTRENT)
- +8 if '$DATA(IBRESP)
- SET IBRESP=0
- +9 SET VALMBCK="R"
- +10 DO FULL^VALM1
- +11 ; coming from either Insurance Review Editor or Claims Tracking Editor
- IF $GET(IBTRIEN)=""
- SET IBTRENT=3
- Begin DoDot:1
- +12 IF $GET(IBTRN)'=""
- Begin DoDot:2
- +13 SET IENS=IBTRN_","
- SET DDT=""
- +14 ; get event date from file 356
- SET EDT=$$GET1^DIQ(356,IENS,.06,"I")
- +15 ; get admission (ptr to file 405) from file 356
- SET ADMIEN=+$$GET1^DIQ(356,IENS,.05,"I")
- +16 IF ADMIEN>0
- Begin DoDot:3
- +17 ; get discharge (ptr to file 405) from file 405
- SET DISIEN=+$$GET1^DIQ(405,ADMIEN_",",.17,"I")
- +18 ; get discharge date from file 405
- IF DISIEN>0
- SET DDT=$$GET1^DIQ(405,DISIEN_",",.01,"I")
- +19 QUIT
- End DoDot:3
- +20 SET IBTRIEN=$ORDER(^IBT(356.22,"D",DFN,EDT_$SELECT(DDT'="":"-"_DDT,1:""),""))
- End DoDot:2
- +21 QUIT
- End DoDot:1
- +22 ; if no valid 356.22 ien, complain and bail out
- +23 IF +$GET(IBTRIEN)'>0
- DO STATMSG^IBTRH2A(1)
- QUIT
- +24 ;
- +25 SET STATUS=$$STATUS(IBTRIEN)
- +26 ; don't send a new request if we're waiting for response
- +27 IF STATUS="02"
- DO STATMSG^IBTRH2A(3)
- QUIT
- +28 ; if status is pending, still waiting on payer
- +29 IF STATUS="07"
- DO STATMSG^IBTRH2A(4)
- QUIT
- +30 ; Create the 278 request to be sent
- +31 IF IBTRENT'=1
- SET IBEXIT=$$CRT278^IBTRH5I(IBTRIEN)
- +32 IF IBTRENT=1
- SET IBEXIT=1
- +33 ;
- +34 ; Quit if the user '^' exited the template or if there is missing required fields
- +35 IF $$REQMISS^IBTRH5I(IBTRIEN,IBEXIT)
- Begin DoDot:1
- +36 DO PAUSE^VALM1
- +37 ; Refresh display
- +38 IF IBTRENT=0
- DO INIT^IBTRH2
- End DoDot:1
- QUIT
- +39 ;
- +40 SET DIR("A")="Send Request? (Y/N): "
- SET DIR("B")="N"
- SET DIR(0)="YAO"
- DO ^DIR
- KILL DIR
- +41 IF $GET(DTOUT)!$GET(DUOUT)!$GET(DIROUT)!($GET(Y)'=1)
- QUIT
- +42 DO EN^IBTRHLO(IBTRIEN,0)
- +43 ; check if message id got populated and display appropriate message
- +44 DO STATMSG^IBTRH2A($SELECT($PIECE($GET(^IBT(356.22,IBTRIEN,0)),U,12)="":2,1:0))
- +45 ; refresh display
- +46 IF IBTRENT=0
- DO INIT^IBTRH2
- +47 QUIT
- +48 ;
- STATUS(IBTRIEN) ; returns 356.22 entry status
- +1 ; IBTRIEN - file 356.22 ien
- +2 ;
- +3 NEW RES
- +4 SET RES=""
- +5 IF +$GET(IBTRIEN)>0
- SET RES=$PIECE($GET(^IBT(356.22,IBTRIEN,0)),U,8)
- +6 QUIT RES
- +7 ;
- PRMARK(WHICH) ;EP
- +1 ; Listman Protocol Action to Mark/Remove 'In-Progress' from a selected entry
- +2 ; from the expand entry worklist
- +3 ; Input: WHICH - 0 - Remove 'In-Progress' mark
- +4 ; 1 - Set 'In-Progress' mark
- +5 ; IBTRIEN - IEN of the Expanded Entry being marked/removed
- +6 DO PRMARK^IBTRH1(WHICH,IBTRIEN)
- +7 IF WHICH=1
- Begin DoDot:1
- +8 IF +$$STATUS^IBTRH2(IBTRIEN)=1
- SET VALMSG="Entry has been Marked"
- QUIT
- +9 SET VALMSG="Nothing Done"
- End DoDot:1
- QUIT
- +10 ;
- +11 IF +$$STATUS^IBTRH2(IBTRIEN)=0
- SET VALMSG="Entry has been Unmarked"
- QUIT
- +12 SET VALMSG="Nothing Done"
- +13 QUIT