[613] | 1 | DGMSTHL7 ;ALB/SCK - Military Sexual Trauma HL7 Message builder ;8 Jan 99
|
---|
| 2 | ;;5.3;Registration;**195**;Aug 13, 1993
|
---|
| 3 | Q
|
---|
| 4 | ;
|
---|
| 5 | EVENT(DFN,DGEVNT,DGRSLT) ; Entry point to initiate HL7 ADT message for a MST status event
|
---|
| 6 | ; Input
|
---|
| 7 | ; DFN - IEN of patient in the PATIENT File, #2
|
---|
| 8 | ; DGEVNT - Event type, currently only A08 supported, Optional
|
---|
| 9 | ; Default is A08
|
---|
| 10 | ; DGRSLT - Location of results from event trigger
|
---|
| 11 | ;
|
---|
| 12 | ; Output
|
---|
| 13 | ; DGRSLT= results of event action
|
---|
| 14 | ;
|
---|
| 15 | N EVNTDT,EVNTINFO
|
---|
| 16 | ;
|
---|
| 17 | S DFN=$G(DFN)
|
---|
| 18 | I 'DFN S @DGRSLT="-1^Invalid DFN" Q
|
---|
| 19 | ;
|
---|
| 20 | S DGEVNT=$G(DGEVNT)
|
---|
| 21 | S:'(DGEVNT]"") DGEVNT="A08"
|
---|
| 22 | I DGEVNT'["A08" S @DGRSLT="-1^Event type not supported" Q
|
---|
| 23 | ;
|
---|
| 24 | S DGRSLT=$G(DGRSLT)
|
---|
| 25 | Q:'(DGRSLT]"")
|
---|
| 26 | ;
|
---|
| 27 | N GLOREF
|
---|
| 28 | S GLOREF="^TMP(""HLS"","_$J_")"
|
---|
| 29 | K @GLOREF
|
---|
| 30 | ;
|
---|
| 31 | S EVNTINFO("DFN")=DFN
|
---|
| 32 | S EVNTINFO("EVENT")="A08"
|
---|
| 33 | S EVNTINFO("DATE")=$$NOW^XLFDT
|
---|
| 34 | S EVNTINFO("SERVER")="DGMST A08 SERVER"
|
---|
| 35 | ;
|
---|
| 36 | S @DGRSLT=$$BLDMSG(.EVNTINFO,GLOREF)
|
---|
| 37 | I (+@DGRSLT>0) D
|
---|
| 38 | . S @DGRSLT=$$SENDMSG(.EVNTINFO,GLOREF)
|
---|
| 39 | Q
|
---|
| 40 | ;
|
---|
| 41 | BLDMSG(EVNTINFO,XMTARRY) ;
|
---|
| 42 | ; Input
|
---|
| 43 | ; EVNTINFO - Array of event information
|
---|
| 44 | ; ("DATE") - Event date
|
---|
| 45 | ; ("DFN") - IEN of patient in PATIENT File (#2)
|
---|
| 46 | ; ("EVENT") - HL7 message event
|
---|
| 47 | ; ("SERVER") - HL7 Server protocol
|
---|
| 48 | ;
|
---|
| 49 | ; XMTARRY - Location to place HL7 message array, Optional
|
---|
| 50 | ; Default is ^TMP("HLS",$J)
|
---|
| 51 | ;
|
---|
| 52 | ; Output
|
---|
| 53 | ; XMTARRY - HL7 Message
|
---|
| 54 | ;
|
---|
| 55 | N HLEID,HL,HLFS,HLECH,HLQ,LASTLINE,VAFSTR,LINESADD,HLP
|
---|
| 56 | ;
|
---|
| 57 | S XMTARRY=$G(XMTARRY)
|
---|
| 58 | S:(XMTARRY="") XMTARRY="^TMP(""HLS"","_$J_")"
|
---|
| 59 | ;
|
---|
| 60 | Q:$G(EVNTINFO("SERVER"))']"" "-1^Server protocol not defined"
|
---|
| 61 | I $G(EVNTINFO("SERVER"))]"" D
|
---|
| 62 | . D INIT^HLFNC2(EVNTINFO("SERVER"),.HL)
|
---|
| 63 | Q:($O(HL(""))="") "-1^Unable to initialize HL7 variables"
|
---|
| 64 | ;
|
---|
| 65 | ;; Build EVN segment
|
---|
| 66 | N VAFEVN,VAFSTR
|
---|
| 67 | S VAFSTR="1,2,"
|
---|
| 68 | S VAFEVN=$$EN^VAFHLEVN(EVNTINFO("EVENT"),EVNTINFO("DATE"),VAFSTR,HL("Q"),HL("FS"))
|
---|
| 69 | S $P(VAFEVN,HL("FS"),2)=EVNTINFO("EVENT")
|
---|
| 70 | S LASTLINE=1+$G(LASTLINE)
|
---|
| 71 | S @XMTARRY@(LASTLINE)=VAFEVN
|
---|
| 72 | ;
|
---|
| 73 | ;; Build PID segment
|
---|
| 74 | N VAFPID
|
---|
| 75 | S VAFSTR="1,2,3,4,5,6,7,8,10,11,12,13,14,16,17,19,"
|
---|
| 76 | S VAFPID=$$EN^VAFHLPID(EVNTINFO("DFN"),VAFSTR)
|
---|
| 77 | S LASTLINE=1+$G(LASTLINE),LINESADD=1+$G(LINESADD)+$O(VAFPID(""),-1)
|
---|
| 78 | M @XMTARRY@(LASTLINE)=VAFPID
|
---|
| 79 | ;
|
---|
| 80 | ;; Build ZEL segment, include only the MST status and status change date
|
---|
| 81 | N VAFZEL
|
---|
| 82 | S VAFSTR="1,23,24,"
|
---|
| 83 | S VAFZEL=$$EN^VAFHLZEL(EVNTINFO("DFN"),VAFSTR)
|
---|
| 84 | S LASTLINE=1+$G(LASTLINE)
|
---|
| 85 | M @XMTARRY@(LASTLINE)=VAFZEL
|
---|
| 86 | ;
|
---|
| 87 | Q LASTLINE_U_LINESADD
|
---|
| 88 | ;
|
---|
| 89 | SENDMSG(EVNTINFO,XMTARRY) ; Send ADT HL7 message
|
---|
| 90 | ; Input
|
---|
| 91 | ; EVNTINFO
|
---|
| 92 | ; XMTARRY
|
---|
| 93 | ;
|
---|
| 94 | ; Output
|
---|
| 95 | ;
|
---|
| 96 | ;
|
---|
| 97 | N ARRY4HL7,KILLARRY,HL,HLRESLT
|
---|
| 98 | S XMTARRY=$G(XMTARRY)
|
---|
| 99 | S:'(XMTARRY]"") XMTARRY="^TMP(""HLS"","_$J_")"
|
---|
| 100 | Q:($O(@XMTARRY@(""))="") "-1^Can not send empty message"
|
---|
| 101 | ;
|
---|
| 102 | K HL
|
---|
| 103 | S ARRY4HL7="^TMP(""HLS"","_$J_")"
|
---|
| 104 | ;
|
---|
| 105 | ;; If server not specified, then quit with error
|
---|
| 106 | Q:$G(EVNTINFO("SERVER"))']"" "-1^Server protocol not defined"
|
---|
| 107 | ;
|
---|
| 108 | ;; Initialize HL7 variables
|
---|
| 109 | I $G(EVNTINFO("SERVER"))]"" D
|
---|
| 110 | . D INIT^HLFNC2(EVNTINFO("SERVER"),.HL)
|
---|
| 111 | Q:($O(HL(""))="") "-1^Unable to initialize HL7 variables"
|
---|
| 112 | ;
|
---|
| 113 | ;; Check if XMTARRY is ^TMP("HLS",$J)
|
---|
| 114 | S KILLARRY=0
|
---|
| 115 | I (XMTARRY'=ARRY4HL7) D
|
---|
| 116 | . ;; make sure '$J' wasn't used
|
---|
| 117 | . Q:(XMTARRY="TMP(""HLS"",$J")
|
---|
| 118 | . K @ARRY4HL7
|
---|
| 119 | . M @ARRY4HL7=@XMTARRY
|
---|
| 120 | . S KILLARRY=1
|
---|
| 121 | ;
|
---|
| 122 | ;; Broadcast message
|
---|
| 123 | D GENERATE^HLMA(EVNTINFO("SERVER"),"GM",1,.HLRESLT,"",.HLP)
|
---|
| 124 | S:('HLRESLT) HLRESLT=$P(HLRESLT,"^",2,3)
|
---|
| 125 | ;
|
---|
| 126 | ;; Delete ^TMP("HLS",$J) if XMTARRY was different
|
---|
| 127 | K:(KILLARRY) @ARRY4HL7
|
---|
| 128 | ;
|
---|
| 129 | Q $G(HLRESLT)
|
---|