source: FOIAVistA/trunk/r/SCHEDULING-SD-SC/SCMCHLS.m@ 1608

Last change on this file since 1608 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 3.2 KB
Line 
1SCMCHLS ;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
7BLDEVN ;Build EVN segment
8 S VAFEVN=$$EN^VAFHLEVN(EVNTHL7,EVNTDATE,VAFSTR,HL("Q"),HL("FS"))
9 Q
10BLDPID ;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
15BLDZPC ;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
28CPYEVN ;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
32CPYPID ;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
36CPYZPC ;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
43DELEVN ;Delete EVN variable
44 KILL VAFEVN
45 Q
46DELPID ;Delete PID variable
47 KILL VAFPID
48 Q
49DELZPC ;Delete ZPC variable
50 KILL VAFZPC
51 Q
52 ;
53SEGMENTS(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 ;
80UNWIND(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
98COUNT(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
Note: See TracBrowser for help on using the repository browser.