1 | PRCVUTSC ;WOIFO/DST - Convert non-formatted string ; 2/11/03 4:52pm
|
---|
2 | ;;5.1;IFCAP;**81**;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | CONV(STR,ACT,SC) ;
|
---|
6 | ;
|
---|
7 | ; Initial data for HL7, HL() array, will be used in this routine.
|
---|
8 | ; Such as HL("ECH"), HL("FS")...
|
---|
9 | ;
|
---|
10 | ; Input:
|
---|
11 | ; STR - A string to be convert
|
---|
12 | ; ACT - Action, E - from escape sequences to special char
|
---|
13 | ; C - from special char to escape sequences
|
---|
14 | ; SC - String of special character used in this HL7 message
|
---|
15 | ; SC char 1 - Field separator
|
---|
16 | ; char 2 - Component separator
|
---|
17 | ; char 3 - Repetition separator
|
---|
18 | ; char 4 - Escape sequence character
|
---|
19 | ; char 5 - Subcomponent separator
|
---|
20 | ;
|
---|
21 | ; Output:
|
---|
22 | ; STR1 - A converted string
|
---|
23 | ;
|
---|
24 | N LEN,SP,SP1,STR1,PRCVFS,PRCVCS,PRCVRS,PRCVES,PRCVSS
|
---|
25 | I $L($G(STR))=0!($L($G(ACT))=0) Q ""
|
---|
26 | S PRCVFS=$E(SC,1)
|
---|
27 | S PRCVCS=$E(SC,2)
|
---|
28 | S PRCVRS=$E(SC,3)
|
---|
29 | S PRCVES=$E(SC,4)
|
---|
30 | S PRCVSS=$E(SC,5)
|
---|
31 | S LEN=$L(STR)
|
---|
32 | I ACT="C" D TOC Q STR1
|
---|
33 | ;
|
---|
34 | TOE ; Converted from Escape Sequences to special characters
|
---|
35 | ; PRCVFS <== \F\ Field separator
|
---|
36 | ; PRCVCS <== \S\ Component separator
|
---|
37 | ; PRCVRS <== \R\ Repetition separator
|
---|
38 | ; PRCVES <== \E\ Escape sequence character
|
---|
39 | ; PRCVSS <== \T\ Sub-component separator
|
---|
40 | ;
|
---|
41 | N I,J,K,LEN1,SE,SE1,SP,STR2
|
---|
42 | S LEN1=0
|
---|
43 | S STR1=STR
|
---|
44 | ;
|
---|
45 | ; Go through special characters listed in CH and converted, one by one.
|
---|
46 | ;
|
---|
47 | F K=1:1 Q:$P($T(CH+K),";;",2)']"" D
|
---|
48 | . S SE=$P($P($T(CH+K),";;",2),";",2) ; correspond special character
|
---|
49 | . F I=1:1 S STR2(I)=$P(STR1,SE,I) Q:STR2(I)="" S SE1(I)=SE
|
---|
50 | . K STR2(I)
|
---|
51 | . F J=1:1:I-1 S LEN1=LEN1+$L(STR2(J))+$L(SE1(J))
|
---|
52 | . I LEN1>$L(STR1) K SE1(I-1)
|
---|
53 | . S LEN1=0
|
---|
54 | . S SP=$P($P($T(CH+K),";;",2),";",1)
|
---|
55 | . S STR2=""
|
---|
56 | . F I=1:1 Q:$G(STR2(I))']"" D
|
---|
57 | .. S STR2=STR2_STR2(I)
|
---|
58 | .. S:$D(SE1(I)) STR2=STR2_@SP
|
---|
59 | . S STR1=STR2
|
---|
60 | . K SP,STR2
|
---|
61 | Q STR1
|
---|
62 | ;
|
---|
63 | TOC ; Converted from special characters to Escape Sequences
|
---|
64 | ; PRCVFS ==> \F\ Field separator
|
---|
65 | ; PRCVCS ==> \S\ Component separator
|
---|
66 | ; PRCVRS ==> \R\ Repetition separator
|
---|
67 | ; PRCVES ==> \E\ Escape sequence character
|
---|
68 | ; PRCVSS ==> \T\ Sub-component separator
|
---|
69 | ;
|
---|
70 | N C1,I
|
---|
71 | S STR1=""
|
---|
72 | F I=1:1:LEN D
|
---|
73 | . S C1=$E(STR,I)
|
---|
74 | . S STR1=STR1_$S(C1=PRCVFS:"\F\",C1=PRCVCS:"\S\",C1=PRCVRS:"\R\",C1=PRCVES:"\E\",C1=PRCVSS:"\T\",1:C1)
|
---|
75 | . Q
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | CH ; Convert characters
|
---|
79 | ;;PRCVFS;\F\;Field separator
|
---|
80 | ;;PRCVCS;\S\;Component separator
|
---|
81 | ;;PRCVRS;\R\;Repetition separator
|
---|
82 | ;;PRCVES;\E\;Escape sequence character
|
---|
83 | ;;PRCVSS;\T\;Subcomponent separator
|
---|
84 | ;;
|
---|