source: WorldVistAEHR/trunk/r/INCOME_VERIFICATION_MATCH-IVM/IVMLERR1.m@ 841

Last change on this file since 841 was 613, checked in by George Lilly, 15 years ago

initial load of WorldVistAEHR

File size: 6.6 KB
Line 
1IVMLERR1 ;ALB/RMO - IVM Transmission Error Processing - Build List area; 15-SEP-1997
2 ;;2.0;INCOME VERIFICATION MATCH;**9**; 21-OCT-94
3 ;
4EN(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY,IVMCNT) ;Entry point to build list area for IVM transmission errors
5 ;The following variables are 'system wide variables' in the
6 ;IVM Transmission Error Processing List Manager application:
7 ; Input -- IVMARY Global array subscript
8 ; IVMBEG Begin date
9 ; IVMEND End date
10 ; IVMEPSTA Error processing statuses
11 ; 1 - New
12 ; 2 - Checked
13 ; 1^2 - Both
14 ; IVMSRTBY Sort by criteria
15 ; P - patient name
16 ; D - date/time ack received
17 ; Output -- IVMCNT Number of lines in the list
18 D WAIT^DICD
19 ;
20 ;Get IVM transmission log errors
21 D GET(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY)
22 ;
23 ;Build list area for for IVM transmission log errors
24 D BLD(IVMSRTBY,.IVMCNT)
25 ;
26 ;Print message if no IVM transmission log errors meet selection criteria
27 I 'IVMCNT D
28 . D SET(IVMARY,1,"",1,60,0,,,.IVMCNT)
29 . D SET(IVMARY,2,"No 'Transmission Errors' meet the selection criteria.",4,60,0,,,.IVMCNT)
30 Q
31 ;
32GET(IVMARY,IVMBEG,IVMEND,IVMEPSTA,IVMSRTBY) ;Get IVM transmission log errors
33 ; Input -- IVMARY Global array subscript
34 ; IVMBEG Begin date
35 ; IVMEND End date
36 ; IVMEPSTA Error processing statuses
37 ; IVMSRTBY Sort by criteria
38 ; Output -- IVM Transmission log error list sorted by patient name
39 ; ^TMP("IVMERRSRT",$J,<sort by>,<patient name>,<trans log IEN>)
40 ; or date/time ack received
41 ; ^TMP("IVMERRSRT",$J,<sort by>,<date/time ack received>,<trans log IEN>)
42 N IVMDFN,IVMDTR,IVMTLIEN,PCE,STA
43 ;
44 ;Loop through IVM transmission log for selected date range
45 F IVMDTR=IVMBEG:0 S IVMDTR=$O(^IVM(301.6,"AEPS",IVMDTR)) Q:'IVMDTR!($P(IVMDTR,".")>IVMEND) D
46 . ;Loop through selected error processing statuses
47 . F PCE=1:1 S STA=$P(IVMEPSTA,U,PCE) Q:STA="" D
48 . . ;Loop through patients
49 . . S IVMDFN=0
50 . . F S IVMDFN=$O(^IVM(301.6,"AEPS",IVMDTR,STA,IVMDFN)) Q:'IVMDFN D
51 . . . ;Loop though internal entry numbers
52 . . . S IVMTLIEN=0
53 . . . F S IVMTLIEN=$O(^IVM(301.6,"AEPS",IVMDTR,STA,IVMDFN,IVMTLIEN)) Q:'IVMTLIEN D SORT(IVMSRTBY,IVMDTR,IVMDFN,IVMTLIEN)
54 Q
55 ;
56SORT(IVMSRTBY,IVMDTR,IVMDFN,IVMTLIEN) ;Set array based on sort criteria for IVM transmission log error list display
57 ; Input -- IVMSRTBY Sort by criteria
58 ; IVMDTR IVM transmission log date/time ack received
59 ; IVMDFN IVM patient IEN
60 ; IVMTLIEN IVM transmission log IEN
61 ; Output -- None
62 N IVMTLOG
63 I IVMSRTBY="P" D ;patient name
64 . I $$GET^IVMTLOG(IVMTLIEN,.IVMTLOG) D
65 . . S ^TMP("IVMERRSRT",$J,IVMSRTBY,$S($P($G(^DPT(+IVMTLOG("DFN"),0)),U)'="":$P(^(0),U),1:"UNKNOWN"),IVMTLIEN)=""
66 ELSE D ;default date/time ack received
67 . S ^TMP("IVMERRSRT",$J,IVMSRTBY,IVMDTR,IVMTLIEN)=""
68 Q
69 ;
70BLD(IVMSRTBY,IVMCNT) ;Build list area for for IVM transmission log errors
71 ; Input -- IVMSRTBY Sort by criteria
72 ; P - patient name
73 ; D - date/time ack received
74 ; Output -- IVMCNT Number of lines in the list
75 N DFN,IVMCOL,IVMSUB,IVMTEXT,IVMTLIEN,IVMTLOG,IVMWID,X,VA
76 ;
77 ;Initialize variables
78 S (IVMLINE,IVMNUM)=0
79 S X=VALMDDF("NUMBER"),IVMCOL("NUM")=$P(X,U,2),IVMWID("NUM")=$P(X,U,3)
80 S X=VALMDDF("RETRANSMIT"),IVMCOL("RET")=$P(X,U,2),IVMWID("RET")=$P(X,U,3)
81 S X=VALMDDF("PATIENT"),IVMCOL("PAT")=$P(X,U,2),IVMWID("PAT")=$P(X,U,3)
82 S X=VALMDDF("PTID"),IVMCOL("PTID")=$P(X,U,2),IVMWID("PTID")=$P(X,U,3)
83 S X=VALMDDF("DATE/TIME"),IVMCOL("DTR")=$P(X,U,2),IVMWID("DTR")=$P(X,U,3)
84 S X=VALMDDF("STATUS"),IVMCOL("STA")=$P(X,U,2),IVMWID("STA")=$P(X,U,3)
85 ;
86 ;Loop through by patient name or date/time ack received
87 S IVMSUB=$S(IVMSRTBY="P":"",1:0)
88 F S IVMSUB=$O(^TMP("IVMERRSRT",$J,IVMSRTBY,IVMSUB)) Q:IVMSUB="" D
89 . ;Loop through IVM transmission log IEN(s)
90 . S IVMTLIEN=0
91 . F S IVMTLIEN=$O(^TMP("IVMERRSRT",$J,IVMSRTBY,IVMSUB,IVMTLIEN)) Q:'IVMTLIEN D
92 . . W:'(IVMLINE#50) "."
93 . . ;Get information for IVM transmission log entry
94 . . I $$GET^IVMTLOG(IVMTLIEN,.IVMTLOG) D
95 . . . ;Increment selection number
96 . . . S IVMNUM=IVMNUM+1
97 . . . ;Increment line counter
98 . . . S IVMLINE=IVMLINE+1
99 . . . ;Set selection number in display array
100 . . . D SET(IVMARY,IVMLINE,IVMNUM,IVMCOL("NUM"),IVMWID("NUM"),IVMNUM,IVMTLIEN,IVMTLOG("PAT"),.IVMCNT)
101 . . . ;Set retransmit flag in display array
102 . . . S IVMTEXT=$S('$G(IVMTLOG("PAT")):" ",'$$STATUS^IVMPLOG(IVMTLOG("PAT")):"*",1:" ")
103 . . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("RET"),IVMWID("RET"),IVMNUM,,,.IVMCNT)
104 . . . ;Set patient name in display array
105 . . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("PAT")):$$EXT^IVMTLOG("PAT",IVMTLOG("PAT")),1:"UNKNOWN"))
106 . . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("PAT"),IVMWID("PAT"),IVMNUM,,,.IVMCNT)
107 . . . ;Set patient id in display array
108 . . . S DFN=+IVMTLOG("DFN") D PID^VADPT
109 . . . D SET(IVMARY,IVMLINE,VA("BID"),IVMCOL("PTID"),IVMWID("PTID"),IVMNUM,,,.IVMCNT)
110 . . . ;Set date/time ack received in display array
111 . . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("DT/TM ACK")):$$EXT^IVMTLOG("DT/TM ACK",IVMTLOG("DT/TM ACK")),1:"UNKNOWN"))
112 . . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("DTR"),IVMWID("DTR"),IVMNUM,,,.IVMCNT)
113 . . . ;Set error processing status in display array
114 . . . S IVMTEXT=$$LOWER^VALM1($S($G(IVMTLOG("ERROR STATUS")):$$EXT^IVMTLOG("ERROR STATUS",IVMTLOG("ERROR STATUS")),1:"UNKNOWN"))
115 . . . D SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL("STA"),IVMWID("STA"),IVMNUM,,,.IVMCNT)
116 . . . ;Increment line counter
117 . . . S IVMLINE=IVMLINE+1
118 . . . ;Set error message in display array
119 . . . S IVMTEXT="Error: "_$S($G(IVMTLOG("ERROR"))'="":$$EXT^IVMTLOG("ERROR",IVMTLOG("ERROR")),1:"UNKNOWN")
120 . . . K X S $P(X," ",160)=""
121 . . . S IVMTEXT=$E(IVMTEXT_X,1,160)
122 . . . D SET(IVMARY,IVMLINE,IVMTEXT,3,$L(IVMTEXT),IVMNUM,,,.IVMCNT)
123 Q
124 ;
125SET(IVMARY,IVMLINE,IVMTEXT,IVMCOL,IVMWID,IVMNUM,IVMTLIEN,IVMDFN,IVMCNT) ;Set display array
126 ; Input -- IVMARY Global array subscript
127 ; IVMLINE Line number
128 ; IVMTEXT Text
129 ; IVMCOL Column to start at
130 ; IVMWID Column or text width
131 ; IVMNUM Selection number
132 ; IVMTLIEN IVM transmission log IEN
133 ; IVMDFN IVM patient IEN
134 ; Output -- IVMCNT Number of lines in the list
135 N X
136 S:IVMLINE>IVMCNT IVMCNT=IVMLINE
137 S X=$S($D(^TMP(IVMARY,$J,IVMLINE,0)):^(0),1:"")
138 S ^TMP(IVMARY,$J,IVMLINE,0)=$$SETSTR^VALM1(IVMTEXT,X,IVMCOL,IVMWID)
139 S ^TMP(IVMARY,$J,"IDX",IVMLINE,IVMNUM)=""
140 ;
141 ;Set special index used in retransmitting patient
142 I $G(IVMTLIEN),$G(IVMDFN) D
143 . S ^TMP(IVMARY_"IDX",$J,IVMNUM)=IVMLINE_U_IVMTLIEN
144 . S ^TMP(IVMARY_"IDX",$J,"PT",IVMDFN,IVMLINE)=IVMTLIEN
145 Q
Note: See TracBrowser for help on using the repository browser.