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

LR7OU01.m

Go to the documentation of this file.
  1. LR7OU01 ;slc/dcm - Build HL7 Components ;8/11/97
  1. ;;5.2T9;LR;**1018**;Nov 17, 2004
  1. ;;5.2;LAB SERVICE;**121,187**;Sep 27, 1994
  1. ;
  1. ORC(COUNT) ;ORC segment
  1. ;X1 = Order Control (SN-backdoor new order, OC-Cancel, SC-on collection
  1. ; SC-collected, RE-completed) See table 119
  1. ;X2 = Lab Number
  1. ;X3 = Order Status (table 38)
  1. ;X4 = Quantity/Timing - Quantity^Interval^Duration^Start D/T^End D/T^Priority^Condition^Text^Conjunction
  1. ;X5 = Date ordered/entered
  1. ;X6 = Provider # (ptr to file 200)
  1. ;X7 = Order effective D/T
  1. ;X8 = Order Control Reason
  1. ;X9 = OE/RR Order #
  1. ;X10 = Entered by
  1. N ORC,CTR,ARAY
  1. S CTR=0,ARAY=""
  1. D BUILD("ORC|"),BUILD(X1_"|"_$S($L(X9):X9_"^OR",1:"")_"|"),BUILD(X2_"^||"),BUILD(X3_"||"),BUILD(X4_"||"),BUILD(X5_"|"),BUILD($$PERSON(X10)_"||")
  1. D BUILD($$PERSON(X6)_"|||"),BUILD(X7_"|"),BUILD(X8)
  1. M @MSG@(COUNT)=ARAY
  1. Q
  1. OBR(COUNT) ;OBR segment
  1. ;COUNT=Current count for MSG array
  1. ;X1 = Universal ID - ^^^ifn (from file 60)^Test Name^99_SectionID
  1. ; SectionID: LRT=Chem Hem Tox Micro AP, LRB=Bloodbank
  1. ;X2 = Observation D/T
  1. ;X3 = Specimen Action Code (table 65)
  1. ;X4 = Specimen Recieved D/T
  1. ;X5 = Specimen Source (table 70)
  1. ;X6 = Accession (Filler Field 1)
  1. ;X7 = Results reported or Status changed D/T
  1. ;X8 = Result Status (table 123)
  1. ;X9 = Quantity/timing
  1. ;X10 = Result copies to: location
  1. ;COBR = OBR counter
  1. N OBR,CTR,ARAY
  1. S CTR=0,ARAY=""
  1. D BUILD("OBR|"),BUILD(COBR_"|||"),BUILD(X1_"|||"),BUILD(X2_"||||"),BUILD(X3_"|||"),BUILD(X4_"|"),BUILD(X5_"|||||")
  1. D BUILD(X6_"||"),BUILD(X7_"|||"),BUILD(X8_"||"),BUILD(X9_"|"),BUILD(X10)
  1. M @MSG@(COUNT)=ARAY
  1. Q
  1. OBX(COUNT) ;OBX Result segment
  1. ;X1 = Value type (table 125)
  1. ;X2 = Observation ID - ^^^ifn (from file 60)^Test Name^99_SectionID
  1. ;X3 = Observation Sub-ID
  1. ;X4 = Result
  1. ;X5 = coded per table 36
  1. ;X6 = Reference Range
  1. ;X7 = Abnormal Flag (table 78)
  1. ;X8 = Observ Result Status (table 85)
  1. ;COBX = OBX Counter
  1. ;X10 = User Defined Access Checks
  1. ;X11 = Verified by
  1. N OBX,CTR,ARAY
  1. S CTR=0,ARAY=""
  1. D BUILD("OBX|"_COBX_"|"),BUILD(X1_"|"),BUILD(X2_"|"),BUILD(X3_"|"),BUILD(X4_"|"),BUILD(X5_"|"),BUILD(X6_"|"),BUILD(X7_"|||"),BUILD(X8_"||"),BUILD(X10_"||"),BUILD($$PERSON(X11))
  1. M @MSG@(COUNT)=ARAY
  1. Q
  1. NTE(ID,SOURCE,NODE,CTR) ;NTE Notes segment
  1. ;ID=SET ID
  1. ;SOURCE = Source of comment P=>Placer, L=>Filler, O=>Other system
  1. ;NODE=Local array with text in the form ARRAY( or ARRAY(I,
  1. ;CTR=Counter for 1st subscript in MSG(ctr) array
  1. Q:'$L(NODE) N NTE,FIRST,SUB,X,IFN
  1. S NTE="NTE|"_ID_"|"_SOURCE,IFN=0,FIRST=1
  1. F S IFN=$O(@(NODE_IFN_")")) Q:IFN<1 S X=@(NODE_IFN_")") D
  1. . I X["For Test: " Q ;Screen out unecessary test text
  1. . I FIRST S @MSG@(CTR)=NTE_"|"_X S FIRST=0,SUB=0 Q
  1. . S SUB=SUB+1,@MSG@(CTR,SUB)=X
  1. Q
  1. PERSON(X) ;Get person in external format
  1. I '$G(X) Q 0
  1. I '$D(^VA(200,+X,0)) Q X
  1. S X=+X_"^"_$P(^VA(200,+X,0),"^")
  1. Q X
  1. BUILD(FIELD) ;Build a segment
  1. ;FIELD=text/field to add to segment
  1. ;ARAY is built until length is >244 characters then
  1. ;ARAY(ifn) is created
  1. S:'$D(ARAY) ARAY="" Q:'$D(FIELD) Q:'$D(CTR)
  1. N IFN,X
  1. S X=$S($O(ARAY(0)):$O(ARAY(9999),-1),1:ARAY)
  1. S:$L(FIELD)>244 FIELD=$E(FIELD,1,244)
  1. I $L(FIELD)+$L(X)>244 S CTR=CTR+1,ARAY(CTR)=""
  1. S:CTR=0 ARAY=ARAY_FIELD
  1. S:CTR ARAY(CTR)=ARAY(CTR)_FIELD
  1. Q