1 | SCMCHLS ;BPOI/DJB - PCMM HL7 Segment Utils;12/13/99
|
---|
2 | ;;5.3;Scheduling;**177,210,212,293,515,524**;08/13/93;Build 29
|
---|
3 | ;
|
---|
4 | ;Ref rtn: SCDXMSG1
|
---|
5 | ;
|
---|
6 | ;--> Build HL7 segments
|
---|
7 | BLDEVN ;Build EVN segment
|
---|
8 | S VAFEVN=$$EN^VAFHLEVN(EVNTHL7,EVNTDATE,VAFSTR,HL("Q"),HL("FS"))
|
---|
9 | Q
|
---|
10 | BLDPID ;Build PID segment
|
---|
11 | ;S VAFPID=$$EN^VAFHLPID(DFN,VAFSTR)
|
---|
12 | S VAFPID=$$EN^VAFCPID(DFN,VAFSTR) ;Use CIRN version
|
---|
13 | D SETMAR^SCMSVUT0(.VAFPID,HL("Q"),HL("FS"))
|
---|
14 | Q
|
---|
15 | BLDZPC ;Build ZPC segment
|
---|
16 | ;djb/bp Patch 210. Sequentially number multiple ZPC segments.
|
---|
17 | ;new code begin
|
---|
18 | S SCSEQ=$G(SCSEQ)+1 ;Increment ZPC sequence number.
|
---|
19 | ; S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA,SCSEQ)
|
---|
20 | S VAFZPC=$$ZPC^SCMCHLZ("",.ID,.DATA,SCSEQ)
|
---|
21 | ;new code end
|
---|
22 | ;old code begin
|
---|
23 | ;S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA)
|
---|
24 | ;old code end
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | ;--> Copy HL7 segments into HL7 message
|
---|
28 | CPYEVN ;Copy EVN segment
|
---|
29 | ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
|
---|
30 | M @XMITARRY@(SUB,SEGNAME,1)=VAFEVN
|
---|
31 | Q
|
---|
32 | CPYPID ;Copy PID segment
|
---|
33 | ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
|
---|
34 | M @XMITARRY@(SUB,SEGNAME,1)=VAFPID
|
---|
35 | Q
|
---|
36 | CPYZPC ;Copy ZPC segment
|
---|
37 | ; PATCH 515 DLL USE ORIG TRIG
|
---|
38 | ; old code = M @XMITARRY@($P(ID,"-",1),"ZPC",ID)=VAFZPC
|
---|
39 | M @XMITARRY@(SUB,"ZPC",ID)=VAFZPC ; og/sd/524
|
---|
40 | Q
|
---|
41 | ;
|
---|
42 | ;--> Delete HL7 segment variables
|
---|
43 | DELEVN ;Delete EVN variable
|
---|
44 | KILL VAFEVN
|
---|
45 | Q
|
---|
46 | DELPID ;Delete PID variable
|
---|
47 | KILL VAFPID
|
---|
48 | Q
|
---|
49 | DELZPC ;Delete ZPC variable
|
---|
50 | KILL VAFZPC
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | SEGMENTS(EVNTTYPE,SEGARRY) ;Build list of HL7 segments for a given event type
|
---|
54 | ;
|
---|
55 | ; Input: EVNTTYPE - Event type to build list for A08 & A23 are the
|
---|
56 | ; only types currently supported.
|
---|
57 | ; Default=A08
|
---|
58 | ; SEGARRY - Array to place output in (full global reference)
|
---|
59 | ; Defaul=^TMP("SCMC SEGMENTS",$J)
|
---|
60 | ;Output: SEGARRY(Seq,Name)=Fields
|
---|
61 | ; Seq - Sequence number to order segments as they should
|
---|
62 | ; be placed in the HL7 message.
|
---|
63 | ; Name - Name of HL7 segment.
|
---|
64 | ; Fields - List of fields used by PCMM. VAFSTR would be set
|
---|
65 | ; to this value.
|
---|
66 | ; Note: MSH segment is not included
|
---|
67 | ;
|
---|
68 | ;Check input
|
---|
69 | S EVNTTYPE=$G(EVNTTYPE)
|
---|
70 | S:(EVNTTYPE'="A23") EVNTTYPE="A08"
|
---|
71 | S SEGARRY=$G(SEGARRY)
|
---|
72 | S:(SEGARRY="") SEGARRY="^TMP(""SCMC SEGMENTS"","_$J_")"
|
---|
73 | ;
|
---|
74 | ;Segments used by A08
|
---|
75 | S @SEGARRY@(1,"EVN")="1,2"
|
---|
76 | S @SEGARRY@(2,"PID")="1,2,3,4,5,6,7,8,10N,11,12,13,14,16,17,19,22"
|
---|
77 | S @SEGARRY@(3,"ZPC")="1,2,3,4,5,6,8" ;bp/ar and alb/rpm Patch 212
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | UNWIND(XMITARRY,INSRTPNT) ;Remove all data that was put into transmit array.
|
---|
81 | ;
|
---|
82 | ; Input: XMITARRY - Array containing HL7 message (full global ref).
|
---|
83 | ; Default=^TMP("HLS",$J).
|
---|
84 | ; INSRTPNT - Where to begin deletion from.
|
---|
85 | ; Default=1
|
---|
86 | ;Output: None
|
---|
87 | ;
|
---|
88 | ;Check input
|
---|
89 | S:$G(XMITARRY)="" XMITARRY="^TMP(""HLS"","_$J_")"
|
---|
90 | S:$G(INSRTPNT)="" INSRTPNT=1
|
---|
91 | ;
|
---|
92 | ;Remove insertion point from array
|
---|
93 | KILL @XMITARRY@(INSRTPNT)
|
---|
94 | ;Remove everything from insertion point to end of array
|
---|
95 | F S INSRTPNT=$O(@XMITARRY@(INSRTPNT)) Q:INSRTPNT="" KILL @XMITARRY@(INSRTPNT)
|
---|
96 | ;Done
|
---|
97 | Q
|
---|
98 | COUNT(VALER) ;counts the number of errored encounters found.
|
---|
99 | ;
|
---|
100 | ; Input: VALER - Array containing error messages.
|
---|
101 | ;Output: Number of errors
|
---|
102 | ;
|
---|
103 | NEW VAR,CNT
|
---|
104 | S CNT=0
|
---|
105 | S VAR=""
|
---|
106 | F S VAR=$O(@VALER@(VAR)) Q:VAR']"" S CNT=CNT+1
|
---|
107 | Q CNT
|
---|