Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCMSVUT5

SCMSVUT5.m

Go to the documentation of this file.
  1. SCMSVUT5 ;BPFO/JRP - IEMM UTILTIES (CONT);7/29/2002
  1. ;;5.3;Scheduling;**254,293**;Aug 13, 1993
  1. ;
  1. PARSE(INARR,OUTARR,SEP,SUB,MAX) ;Parse array into individual fields
  1. ;Input : INARR - Array containing data to parse (full global ref)
  1. ; INARR = First 245 characters of data
  1. ; INARR(1..n) = Continuation nodes
  1. ; OR
  1. ; INARR(x) = First 245 characters of data
  1. ; INARR(x,1..n) = Continuation nodes
  1. ; OUTARR - Array to put parsed data into (full global ref)
  1. ; SEP - Field separator (defaults to ^) (1 character)
  1. ; SUB - Starting subscript of OUTARR (defaults to 0)
  1. ; MAX - Maximum length of output node (defaults to 245)
  1. ;Output : None
  1. ; OUTARR(SUB) = First piece (MAX characters)
  1. ; OUTARR(SUB,1..n) = Continuation nodes
  1. ; OUTARR(SUB+X) = Xth piece (MAX characters)
  1. ; OUTARR(SUB+X,1..n) = Continuation nodes
  1. ;Notes : OUTARR is initialized (KILLed) on entry
  1. ; : Assumes that INARR and OUTARR are defined and valid
  1. ;
  1. ;Declare variables
  1. N NODE,STOP,DATA,INFO,FLD,SEPCNT,CN,OUT,TMP,ROOT,OUTNODE
  1. K @OUTARR
  1. S SEP=$G(SEP) S SEP=$E(SEP,1) S:SEP="" SEP="^"
  1. S SUB=+$G(SUB)
  1. S MAX=+$G(MAX) S:'MAX MAX=245
  1. S NODE=INARR
  1. S INFO=$G(@NODE)
  1. S ROOT=$$OREF^DILF(INARR)
  1. S FLD=1
  1. S SEPCNT=$L(INFO,SEP)
  1. S STOP=0
  1. S OUTNODE=$NA(@OUTARR@(SUB))
  1. S CN=0
  1. F S DATA=$P(INFO,SEP,FLD) D Q:STOP
  1. .I FLD=SEPCNT D Q
  1. ..D ADDNODE
  1. ..S NODE=$Q(@NODE)
  1. ..I (NODE="")!(NODE'[ROOT) S STOP=1 Q
  1. ..S INFO=$G(@NODE)
  1. ..S SEPCNT=$L(INFO,SEP)
  1. ..S FLD=1
  1. .D ADDNODE
  1. .S SUB=SUB+1
  1. .S CN=0
  1. .S OUTNODE=$NA(@OUTARR@(SUB))
  1. .S FLD=FLD+1
  1. Q
  1. ADDNODE ;Used by PARSE to add data to output node (handles continuation nodes)
  1. S TMP=$G(@OUTNODE)
  1. I ($L(TMP)+$L(DATA))<(MAX+1) S @OUTNODE=TMP_DATA Q
  1. S @OUTNODE=TMP_$E(DATA,1,(MAX-$L(TMP)))
  1. S CN=CN+1
  1. S DATA=$E(DATA,(MAX-$L(TMP)+1),$L(DATA))
  1. S OUTNODE=$NA(@OUTARR@(SUB,CN))
  1. I DATA'="" D ADDNODE
  1. Q
  1. ;
  1. ;
  1. SEGPRSE(SEGMENT,OUTARR,FS) ;Parse HL7 segment by field separator
  1. ;Input : SEGMENT - Array containing HL7 segment to parse
  1. ; (full global ref)
  1. ; SEGMENT = First 245 characters of segment
  1. ; SEGMENT(1..n) = Continuation nodes
  1. ; OR
  1. ; SEGMENT(x) = First 245 characters of segment
  1. ; SEGMENT(x,1..n) = Continuation nodes
  1. ; OUTARR - Array to put parsed segment into (full global ref)
  1. ; FS - HL7 field separator (defaults to ^) (1 character)
  1. ;Output : None
  1. ; OUTARR(0) = Segment name
  1. ; OUTARR(seq#) = Data (first 245 characters)
  1. ; OUTARR(seq#,1..n) Continuation nodes
  1. ;Notes : OUTARR is initialized (KILLed) on entry
  1. ; : Assumes SEGMENT and OUTARR are defined and valid
  1. ;
  1. D PARSE($G(SEGMENT),$G(OUTARR),$G(FS),0,245)
  1. Q
  1. ;
  1. SEQPRSE(SEQDATA,OUTARR,ENCODE) ;Parse HL7 sequence by component
  1. ;Input : SEQDATA - Array containing seq to parse (full global ref)
  1. ; SEQDATA = First 245 characters of sequence
  1. ; SEQDATA(1..n) = Continuation nodes
  1. ; OR
  1. ; SEQDATA(x) = First 245 characters of sequence
  1. ; SEQDATA(x,1..n) = Continuation nodes
  1. ; OUTARR - Array to put parsed sequence into (full global ref)
  1. ; ENCODE - HL7 encoding characters (defaults to ~|\&) (4 chars)
  1. ;Output : None
  1. ; OUTARR(rep#,comp#) = Data (first 245 characters)
  1. ; OUTARR(rep#,comp#,1..n) = Continuation nodes
  1. ;Notes : OUTARR is initialized (KILLed) on entry
  1. ; : Assumes SEQDATA and OUTARR are defined and valid
  1. ;
  1. ;Declare variables
  1. N RS,CS,INFO,DATA,REP,COMP
  1. S ENCODE=$G(ENCODE,"~|\&")
  1. S ENCODE=$E(ENCODE,1,4) S:$L(ENCODE)'=4 ENCODE="~|\&"
  1. S CS=$E(ENCODE,1)
  1. S RS=$E(ENCODE,2)
  1. S INFO=$NA(^TMP("SCMSVUT5",$J,"SEQPRSE"))
  1. D PARSE($G(SEQDATA),INFO,RS,1,245)
  1. S REP=0
  1. F S REP=+$O(@INFO@(REP)) Q:'REP D PARSE($NA(@INFO@(REP)),$NA(@OUTARR@(REP)),CS,1,245)
  1. K @INFO
  1. Q