| 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 | ;; | 
|---|