1 | VAFHADT2 ;ALB/RJS - HL7 ADT MESSAGE BUILDING ROUTINE - MAY 18,1995 ; 3/6/06 8:08am
|
---|
2 | ;;5.3;Registration;**91,692**;Jun 06, 1996
|
---|
3 | ;hl7v1.6
|
---|
4 | ;
|
---|
5 | ;This routine builds ADT HL7 messages: A01 = Admission
|
---|
6 | ; A02 = Transfer
|
---|
7 | ; A03 = Discharge
|
---|
8 | ; A08 = Update
|
---|
9 | ; A11 = Cancel Admission
|
---|
10 | ; A12 = Cancel Transfer
|
---|
11 | ; A13 = Cancel Discharge
|
---|
12 | ;
|
---|
13 | ;It is called by VAFHADT1, which is itself is called by the
|
---|
14 | ;DGPM patient movement event driver.
|
---|
15 | ;
|
---|
16 | ;
|
---|
17 | BLDMSG(DFN,EVENT,VAFHDT,EVCODE,IEN,PIVOT,PV1) ;
|
---|
18 | ;Required Variables are: DFN = IEN of Patient File
|
---|
19 | ; EVENT = HL7 Event, A01, A02, A03, etc.
|
---|
20 | ; VAFHDT = Date/Time of Admission, Transfer, etc
|
---|
21 | ;
|
---|
22 | ;Optional Variables are: Event Code = (EVCODE):A string literal which is
|
---|
23 | ; inserted in the Event Reason
|
---|
24 | ; Code Field of the EVN segment
|
---|
25 | ; of the message. This serves to
|
---|
26 | ; indicate that the message might
|
---|
27 | ; need to be processed in a special
|
---|
28 | ; way. PIMS ADT software uses the
|
---|
29 | ; Event Code to indicate whether
|
---|
30 | ; the message is the most recent
|
---|
31 | ; "Snapshot" of the data "05" or
|
---|
32 | ; a "Snapshot" of data that is
|
---|
33 | ; followed by more recent data "04"
|
---|
34 | ;
|
---|
35 | ;
|
---|
36 | ; IEN = The IEN of the Patient Movement
|
---|
37 | ; that the HL7 message is being
|
---|
38 | ; built from. This is especially
|
---|
39 | ; useful for Discharge Movements
|
---|
40 | ; where date/time (VAFHDT) is not
|
---|
41 | ; enough information to retrieve
|
---|
42 | ; the movement
|
---|
43 | ;
|
---|
44 | ; PIVOT = The PIMS Pivot number that
|
---|
45 | ; uniquely identifies the ADMISSION
|
---|
46 | ;
|
---|
47 | ; PV1 = In the case of a "Deleted
|
---|
48 | ; Admission" the record in the
|
---|
49 | ; Patient Movement File has already
|
---|
50 | ; been deleted. But, a PV1 segment
|
---|
51 | ; can be built from the DGPMP
|
---|
52 | ; variable that has been saved off
|
---|
53 | ; by the DGPM Event Driver. This
|
---|
54 | ; PV1 segment is passed a string
|
---|
55 | ; literal that is built by a call
|
---|
56 | ; to DGBUILD^VAFHAPV1 previous to
|
---|
57 | ; calling this software.
|
---|
58 | ;
|
---|
59 | K HLA N VAFDIAG
|
---|
60 | ;Q:($G(EVCODE)'="05")
|
---|
61 | ;D INIT^HLTRANS
|
---|
62 | K HL D INIT^HLFNC2("VAFH "_EVENT,.HL)
|
---|
63 | I $D(HL)=1 G EXIT
|
---|
64 | S HLA("HLS",2)=$$EN^VAFHLPID(DFN,",2,3,5,7,8,19")
|
---|
65 | S $P(HLA("HLS",2),HLFS,2)=1 ;SET ID
|
---|
66 | ;MERGE HLA("HLS",2)=VAFPID
|
---|
67 | S HLA("HLS",3)=$$EN^VAFHLZPD(DFN,",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15")
|
---|
68 | S $P(HLA("HLS",3),HLFS,2)=1 ;SET ID
|
---|
69 | I EVENT="A11" D G NEXT
|
---|
70 | . S HLA("HLS",4)=PV1
|
---|
71 | . S $P(HLA("HLS",4),HLFS,51)=$G(PIVOT) ; VISIT&SET ID'S
|
---|
72 | I EVENT="A01"!(EVENT="A03")!(EVENT="A08")!(EVENT="A12")!(EVENT="A13") D G NEXT
|
---|
73 | . S HLA("HLS",4)=$$IN^VAFHLPV1(DFN,VAFHDT,",2,3,7,8,10,19,44,45",$G(IEN),PIVOT,"",.VAFDIAG)
|
---|
74 | I EVENT="A02" D G NEXT
|
---|
75 | . S HLA("HLS",4)=$$IN^VAFHLPV1(DFN,VAFHDT,",2,3,6,7,8,10,19,44,45",$G(IEN),PIVOT,"",.VAFDIAG)
|
---|
76 | G EXIT
|
---|
77 | NEXT ;
|
---|
78 | S $P(HLA("HLS",4),HLFS,2)=1
|
---|
79 | S HLA("HLS",1)="EVN"_HLFS_EVENT_HLFS_$$HLDATE^HLFNC(VAFHDT,"TS")_HLFS
|
---|
80 | S HLA("HLS",1)=HLA("HLS",1)_HLFS_$G(EVCODE)
|
---|
81 | I (EVENT="A01")!(EVENT="A08")!(EVENT="A11")!(EVENT="A12")!(EVENT="A13") S HLA("HLS",6)="DG1"_HLFS_1_HLFS_HLFS_HLFS_$$HLQ^VAFHUTL($G(VAFDIAG))
|
---|
82 | ;Get patient directory call center parameter
|
---|
83 | N VAFCCON
|
---|
84 | S VAFCCON=$$GET^XPAR("SYS","DG PT DIRECTORY CALL CENTER")
|
---|
85 | I VAFCCON S HLA("HLS",5)=$$EN^VAFHLPV2(DFN,IEN,",22,")
|
---|
86 | D:$D(VATRACE) LOOP
|
---|
87 | ;
|
---|
88 | S COUNTER=""
|
---|
89 | F S COUNTER=$O(HLA("HLS",COUNTER)) Q:COUNTER'>0 D
|
---|
90 | .; I +(HLA("HLS",COUNTER))=-1 S HLERR="Bad "_COUNTER_" Segment"
|
---|
91 | . I +(HLA("HLS",COUNTER))=-1 S HL="Bad "_COUNTER_" Segment"
|
---|
92 | .
|
---|
93 | ;
|
---|
94 | EXIT ;
|
---|
95 | ;I $D(HLERR) D
|
---|
96 | I $D(HL)=1 DO
|
---|
97 | . S HLERR(1)=HL
|
---|
98 | . D EBULL^VAFHUTL2(DFN,VAFHDT,PIVOT,"HLERR(")
|
---|
99 | ;I '$D(HLERR)&($D(HLSDATA)) S HLMTN="ADT"_$E(HLECH)_EVENT D EN^HLTRANS
|
---|
100 | I $D(HL)>1,$D(HLA("HLS")) S HLMTN="ADT"_$E(HL("ECH"))_EVENT DO
|
---|
101 | .D GENERATE^HLMA("VAFH "_EVENT,"LM",1,.HLRST)
|
---|
102 | D KVAR^VADPT,KVAR^VAFHLPV1 K HLA,HLERR
|
---|
103 | Q
|
---|
104 | LOOP ;
|
---|
105 | ;
|
---|
106 | ;
|
---|
107 | W !!
|
---|
108 | N XX S XX=0
|
---|
109 | F S XX=$O(HLA("HLS",XX)) Q:XX="" W !,HLA("HLS",XX)
|
---|
110 | Q
|
---|