1 | IVMPREC5 ;ALB/KCL - PROCESS INCOMING (Z03 EVENT TYPE) HL7 MESSAGES ; 3/6/01 4:42pm
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**2,17,34**;21-OCT-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; This routine will process batch ORU SSN(event type Z03) HL7
|
---|
6 | ; messages received from the IVM center. Format of batch:
|
---|
7 | ; BHS
|
---|
8 | ; {MSH
|
---|
9 | ; PID
|
---|
10 | ; ZIV
|
---|
11 | ; }
|
---|
12 | ; BTS
|
---|
13 | ;
|
---|
14 | EN ; entry point to process SSN messages
|
---|
15 | ;
|
---|
16 | F IVMDA=1:0 S IVMDA=$O(^TMP($J,IVMRTN,IVMDA)) Q:'IVMDA S IVMSEG=$G(^(IVMDA,0)) I $E(IVMSEG,1,3)="MSH" D
|
---|
17 | .K HLERR
|
---|
18 | .S HLMID=$P(IVMSEG,HLFS,10) ; message control id from MSH
|
---|
19 | .S IVMDA=$O(^TMP($J,IVMRTN,IVMDA)),IVMSEG=$G(^(+IVMDA,0)) I $E(IVMSEG,1,3)'="PID" D Q
|
---|
20 | ..S HLERR="Missing PID segment" D ACK^IVMPREC
|
---|
21 | .S DFN=$P($P(IVMSEG,HLFS,4),$E(HLECH),1)
|
---|
22 | .I ('DFN!(DFN'=+DFN)!('$D(^DPT(+DFN,0)))) D Q
|
---|
23 | ..S HLERR="Invalid DFN" D ACK^IVMPREC
|
---|
24 | .I $P(IVMSEG,HLFS,20)'=$P(^DPT(DFN,0),"^",9) D Q
|
---|
25 | ..S HLERR="Couldn't match IVM SSN with DHCP SSN" D ACK^IVMPREC
|
---|
26 | .S IVMDA=$O(^TMP($J,IVMRTN,IVMDA)),IVMSEG=$G(^(+IVMDA,0)) I $E(IVMSEG,1,3)'="ZIV" D Q
|
---|
27 | ..S HLERR="Missing ZIV segment" D ACK^IVMPREC
|
---|
28 | .S IVMSEG=$P(IVMSEG,HLFS,2,999),IVMIY=$P(IVMSEG,HLFS,2)
|
---|
29 | .S IVMIY=$$FMDATE^HLFNC(IVMIY) I $E(IVMIY,4,7)'="0000"!($E(IVMIY,1,3)<292) S HLERR="Invalid Income Year" D ACK^IVMPREC Q
|
---|
30 | .;
|
---|
31 | .I $P(IVMSEG,"^",4)=$P($G(^DPT(DFN,0)),"^",9) D Q
|
---|
32 | ..S HLERR="Client SSN already on file in DHCP" D ACK^IVMPREC Q
|
---|
33 | .I $P(IVMSEG,"^",6)]"",$P(IVMSEG,"^",7)']"" D Q
|
---|
34 | ..S HLERR="Missing spouse IEN" D ACK^IVMPREC Q
|
---|
35 | .I $P(IVMSEG,"^",6)]"",($P(IVMSEG,"^",6)=$P($$DEM^DGMTU1(+$P(IVMSEG,"^",7)),"^",9)) D Q
|
---|
36 | ..S HLERR="Spouse SSN already on file in DHCP" D ACK^IVMPREC Q
|
---|
37 | .;
|
---|
38 | .I $P(IVMSEG,"^",4)="",($P(IVMSEG,"^",6)=""!($P(IVMSEG,"^",7)="")) D Q
|
---|
39 | ..S HLERR="Missing client/spouse SSNs" D ACK^IVMPREC Q
|
---|
40 | .;
|
---|
41 | .D SSNCK I $D(HLERR) D ACK^IVMPREC Q
|
---|
42 | .D STORE
|
---|
43 | ;
|
---|
44 | ; - send notification message if necessary
|
---|
45 | I IVMCNTR D MAIL^IVMUFNC()
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | SSNCK ; check to make sure the SSN(s) are valid SSA SSNs
|
---|
49 | ;
|
---|
50 | N FLAG,L,X
|
---|
51 | S FLAG=0 ; set to 1 if problem with SSN
|
---|
52 | ;
|
---|
53 | F X=$P(IVMSEG,"^",4),$P(IVMSEG,"^",6) Q:FLAG D
|
---|
54 | .S L=$E(X,1,3)
|
---|
55 | .I L="000" S FLAG=1 Q ; begins with 000
|
---|
56 | .I L>649,(L<700) S FLAG=1 Q ; 650-699 invalid
|
---|
57 | .I L>728 S FLAG=1 Q ; 729-999 invalid
|
---|
58 | I FLAG S HLERR="Invalid SSN sent"
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | STORE ; store the ZIV segment in the (#301.5) file for uploading
|
---|
62 | ;
|
---|
63 | ; check for patient case record
|
---|
64 | S DA(1)=$O(^IVM(301.5,"B",+DFN,0)),X=$$IEN^IVMUFNC4("ZIV")
|
---|
65 | I DA(1)']"" S HLERR="Patient missing from IVM PATIENT file" D ACK^IVMPREC Q
|
---|
66 | I $G(^IVM(301.5,DA(1),"IN",0))']"" S ^(0)="^301.501PA^^"
|
---|
67 | S DIC="^IVM(301.5,"_DA(1)_",""IN"",",DIC(0)="L",DLAYGO=301.501
|
---|
68 | S DIC("DR")="10////^S X=IVMSEG"
|
---|
69 | K DD,DO D FILE^DICN
|
---|
70 | ;
|
---|
71 | ;
|
---|
72 | STOREQ K DA,DIC,DIE,X,Y
|
---|
73 | ;
|
---|
74 | ;
|
---|
75 | ; build mail message if SUPPRESS SSN UPLOAD NOTIFICATION is not set
|
---|
76 | Q:$P($G(^IVM(301.9,1,0)),"^",3)
|
---|
77 | ;
|
---|
78 | ;
|
---|
79 | ZIVBULL ; build mail message for transmission to IVM mail group notifying them
|
---|
80 | ; that patients with updated SSA/SSN's have been received from the
|
---|
81 | ; IVM Center and may now be uploaded into DHCP.
|
---|
82 | ;
|
---|
83 | S XMSUB="IVM - SSN UPLOAD"
|
---|
84 | S IVMTEXT(1)="Updated SSA/SSNs have been received from the Income Verification"
|
---|
85 | S IVMTEXT(2)="Match Center. Please select the 'SSN Upload' (SSN) option from the"
|
---|
86 | S IVMTEXT(3)="'IVM Upload Menu' in order to view/update these SSA/SSNs. If you"
|
---|
87 | S IVMTEXT(4)="have any questions concerning these updated SSA/SSNs, please contact"
|
---|
88 | S IVMTEXT(5)="the Income Verification Match Center."
|
---|
89 | S IVMTEXT(6)=""
|
---|
90 | S IVMTEXT(7)="The following patients have SSA/SSNs to be viewed/updated: "
|
---|
91 | S IVMTEXT(8)=" "
|
---|
92 | S IVMCNTR=IVMCNTR+1
|
---|
93 | S IVMPTID=$$PT^IVMUFNC4(DFN)
|
---|
94 | S IVMTEXT(IVMCNTR+8)=$J(IVMCNTR_")",5)_" "_$P(IVMPTID,"^")_" ("_$P(IVMPTID,"^",3)_")"
|
---|
95 | Q
|
---|