1 | IVMPTRN4 ;ALB/SEK - SEND RE-TRANSMISSIONS TO THE IVM CENTER ; 08/20/2003
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**9,11,17,34,66,81,86**; 21-OCT-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; This routine checks STATUS field of IVM TRANSMISSION LOG file (301.6)
|
---|
6 | ; to see if acknowledgment of the transmission has been received from
|
---|
7 | ; the IVM Center. If transmission is waiting at the site, a message is
|
---|
8 | ; sent to the recipients of the IVM MESSAGES mail group. Else the
|
---|
9 | ; message is re-transmitted to the IVM Center.
|
---|
10 | ;
|
---|
11 | ;
|
---|
12 | ENTRY ; Check if message transmission has not been acknowledged for the
|
---|
13 | ; following date range (IVMDMT3 through IVM14) where:
|
---|
14 | ; IVMDMT3 - First Date Checked
|
---|
15 | ; IVM14 - Last Date Checked
|
---|
16 | ;
|
---|
17 | S IVMDTM3=$$FMADD^XLFDT(DT,-14),IVM14=$$FMADD^XLFDT(DT,-14)
|
---|
18 | S IVMDTMST=+$P($G(^IVM(301.9,1,0)),"^",6)
|
---|
19 | S:IVMDTMST<IVM14 IVMDTMST=IVM14
|
---|
20 | ;
|
---|
21 | ; INITIALIZE HL7 VARIABLES
|
---|
22 | N HL,HLEID
|
---|
23 | S HLEID="VAMC "_$P($$SITE^VASITE,"^",3)_" ORU-Z07 SERVER"
|
---|
24 | S HLEID=$O(^ORD(101,"B",HLEID,0))
|
---|
25 | D INIT^IVMUFNC(HLEID,.HL) S HLMTN="ORU" ; Initialize variables for HL7/IVM
|
---|
26 | ;
|
---|
27 | ; check Transmission Date/Time in AB x-ref
|
---|
28 | ; Note 2 oddities about this loop:
|
---|
29 | ; 1) Only checks back 2 weeks, if somehow retransmission not done within this window then it won't be done.
|
---|
30 | ; 2) Assumes IVMDAT will map to exactly one msgid for HL7 message - assumption made in $$MSGN^IVMPTRN4.
|
---|
31 | ;
|
---|
32 | S IVMDAT=IVMDTMST F S IVMDAT=$O(^IVM(301.6,"AB",IVMDAT)) Q:'IVMDAT!($P(IVMDAT,".")>IVMDTM3) D MAILMSGN
|
---|
33 | ;
|
---|
34 | ;
|
---|
35 | ;transmit remaining records
|
---|
36 | D
|
---|
37 | .N IVMEVENT
|
---|
38 | .; event code for Full Data Transmission
|
---|
39 | .S IVMEVENT="Z07"
|
---|
40 | .D FILE^IVMPTRN3
|
---|
41 | ;
|
---|
42 | ;clean-up
|
---|
43 | D END^IVMPTRN
|
---|
44 | ;
|
---|
45 | ENTRYQ K IVMDAT,IVMMAILF,IVMDTM3,IVMDTMST,IVM14
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | ;
|
---|
49 | MAILMSGN ; Get Mailman message number related to this transmission
|
---|
50 | S IVMMAILN=$$MSGN(IVMDAT) ;returns #773 IEN for v1.6
|
---|
51 | ;
|
---|
52 | Q:'IVMMAILN ; if no #773 IEN found
|
---|
53 | ;
|
---|
54 | ; find if awaiting initial transmission
|
---|
55 | N SLLN
|
---|
56 | S SLLN=+$P($G(^HLMA(IVMMAILN,0)),"^",7) ; sending logical link
|
---|
57 | I SLLN,$D(^HLMA("AC","O",SLLN,IVMMAILN)) D Q
|
---|
58 | .Q:$G(IVMMAILF) ; already sent message once
|
---|
59 | .S XMSUB="MESSAGES 'AWAITING TRANSMISSION'"
|
---|
60 | .S IVMTEXT(1)="HL7 message number "_IVMMAILN_" is awaiting transmission."
|
---|
61 | .S IVMTEXT(2)="Please call the IVM Center (Atlanta, GA) to ensure the HL7 logical links and filers are running "
|
---|
62 | .S IVMTEXT(3)="if the HL7 logical link and filers are running at your station."
|
---|
63 | .S IVMTEXT(4)=" "
|
---|
64 | .S IVMTEXT(5)="Please note that you may have other messages that are awaiting transmission"
|
---|
65 | .S IVMTEXT(6)="to the IVM Center."
|
---|
66 | .D MAIL^IVMUFNC()
|
---|
67 | .S IVMMAILF=1
|
---|
68 | ;
|
---|
69 | ; Transmission has left site - get individual patient and re-transmit
|
---|
70 | K IVMQUERY("LTD"),IVMQUERY("OVIS") ;Variables needed to open/close last visit date and outpt visit QUERIES
|
---|
71 | F IVMDA=0:0 S IVMDA=$O(^IVM(301.6,"AB",IVMDAT,IVMDA)) Q:'IVMDA D
|
---|
72 | .;
|
---|
73 | .N IVMTLOG,EVENTS
|
---|
74 | .;
|
---|
75 | .Q:'$$GET^IVMTLOG(IVMDA,.IVMTLOG)
|
---|
76 | .S IVM3015P=IVMTLOG("PAT") Q:'IVM3015P
|
---|
77 | .S IVMNODE=$G(^IVM(301.5,+IVM3015P,0)),IVMDT=+$P(IVMNODE,"^",2),DFN=+IVMNODE
|
---|
78 | .I 'DFN!'IVMDT Q
|
---|
79 | .S IVMMTDT=($E(IVMDT,1,3)+1)_"1231.9999"
|
---|
80 | .I $E(IVMMTDT,1,3)'=($E(IVMDT,1,3)+1) S IVMMTDT=$E(IVMDT,1,3)+1_"0101"
|
---|
81 | .;
|
---|
82 | .M EVENTS=IVMTLOG("EVENTS")
|
---|
83 | .;
|
---|
84 | .; Prepare FULL transmission
|
---|
85 | .D FULL^IVMPTRN7(DFN,IVMMTDT,.EVENTS,.IVMCT,.IVMGTOT,,,,.IVMQUERY)
|
---|
86 | .;
|
---|
87 | .;change status to retransmitted
|
---|
88 | .I $$SETSTAT^IVMTLOG(IVMDA,2)
|
---|
89 | F Z="LTD","OVIS" I $G(IVMQUERY(Z)) D CLOSE^SDQ(IVMQUERY(Z)) K IVMQUERY(Z)
|
---|
90 | Q
|
---|
91 | ;
|
---|
92 | MSGN(IVMDT) ; Find the mailman message number for an HL7 message
|
---|
93 | ; Input: IVMDT -- The date/time (301.6;.02) the msg was sent
|
---|
94 | ; Output: Pointer to the message in file #773, or zero if not found
|
---|
95 | N IVMMSG,X S IVMMSG=0
|
---|
96 | S X=+$O(^IVM(301.6,"AB",IVMDT,0)),X=$G(^IVM(301.6,X,0))
|
---|
97 | I X S IVMMSG=$$MMN(+$P($P(X,"^",5),"-"))
|
---|
98 | MSGNQ Q IVMMSG
|
---|
99 | ;
|
---|
100 | MMN(Y) ; Do look-up on file #772 and find mail message number.
|
---|
101 | ; Input: Y -- Message Control ID
|
---|
102 | ; Output: Mail Message Number
|
---|
103 | N Z S Z=0
|
---|
104 | S Y=$O(^HL(772,"C",Y,0))
|
---|
105 | I Y S Z=+$O(^HLMA("B",Y,0)) ;Y=#772 IEN, Z=#773 IEN
|
---|
106 | MMNQ Q Z
|
---|