1 | HLFNC2 ;AISC/SAW-Continuation of HLFNC, Additional Functions/Calls Used for HL7 Messages ;12/17/2002 16:40
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**2,26,57,59,101**;Oct 13, 1995
|
---|
3 | INIT(EID,HL,INT) ;Initialize Variables in HL array for Building a Message
|
---|
4 | ;
|
---|
5 | ;This is a subroutine call with parameter passing that returns an
|
---|
6 | ;array of values in the variable specified by the parameter HL. If no
|
---|
7 | ;error occurs, the array of values is returned. Otherwise, the single
|
---|
8 | ;value HL is returned equal to the following: error code^error message
|
---|
9 | ;
|
---|
10 | ;Required Input Parameters
|
---|
11 | ; EID = Name or IEN of the event driver or subscriber protocol in
|
---|
12 | ; Protocol file for which the initialization variables are
|
---|
13 | ; to be returned
|
---|
14 | ; HL = The variable in which the array of values will be returned
|
---|
15 | ; This parameter must be passed by reference
|
---|
16 | ;Optional Input Parameter
|
---|
17 | ; INT = 1 indicates that only array values for internal DHCP
|
---|
18 | ; to DHCP message exchange should be initialized
|
---|
19 | ;
|
---|
20 | ;Check for required input parameter
|
---|
21 | I $G(EID)="" S HL="7^Missing EID Input Parameter" Q
|
---|
22 | I '$D(INT) S INT=0
|
---|
23 | ;Convert EID to IEN if necessary
|
---|
24 | I 'EID S EID=$O(^ORD(101,"B",EID,0)) I 'EID S HL="1^"_$G(^HL(771.7,1,0)) Q
|
---|
25 | N X0,X,X1,X2
|
---|
26 | ;Get node 770 from file 101 and node 0 from file 771
|
---|
27 | S X0=$G(^ORD(101,EID,0))
|
---|
28 | ;if server application is disabled quit
|
---|
29 | I $P(X0,U,3)]"" S HL="16^"_$G(^HL(771.7,16,0)) Q
|
---|
30 | ;if no known clients, set error but allow app to continue
|
---|
31 | I '$D(^ORD(101,EID,775,"B")) S HL="15^"_$G(^HL(771.7,15,0))
|
---|
32 | S X=$G(^ORD(101,EID,770)),X1=$G(^HL(771,+X,0))
|
---|
33 | I X1']"" S HL="14^"_$G(^HL(771.7,14,0)) Q
|
---|
34 | ;Set HL array variables
|
---|
35 | S HL("Q")="""""",HL("FS")=$G(^HL(771,+X,"FS")),HL("ECH")=$G(^("EC")) S:HL("FS")']"" HL("FS")="^" S:HL("ECH")']"" HL("ECH")="~|\&"
|
---|
36 | S HL("SAN")=$P(X1,"^"),HL("SAF")=$P(X1,"^",3) S:$P(X1,"^",7) HL("CC")=$P($G(^HL(779.004,$P(X1,"^",7),0)),"^")
|
---|
37 | S HL("MTN")=$P($G(^HL(771.2,+$P(X,"^",3),0)),"^"),HL("ETN")=$P($G(^HL(779.001,+$P(X,"^",4),0)),"^")
|
---|
38 | S:$P(X,"^",5) HL("MTN_ETN")=$P($G(^HL(779.005,+$P(X,"^",5),0)),"^")
|
---|
39 | S HL("PID")=$S($P(X,"^",6)="D":"D",1:$P($$PARAM^HLCS2,"^",3)),HL("VER")=$P($G(^HL(771.5,+$P(X,"^",10),0)),"^")
|
---|
40 | S:$P(X,"^",9) HL("APAT")=$P($G(^HL(779.003,$P(X,"^",9),0)),"^")
|
---|
41 | I 'INT S:$P(X,"^",8) HL("ACAT")=$P($G(^HL(779.003,$P(X,"^",8),0)),"^")
|
---|
42 | ;-- Set variables for backwards compatablity
|
---|
43 | S HLQ=HL("Q"),HLFS=HL("FS"),HLECH=HL("ECH")
|
---|
44 | Q
|
---|
45 | MSH(HL,MID,RESULT,SECURITY) ;Create an MSH Segment for an Outgoing HL7
|
---|
46 | ;Message
|
---|
47 | ;
|
---|
48 | ;This is a subroutine call with parameter passing that returns an HL7
|
---|
49 | ;Message Header (MSH) segment in the variable RESULT (and possibly
|
---|
50 | ;RESULT(1) if the MSH segment is longer than 245 characters). If the
|
---|
51 | ;required input parameters HL or MID are missing, RESULT is returned
|
---|
52 | ;equal to null
|
---|
53 | ;
|
---|
54 | ;Required Input Parameters
|
---|
55 | ; HL = The array of values returned by the call to INIT^HLFNC2
|
---|
56 | ; MID = The Message Control ID to be included in the MSH segment.
|
---|
57 | ; The Batch Control ID for the batch is returned by the
|
---|
58 | ; call to CREATE^HLTF. The application concatenates a
|
---|
59 | ; sequential number to the batch ID to create the MID
|
---|
60 | ; RESULT = The variable that will be returned to the calling
|
---|
61 | ; application as described above
|
---|
62 | ;Optional Input Parameter
|
---|
63 | ;SECURITY = Security to be included in field #8 of the MSH segment
|
---|
64 | ;
|
---|
65 | ;Check for required parameters
|
---|
66 | I '$D(HL)#2!('$D(MID)) Q ""
|
---|
67 | N X,X1,X2
|
---|
68 | ;Build MSH segment from HL array variables and other input parameters
|
---|
69 | S X="MSH"_HL("FS")_HL("ECH")_HL("FS")_HL("SAN")_HL("FS")_HL("SAF")_HL("FS")_$S($D(HL("RAN")):HL("RAN"),1:"")_HL("FS")_$S($D(HL("RAF")):HL("RAF"),1:"")_HL("FS")_$S($D(HL("DTM")):HL("DTM"),1:"")_HL("FS")
|
---|
70 | S X=X_$S($G(SECURITY)]"":SECURITY,1:"")_HL("FS")_HL("MTN")_$E(HL("ECH"))_HL("ETN")
|
---|
71 | ;Message structure component for HL7 v 2.3.1 and beyond
|
---|
72 | S:$D(HL("MTN_ETN")) X=X_$E(HL("ECH"))_HL("MTN_ETN")
|
---|
73 | S X=X_HL("FS")_MID_HL("FS")_HL("PID")_HL("FS")_HL("VER")
|
---|
74 | S:$D(HL("SN")) $P(X,HL("FS"),13)=HL("SN") S:$D(HL("ACAT")) $P(X,HL("FS"),15)=HL("ACAT") S:$D(HL("APAT")) $P(X,HL("FS"),16)=HL("APAT") S:$D(HL("CC")) $P(X,HL("FS"),17)=HL("CC")
|
---|
75 | ;If continuation pointer variable exists, insert it in piece 14 and
|
---|
76 | ;create new variable X1 if length of X will be greater than 245
|
---|
77 | I $D(HL("CP")) D
|
---|
78 | .I $L(X)+$L(HL("CP"))+2'>245 S $P(X,HL("FS"),14)=HL("CP") Q
|
---|
79 | .S $P(X,HL("FS"),14)="",X1=HL("FS")_$P(X,HL("FS"),15,17),X=$P(X,HL("FS"),1,14)
|
---|
80 | .S X2=$L(X),X=X_$E(HL("CP"),1,(245-X2)),X1=$E(HL("CP"),(246-X2),245)_X1
|
---|
81 | .S X2=$L(X) I $L(X2)<245 S X=X_$E(X1,1,(245-X2)),X1=$E(X1,(246-X2),245)
|
---|
82 | S RESULT=X S:$L($G(X1)) RESULT(1)=X1
|
---|
83 | Q
|
---|
84 | RSPINIT(EIDS,HL) ;Initialize Variables in HL array for Building a Response Message
|
---|
85 | ;
|
---|
86 | ;This is a subroutine call with parameter passing that returns an
|
---|
87 | ;array of values in the variable specified by the parameter HL. If no
|
---|
88 | ;error occurs, the array of values is returned. Otherwise, the single
|
---|
89 | ;value HL is returned equal to the following: error code^error message
|
---|
90 | ;
|
---|
91 | ;Required Input Parameters
|
---|
92 | ; EIDS = Name or IEN of the subscriber protocol in
|
---|
93 | ; Protocol file for which the initialization variables are
|
---|
94 | ; to be returned
|
---|
95 | ; HL = The variable in which the array of values will be returned
|
---|
96 | ; This parameter must be passed by reference
|
---|
97 | ;
|
---|
98 | ;Check for required input parameter
|
---|
99 | I $G(EIDS)="" S HL="7^Missing EIDS Input Parameter" Q
|
---|
100 | ;Convert EIDS to IEN if necessary
|
---|
101 | I 'EIDS S EIDS=$O(^ORD(101,"B",EIDS,0)) I 'EIDS S HL="15^"_"Invalid Subscriber Protocol" Q
|
---|
102 | N X0,X,X1,X2
|
---|
103 | ;Get node 770 from file 101 and node 0 from file 771
|
---|
104 | S X0=$G(^ORD(101,EIDS,0))
|
---|
105 | S X=$G(^ORD(101,EIDS,770)),X1=$G(^HL(771,+$P(X,"^",2),0))
|
---|
106 | I X1']"" S HL="15^"_"Subscriber Application Missing in Protocol File" Q
|
---|
107 | ;Set HL array variables
|
---|
108 | S HL("RFS")=$G(^HL(771,+$P(X,"^",2),"FS")),HL("RECH")=$G(^("EC")) S:HL("RFS")']"" HL("RFS")="^" S:HL("RECH")']"" HL("RECH")="~|\&"
|
---|
109 | S HL("RAN")=$P(X1,"^")
|
---|
110 | S HL("RMTN")=$P($G(^HL(771.2,+$P(X,"^",11),0)),"^"),HL("RETN")=$P($G(^HL(779.001,+$P(X,"^",4),0)),"^")
|
---|
111 | Q
|
---|