1 | IVMTLOG ;ALB/CJM - API for IVM TRANSMISSION LOG file; 4-SEP-97
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**9**; 21-OCT-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | LOCK(IEN) ;
|
---|
6 | ;Description: Locks a record in the IVM TRANSMISSION LOG file.
|
---|
7 | ;Input:
|
---|
8 | ; IEN - ien of record in IVM TRANSMISSION LOG file.
|
---|
9 | ;Output:
|
---|
10 | ; Function Value - 1 if successful, 0 otherwise.
|
---|
11 | ;
|
---|
12 | I $G(IEN) L +^IVM(301.6,IEN):3
|
---|
13 | Q $T
|
---|
14 | ;
|
---|
15 | UNLOCK(IEN) ;
|
---|
16 | ;Description: Unlocks a record in the IVM TRANSMISSION LOG file.
|
---|
17 | ;Input:
|
---|
18 | ; IEN - ien of record in the IVM TRANSMISSION LOG file.
|
---|
19 | ;Output: None
|
---|
20 | ;
|
---|
21 | I $G(IEN) L -^IVM(301.6,IEN)
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | SETSTAT(IEN,STATUS,ERROR) ;
|
---|
25 | ;Description: Sets the value of the STATUS field of the
|
---|
26 | ; IVM TRANSMISSION LOG file for a particular record.
|
---|
27 | ;Input:
|
---|
28 | ; IEN - internal entry number of a record in IVM TRANSMISSION LOG file.
|
---|
29 | ; STATUS - status code - 1:RECEIVED, 0:TRANSMITTED, 2:RE-TRANSMITTED, 3:ERROR IN TRANSMITTED RECORD
|
---|
30 | ; ERROR - optional - text error message
|
---|
31 | ;Output:
|
---|
32 | ; Function Value - 1 on success, 0 on failure.
|
---|
33 | ;
|
---|
34 | Q:'$$TESTVAL^DGENDBS(301.6,.03,STATUS) 0
|
---|
35 | ;
|
---|
36 | N DATA,RET
|
---|
37 | Q:'$$LOCK($G(IEN)) 0
|
---|
38 | S DATA(.03)=STATUS
|
---|
39 | I $G(ERROR)'="" S DATA(.04)=$E(ERROR,1,80)
|
---|
40 | ;
|
---|
41 | ;DATE/TIME ACK RECEIVED should only be entered for appropriate status
|
---|
42 | I (STATUS=1)!(STATUS=3) D
|
---|
43 | .S DATA(.06)=$$NOW^XLFDT
|
---|
44 | E S DATA(.06)="@"
|
---|
45 | ;
|
---|
46 | ;ERROR PROCESSING STATUS should only be entered if error status
|
---|
47 | I (STATUS=3) D
|
---|
48 | .S DATA(.07)=1
|
---|
49 | E S DATA(.07)="@"
|
---|
50 | ;
|
---|
51 | S RET=$$UPD^DGENDBS(301.6,IEN,.DATA)
|
---|
52 | D UNLOCK(IEN)
|
---|
53 | Q RET
|
---|
54 | ;
|
---|
55 | ERRSTAT(IEN,STATUS,ERROR) ;
|
---|
56 | ;Description: Sets the ERROR PROCESSING STATUS field of a record in the IVM TRANSMISSION LOG file.
|
---|
57 | ;
|
---|
58 | ;Input:
|
---|
59 | ; IEN - ien of record in IVM TRANSMISSION LOG file.
|
---|
60 | ; STATUS - error processing status code
|
---|
61 | ;Output:
|
---|
62 | ; Function Value - 1 if successful, 0 otherwise.
|
---|
63 | ; ERROR - error message (optional), pass by reference - will return message on failure
|
---|
64 | ;
|
---|
65 | N DATA,RET
|
---|
66 | ;
|
---|
67 | S ERROR=""
|
---|
68 | I '$$TESTVAL^DGENDBS(301.6,.07,STATUS) S ERROR="INVALID TRANSMISSION PROCESSING STATUS" Q 0
|
---|
69 | I '$G(IEN) S ERROR="NO RECORD SPECIFIED" Q 0
|
---|
70 | I $P(^IVM(301.6,IEN,0),"^",3)'=3 S ERROR="STATUS IS NOT 'ERROR IN TRANSMITTED RECORD'" Q 0
|
---|
71 | I '$$LOCK($G(IEN)) S ERROR="COULD NOT OBTAIN LOCK ON RECORD" Q 0
|
---|
72 | S DATA(.07)=STATUS
|
---|
73 | S RET=$$UPD^DGENDBS(301.6,IEN,.DATA,.ERROR)
|
---|
74 | D UNLOCK(IEN)
|
---|
75 | Q RET
|
---|
76 | ;
|
---|
77 | GET(IEN,TLOG) ;
|
---|
78 | ;Description: Used to obtain a record in the IVM TRANSMISSION LOG file. The
|
---|
79 | ;values are returned in the TLOG() array.
|
---|
80 | ;Input:
|
---|
81 | ; IEN - internal entry number of a record in the IVM TRANSMISSION LOG file.
|
---|
82 | ;Output:
|
---|
83 | ; Function Value - 1 on success, 0 on failure.
|
---|
84 | ; TLOG() array, pass by reference. Subscripts are
|
---|
85 | ; "PAT" - value of the IVM PATIENT field (#.01) which is the ien of record in the IVM PATIENT file.
|
---|
86 | ; "DFN" - ien, PATIENT file
|
---|
87 | ; "DT/TM SENT" - value of the TRANSMISSION DATE/TIME field (#.02)
|
---|
88 | ; "STATUS" - value of the STATUS field (#.03)
|
---|
89 | ; "ERROR" - value of the ERROR MESSAGE field (#.04)
|
---|
90 | ; "MSGID" - value of the MESSAGE CONTROL ID field (#.05)
|
---|
91 | ; "EVENTS","IVM" - value of the IVM EVENT (#30.01) field
|
---|
92 | ; "EVENTS","DCD" - value of the DCD EVENT (#30.02) field
|
---|
93 | ; "EVENTS","ENROLL" - value of the ENROLLMENT EVENT (#30.03) field
|
---|
94 | ; "DT/TM ACK" - value of the DATE/TIME ACK RECEIVED (#.06) field
|
---|
95 | ; "ERROR STATUS" - value of the ERROR PROCESSING STATUS (#.07) field
|
---|
96 | ; "MT STATUS" - value of the MEANS TEST STATUS field (#1.01)
|
---|
97 | ; "INS STATUS" - value of the INSURANCE STATUS field (#1.02)
|
---|
98 | ;
|
---|
99 | N NODE
|
---|
100 | K TLOG S TLOG=""
|
---|
101 | Q:'$G(IEN) 0
|
---|
102 | S NODE=$G(^IVM(301.6,IEN,0))
|
---|
103 | Q:(NODE="") 0
|
---|
104 | S TLOG("PAT")=$P(NODE,"^")
|
---|
105 | S TLOG("DFN")=$S(TLOG("PAT"):$P(^IVM(301.5,TLOG("PAT"),0),"^"),1:"")
|
---|
106 | S TLOG("DT/TM SENT")=$P(NODE,"^",2)
|
---|
107 | S TLOG("STATUS")=$P(NODE,"^",3)
|
---|
108 | S TLOG("ERROR")=$P(NODE,"^",4)
|
---|
109 | S TLOG("MSGID")=$P(NODE,"^",5)
|
---|
110 | S TLOG("DT/TM ACK")=$P(NODE,"^",6)
|
---|
111 | S TLOG("ERROR STATUS")=$P(NODE,"^",7)
|
---|
112 | S NODE=$G(^IVM(301.6,IEN,"E"))
|
---|
113 | S TLOG("EVENTS","IVM")=$P(NODE,"^")
|
---|
114 | S TLOG("EVENTS","DCD")=$P(NODE,"^",2)
|
---|
115 | S TLOG("EVENTS","ENROLL")=$P(NODE,"^",3)
|
---|
116 | S NODE=$G(^IVM(301.6,IEN,1))
|
---|
117 | S TLOG("MT STATUS")=$P(NODE,"^")
|
---|
118 | S TLOG("INS STATUS")=$P(NODE,"^",2)
|
---|
119 | Q 1
|
---|
120 | ;
|
---|
121 | LOG(PAT,WHEN,MSGID,EVENTS,MTSTAT,INSSTAT) ;
|
---|
122 | ;Description: Called after completing a transmission for a particular
|
---|
123 | ;patient. It creates a new record in the IVM TRANSMISSION LOG file.
|
---|
124 | ;
|
---|
125 | ;Input:
|
---|
126 | ; PAT - ien of record in the IVM PATIENT file.
|
---|
127 | ; WHEN - date/time message sent, in FM format.
|
---|
128 | ; MSGID - message id used for message, in format used by MESSAGE CONTROL ID field.
|
---|
129 | ; EVENTS () - an array of reasons for transmission, pass by reference.
|
---|
130 | ; EVENTS("IVM") = 1 if transmission due to IVM criteria, 0 otherwise
|
---|
131 | ; EVENTS("DCD")=1 if transmission due to DCD criteria, 0 otherwise
|
---|
132 | ; EVENTS("ENROLL")=1 if transmission due to enrollment criteria, 0 otherwise
|
---|
133 | ; MTSTAT - pointer to the MEANS TEST STATUS file. Is the status of the patient's means test at the time of the transmission for the income year of the transmission. (Optional)
|
---|
134 | ; INSSTAT - 1 if the patient had active insurance at the time of the transmission, 0 otherwise. (Optional)
|
---|
135 | ;
|
---|
136 | ;Output:
|
---|
137 | ; Function Value - If successful, returns the internal entry number of the record in the IVM TRANSMSISION LOG file, otherwise returns NULL.
|
---|
138 | ;
|
---|
139 | Q:'$$TESTVAL^DGENDBS(301.6,.01,PAT) ""
|
---|
140 | Q:'$$TESTVAL^DGENDBS(301.6,.02,WHEN) ""
|
---|
141 | ;
|
---|
142 | ;skip this test - msgid is created by HL7 pkg, they can change it, so do not want to pass it by IVM's input transform
|
---|
143 | ;Q:'$$TESTVAL^DGENDBS(301.6,.05,MSGID) ""
|
---|
144 | ;
|
---|
145 | I ($G(MTSTAT)'=""),'$$TESTVAL^DGENDBS(301.6,1.01,MTSTAT) Q ""
|
---|
146 | I ($G(INSSTAT)'=""),'$$TESTVAL^DGENDBS(301.6,1.02,INSSTAT) Q ""
|
---|
147 | ;
|
---|
148 | N DATA
|
---|
149 | S DATA(.01)=PAT,DATA(.02)=WHEN,DATA(.03)=0,DATA(.05)=MSGID
|
---|
150 | S:($G(MTSTAT)'="") DATA(1.01)=MTSTAT
|
---|
151 | S:($G(INSSTAT)'="") DATA(1.02)=INSSTAT
|
---|
152 | S:($G(EVENTS("IVM"))=1) DATA(30.01)=1
|
---|
153 | S:($G(EVENTS("DCD"))=1) DATA(30.02)=1
|
---|
154 | S:($G(EVENTS("ENROLL"))=1) DATA(30.03)=1
|
---|
155 | Q $$ADD^DGENDBS(301.6,,.DATA)
|
---|
156 | ;
|
---|
157 | DELETE(IEN) ;
|
---|
158 | ;Description: Used to delete a record in the IVM TRANSMISSION LOG file.
|
---|
159 | ;
|
---|
160 | ;Input:
|
---|
161 | ; IEN - the internal entry number for a record in the IVM TRANSMISSION LOG file
|
---|
162 | ;Output:
|
---|
163 | ; Function Value - 1 on success, 0 on failure
|
---|
164 | ;
|
---|
165 | Q:'$G(IEN) 1
|
---|
166 | ;
|
---|
167 | Q:'$$LOCK(IEN) 0
|
---|
168 | ;
|
---|
169 | N DIK,DA
|
---|
170 | S DIK="^IVM(301.6,"
|
---|
171 | S DA=IEN
|
---|
172 | D ^DIK
|
---|
173 | D UNLOCK(IEN)
|
---|
174 | Q 1
|
---|
175 | ;
|
---|
176 | EXT(SUB,VAL) ;
|
---|
177 | ;Description: Given the subscript used in the IVM TRANSMISSION LOG
|
---|
178 | ; array and a field value, returns the external representation of the
|
---|
179 | ; value, as defined in the fields output transform of the IVM
|
---|
180 | ; TRANSMISSION LOG file.
|
---|
181 | ;Input:
|
---|
182 | ; SUB - array subscript
|
---|
183 | ; VAL - field value
|
---|
184 | ;Output:
|
---|
185 | ; Function Value - returns the external value of the field
|
---|
186 | ;
|
---|
187 | Q:(($G(SUB)="")!($G(VAL)="")) ""
|
---|
188 | ;
|
---|
189 | N FLD
|
---|
190 | S FLD=$S(SUB="PAT":.01,SUB="DT/TM SENT":.02,SUB="STATUS":.03,SUB="ERROR":.04,SUB="MSGID":.05,SUB="DT/TM ACK":.06,SUB="ERROR STATUS":.07,SUB="IVM":30.01,SUB="DCD":30.02,SUB="ENROLL":30.03,SUB="MT STATUS":1.01,SUB="INS STATUS":1.02,1:"")
|
---|
191 | ;
|
---|
192 | Q:(FLD="") ""
|
---|
193 | Q $$EXTERNAL^DILFD(301.6,FLD,"F",VAL)
|
---|