1 | XUHUIHL7 ;OAKCIOFO/JG - HL7 GENERATION ROUTINE; 06/010/2002
|
---|
2 | ;;8.0;KERNEL;**239**;JUL 10, 1995
|
---|
3 | ; Supported by IA#3589
|
---|
4 | ; This routine generates an HL7 MFN Staff message based on data
|
---|
5 | ; passed by the XUHUI FIELD CHANGE EVENT protocol to the XUHUI SEND HL7
|
---|
6 | ; MSG protocol. This data is based on change in value of fields in the
|
---|
7 | ; NEW PERSON (#200) file and in the the KEY (#200.051) multiple.
|
---|
8 | ; The following fields are monitored for the NEW PERSON file:
|
---|
9 | ; .01 NAME
|
---|
10 | ; 9.2 TERMINATION DATE
|
---|
11 | ; 5 DOB
|
---|
12 | ; 9 SSN
|
---|
13 | ; The Provider key is monitored for the KEY subfile.
|
---|
14 | ;
|
---|
15 | ; Input:
|
---|
16 | ; XUHUIXR - Name of xref being passed by protocols
|
---|
17 | ; "AXUHUI": file 200 updated;
|
---|
18 | ; "AXUHUIKEY": file 200.051 updated
|
---|
19 | ; XUHUIA - "S": logic executed; "K": kill logic executed
|
---|
20 | ; XUHUIX2 - X2 array with file 200 content
|
---|
21 | ; XUHUIDA - DA array
|
---|
22 | ;
|
---|
23 | ; Output: none
|
---|
24 | ; Postcondition:
|
---|
25 | ; - An HL7 MFN message is generated that contains the structure
|
---|
26 | ; MSH MFI MFE STF
|
---|
27 | ;
|
---|
28 | N XUHUIERR,NAME,SSN,DOB,TERMDATE,ACTIVE
|
---|
29 | Q:XUHUIXR'["AXUHUI"
|
---|
30 | I XUHUIXR="AXUHUI" D F200
|
---|
31 | I XUHUIXR="AXUHUIKEY" D FKEY
|
---|
32 | Q:$G(XUHUIERR)
|
---|
33 | D SENDMSG
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | F200 ; NEW PERSON file was updated
|
---|
37 | ; XUHUIX2(1)=NAME
|
---|
38 | ; XUHUIX2(2)=TERMINATION DATE
|
---|
39 | ; XUHUIX2(3)=DOB
|
---|
40 | ; XUHUIX2(4)=SSN
|
---|
41 | ; XUHUIDA=file 200 ien
|
---|
42 | I '$D(XUHUIX2) S XUHUIERR="1^no XUHUIX2 array" Q
|
---|
43 | S IEN=XUHUIDA
|
---|
44 | ; TERMINATION DATE determines Active/Inactive
|
---|
45 | S ACTIVE=$S($G(XUHUIX2(2))]"":"I",1:"A")
|
---|
46 | ; get newest values for name, ssn, dob, and termination date
|
---|
47 | S NAME=$S($G(XUHUIX2(1))="":"""""",1:XUHUIX2(1))
|
---|
48 | S SSN=$S($G(XUHUIX2(4))="":"""""",1:XUHUIX2(4))
|
---|
49 | S DOB=$$FMTHL7^XLFDT($G(XUHUIX2(3)))
|
---|
50 | S DOB=$S(DOB="":"""""",1:DOB)
|
---|
51 | S TERMDATE=$$FMTHL7^XLFDT($G(XUHUIX2(2)))
|
---|
52 | S TERMDATE=$S(TERMDATE="":"""""",1:TERMDATE)
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | FKEY ; PROVIDER key was updated
|
---|
56 | ; XUHUIDA(1)=file 200 ien
|
---|
57 | ; XUHUIA= S or K
|
---|
58 | I '$G(XUHUIDA(1)) S XUHUIERR="1^no IEN" Q
|
---|
59 | S IEN=XUHUIDA(1) ; ien of provider staff
|
---|
60 | ; XUHUIA determines Active/Inactive
|
---|
61 | S ACTIVE=$S($G(XUHUIA)="K":"I",1:"A")
|
---|
62 | ; get newest values for name, ssn, dob, and termination date
|
---|
63 | S NAME=$$GET1^DIQ(200,IEN_",","NAME")
|
---|
64 | S NAME=$S(NAME="":"""""",1:NAME)
|
---|
65 | S SSN=$$GET1^DIQ(200,IEN_",","SSN")
|
---|
66 | S SSN=$S(SSN="":"""""",1:SSN)
|
---|
67 | S DOB=$$GET1^DIQ(200,IEN_",","DOB","I")
|
---|
68 | S DOB=$S(DOB="":"""""",1:$$FMTHL7^XLFDT(DOB))
|
---|
69 | S TERMDATE=$$GET1^DIQ(200,IEN_",","TERMINATION DATE","I")
|
---|
70 | S TERMDATE=$S(TERMDATE="":"""""",1:$$FMTHL7^XLFDT(TERMDATE))
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | SENDMSG ; initialize HL variables
|
---|
74 | N HL,NOW,RESULT
|
---|
75 | D INIT^HLFNC2("XUHUI MFN",.HL)
|
---|
76 | I $G(HL) D Q ; error occurred
|
---|
77 | . S XUHUIERR="1^HL init"
|
---|
78 | S HLFS=$G(HL("FS")) S:HLFS="" HLFS="^"
|
---|
79 | S HLCS=$E(HL("ECH"),1)
|
---|
80 | ;
|
---|
81 | ; create message
|
---|
82 | S NOW=$$FMTHL7^XLFDT($$NOW^XLFDT)
|
---|
83 | ; MFI^PRA^VA KERNEL^UPD^entered date^^NE
|
---|
84 | S HLA("HLS",1)="MFI"_HLFS_"PRA"_HLFS_"VA KERNEL"_HLFS_"UPD"_HLFS_NOW_HLFS_HLFS_"NE"
|
---|
85 | ; MFE^MUP^^^ien~IEN~NEW PERSON
|
---|
86 | S HLA("HLS",2)="MFE"_HLFS_"MUP"_HLFS_HLFS_HLFS_IEN_HLCS_"IEN"_HLCS_"NEW PERSON"
|
---|
87 | ; STF^ssn~NEW PERSON~SSN^^name^^^dob^active/inactive^^^^^^inactive date
|
---|
88 | S HLA("HLS",3)="STF"_HLFS_IEN_HLCS_"IEN"_HLCS_"NEW PERSON"_HLFS_SSN_HLCS_HLCS_HLCS_"SSN"_HLFS_NAME_HLFS_HLFS_HLFS_DOB_HLFS_ACTIVE_HLFS_HLFS_HLFS_HLFS_HLFS_HLFS_TERMDATE
|
---|
89 | ; generate message
|
---|
90 | D GENERATE^HLMA("XUHUI MFN","LM",1,.RESULT,"",.HL)
|
---|
91 | I +$P(RESULT,U,2) D Q
|
---|
92 | . S XUHUIERR="1^HL Generate"
|
---|
93 | Q
|
---|
94 | ;
|
---|