146 lines
6.6 KiB
Mathematica
146 lines
6.6 KiB
Mathematica
IVMLERR1 ;ALB/RMO - IVM Transmission Error Processing - Build List area; 15-SEP-1997
|
|
;;2.0;INCOME VERIFICATION MATCH;**9**; 21-OCT-94
|
|
;
|
|
EN(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY,IVMCNT) ;Entry point to build list area for IVM transmission errors
|
|
;The following variables are 'system wide variables' in the
|
|
;IVM Transmission Error Processing List Manager application:
|
|
; Input -- IVMARY Global array subscript
|
|
; IVMBEG Begin date
|
|
; IVMEND End date
|
|
; IVMEPSTA Error processing statuses
|
|
; 1 - New
|
|
; 2 - Checked
|
|
; 1^2 - Both
|
|
; IVMSRTBY Sort by criteria
|
|
; P - patient name
|
|
; D - date/time ack received
|
|
; Output -- IVMCNT Number of lines in the list
|
|
D WAIT^DICD
|
|
;
|
|
;Get IVM transmission log errors
|
|
D GET(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY)
|
|
;
|
|
;Build list area for for IVM transmission log errors
|
|
D BLD(IVMSRTBY,.IVMCNT)
|
|
;
|
|
;Print message if no IVM transmission log errors meet selection criteria
|
|
I 'IVMCNT D
|
|
. D SET(IVMARY,1,"",1,60,0,,,.IVMCNT)
|
|
. D SET(IVMARY,2,"No 'Transmission Errors' meet the selection criteria.",4,60,0,,,.IVMCNT)
|
|
Q
|
|
;
|
|
GET(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY) ;Get IVM transmission log errors
|
|
; Input -- IVMARY Global array subscript
|
|
; IVMBEG Begin date
|
|
; IVMEND End date
|
|
; IVMEPSTA Error processing statuses
|
|
; IVMSRTBY Sort by criteria
|
|
; Output -- IVM Transmission log error list sorted by patient name
|
|
; ^TMP("IVMERRSRT",$J,<sort by>,<patient name>,<trans log IEN>)
|
|
; or date/time ack received
|
|
; ^TMP("IVMERRSRT",$J,<sort by>,<date/time ack received>,<trans log IEN>)
|
|
N IVMDFN,IVMDTR,IVMTLIEN,PCE,STA
|
|
;
|
|
;Loop through IVM transmission log for selected date range
|
|
F IVMDTR=IVMBEG:0 S IVMDTR=$O(^IVM(301.6,"AEPS",IVMDTR)) Q:'IVMDTR!($P(IVMDTR,".")>IVMEND) D
|
|
. ;Loop through selected error processing statuses
|
|
. F PCE=1:1 S STA=$P(IVMEPSTA,U,PCE) Q:STA="" D
|
|
. . ;Loop through patients
|
|
. . S IVMDFN=0
|
|
. . F S IVMDFN=$O(^IVM(301.6,"AEPS",IVMDTR,STA,IVMDFN)) Q:'IVMDFN D
|
|
. . . ;Loop though internal entry numbers
|
|
. . . S IVMTLIEN=0
|
|
. . . F S IVMTLIEN=$O(^IVM(301.6,"AEPS",IVMDTR,STA,IVMDFN,IVMTLIEN)) Q:'IVMTLIEN D SORT(IVMSRTBY,IVMDTR,IVMDFN,IVMTLIEN)
|
|
Q
|
|
;
|
|
SORT(IVMSRTBY,IVMDTR,IVMDFN,IVMTLIEN) ;Set array based on sort criteria for IVM transmission log error list display
|
|
; Input -- IVMSRTBY Sort by criteria
|
|
; IVMDTR IVM transmission log date/time ack received
|
|
; IVMDFN IVM patient IEN
|
|
; IVMTLIEN IVM transmission log IEN
|
|
; Output -- None
|
|
N IVMTLOG
|
|
I IVMSRTBY="P" D ;patient name
|
|
. I $$GET^IVMTLOG(IVMTLIEN,.IVMTLOG) D
|
|
. . S ^TMP("IVMERRSRT",$J,IVMSRTBY,$S($P($G(^DPT(+IVMTLOG("DFN"),0)),U)'="":$P(^(0),U),1:"UNKNOWN"),IVMTLIEN)=""
|
|
ELSE D ;default date/time ack received
|
|
. S ^TMP("IVMERRSRT",$J,IVMSRTBY,IVMDTR,IVMTLIEN)=""
|
|
Q
|
|
;
|
|
BLD(IVMSRTBY,IVMCNT) ;Build list area for for IVM transmission log errors
|
|
; Input -- IVMSRTBY Sort by criteria
|
|
; P - patient name
|
|
; D - date/time ack received
|
|
; Output -- IVMCNT Number of lines in the list
|
|
N DFN,IVMCOL,IVMSUB,IVMTEXT,IVMTLIEN,IVMTLOG,IVMWID,X,VA
|
|
;
|
|
;Initialize variables
|
|
S (IVMLINE,IVMNUM)=0
|
|
S X=VALMDDF("NUMBER"),IVMCOL("NUM")=$P(X,U,2),IVMWID("NUM")=$P(X,U,3)
|
|
S X=VALMDDF("RETRANSMIT"),IVMCOL("RET")=$P(X,U,2),IVMWID("RET")=$P(X,U,3)
|
|
S X=VALMDDF("PATIENT"),IVMCOL("PAT")=$P(X,U,2),IVMWID("PAT")=$P(X,U,3)
|
|
S X=VALMDDF("PTID"),IVMCOL("PTID")=$P(X,U,2),IVMWID("PTID")=$P(X,U,3)
|
|
S X=VALMDDF("DATE/TIME"),IVMCOL("DTR")=$P(X,U,2),IVMWID("DTR")=$P(X,U,3)
|
|
S X=VALMDDF("STATUS"),IVMCOL("STA")=$P(X,U,2),IVMWID("STA")=$P(X,U,3)
|
|
;
|
|
;Loop through by patient name or date/time ack received
|
|
S IVMSUB=$S(IVMSRTBY="P":"",1:0)
|
|
F S IVMSUB=$O(^TMP("IVMERRSRT",$J,IVMSRTBY,IVMSUB)) Q:IVMSUB="" D
|
|
. ;Loop through IVM transmission log IEN(s)
|
|
. S IVMTLIEN=0
|
|
. F S IVMTLIEN=$O(^TMP("IVMERRSRT",$J,IVMSRTBY,IVMSUB,IVMTLIEN)) Q:'IVMTLIEN D
|
|
. . W:'(IVMLINE#50) "."
|
|
. . ;Get information for IVM transmission log entry
|
|
. . I $$GET^IVMTLOG(IVMTLIEN,.IVMTLOG) D
|
|
. . . ;Increment selection number
|
|
. . . S IVMNUM=IVMNUM+1
|
|
. . . ;Increment line counter
|
|
. . . S IVMLINE=IVMLINE+1
|
|
. . . ;Set selection number in display array
|
|
. . . D SET(IVMARY,IVMLINE,IVMNUM,IVMCOL("NUM"),IVMWID("NUM"),IVMNUM,IVMTLIEN,IVMTLOG("PAT"),.IVMCNT)
|
|
. . . ;Set retransmit flag in display array
|
|
. . . S IVMTEXT=$S('$G(IVMTLOG("PAT")):" ",'$$STATUS^IVMPLOG(IVMTLOG("PAT")):"*",1:" ")
|
|
. . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("RET"),IVMWID("RET"),IVMNUM,,,.IVMCNT)
|
|
. . . ;Set patient name in display array
|
|
. . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("PAT")):$$EXT^IVMTLOG("PAT",IVMTLOG("PAT")),1:"UNKNOWN"))
|
|
. . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("PAT"),IVMWID("PAT"),IVMNUM,,,.IVMCNT)
|
|
. . . ;Set patient id in display array
|
|
. . . S DFN=+IVMTLOG("DFN") D PID^VADPT
|
|
. . . D SET(IVMARY,IVMLINE,VA("BID"),IVMCOL("PTID"),IVMWID("PTID"),IVMNUM,,,.IVMCNT)
|
|
. . . ;Set date/time ack received in display array
|
|
. . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("DT/TM ACK")):$$EXT^IVMTLOG("DT/TM ACK",IVMTLOG("DT/TM ACK")),1:"UNKNOWN"))
|
|
. . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("DTR"),IVMWID("DTR"),IVMNUM,,,.IVMCNT)
|
|
. . . ;Set error processing status in display array
|
|
. . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("ERROR STATUS")):$$EXT^IVMTLOG("ERROR STATUS",IVMTLOG("ERROR STATUS")),1:"UNKNOWN"))
|
|
. . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("STA"),IVMWID("STA"),IVMNUM,,,.IVMCNT)
|
|
. . . ;Increment line counter
|
|
. . . S IVMLINE=IVMLINE+1
|
|
. . . ;Set error message in display array
|
|
. . . S IVMTEXT="Error: "_$S($G(IVMTLOG("ERROR"))'="":$$EXT^IVMTLOG("ERROR",IVMTLOG("ERROR")),1:"UNKNOWN")
|
|
. . . K X S $P(X," ",160)=""
|
|
. . . S IVMTEXT=$E(IVMTEXT_X,1,160)
|
|
. . . D SET(IVMARY,IVMLINE,IVMTEXT,3,$L(IVMTEXT),IVMNUM,,,.IVMCNT)
|
|
Q
|
|
;
|
|
SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL,IVMWID,IVMNUM,IVMTLIEN,IVMDFN,IVMCNT) ;Set display array
|
|
; Input -- IVMARY Global array subscript
|
|
; IVMLINE Line number
|
|
; IVMTEXT Text
|
|
; IVMCOL Column to start at
|
|
; IVMWID Column or text width
|
|
; IVMNUM Selection number
|
|
; IVMTLIEN IVM transmission log IEN
|
|
; IVMDFN IVM patient IEN
|
|
; Output -- IVMCNT Number of lines in the list
|
|
N X
|
|
S:IVMLINE>IVMCNT IVMCNT=IVMLINE
|
|
S X=$S($D(^TMP(IVMARY,$J,IVMLINE,0)):^(0),1:"")
|
|
S ^TMP(IVMARY,$J,IVMLINE,0)=$$SETSTR^VALM1(IVMTEXT,X,IVMCOL,IVMWID)
|
|
S ^TMP(IVMARY,$J,"IDX",IVMLINE,IVMNUM)=""
|
|
;
|
|
;Set special index used in retransmitting patient
|
|
I $G(IVMTLIEN),$G(IVMDFN) D
|
|
. S ^TMP(IVMARY_"IDX",$J,IVMNUM)=IVMLINE_U_IVMTLIEN
|
|
. S ^TMP(IVMARY_"IDX",$J,"PT",IVMDFN,IVMLINE)=IVMTLIEN
|
|
Q
|