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

SCMCHLS.m

Go to the documentation of this file.
SCMCHLS ;BPOI/DJB - PCMM HL7 Segment Utils;12/13/99
 ;;5.3;Scheduling;**177,210,212,293,515,524**;08/13/93;Build 29
 ;
 ;Ref rtn: SCDXMSG1
 ;
 ;--> Build HL7 segments
BLDEVN ;Build EVN segment
 S VAFEVN=$$EN^VAFHLEVN(EVNTHL7,EVNTDATE,VAFSTR,HL("Q"),HL("FS"))
 Q
BLDPID ;Build PID segment
 ;S VAFPID=$$EN^VAFHLPID(DFN,VAFSTR)
 S VAFPID=$$EN^VAFCPID(DFN,VAFSTR) ;Use CIRN version
 D SETMAR^SCMSVUT0(.VAFPID,HL("Q"),HL("FS"))
 Q
BLDZPC ;Build ZPC segment
 ;djb/bp Patch 210. Sequentially number multiple ZPC segments.
 ;new code begin
 S SCSEQ=$G(SCSEQ)+1 ;Increment ZPC sequence number.
 ; S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA,SCSEQ)
 S VAFZPC=$$ZPC^SCMCHLZ("",.ID,.DATA,SCSEQ)
 ;new code end
 ;old code begin
 ;S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA)
 ;old code end
 Q
 ;
 ;--> Copy HL7 segments into HL7 message
CPYEVN ;Copy EVN segment
 ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
 M @XMITARRY@(SUB,SEGNAME,1)=VAFEVN
 Q
CPYPID ;Copy PID segment
 ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
 M @XMITARRY@(SUB,SEGNAME,1)=VAFPID
 Q
CPYZPC ;Copy ZPC segment
 ; PATCH 515 DLL USE ORIG TRIG 
 ; old code = M @XMITARRY@($P(ID,"-",1),"ZPC",ID)=VAFZPC
 M @XMITARRY@(SUB,"ZPC",ID)=VAFZPC  ; og/sd/524
 Q
 ;
 ;--> Delete HL7 segment variables
DELEVN ;Delete EVN variable
 KILL VAFEVN
 Q
DELPID ;Delete PID variable
 KILL VAFPID
 Q
DELZPC ;Delete ZPC variable
 KILL VAFZPC
 Q
 ;
SEGMENTS(EVNTTYPE,SEGARRY) ;Build list of HL7 segments for a given event type
 ;
 ; Input: EVNTTYPE - Event type to build list for A08 & A23 are the
 ;                   only types currently supported.
 ;                   Default=A08
 ;         SEGARRY - Array to place output in (full global reference)
 ;                   Defaul=^TMP("SCMC SEGMENTS",$J)
 ;Output: SEGARRY(Seq,Name)=Fields
 ;             Seq - Sequence number to order segments as they should
 ;                   be placed in the HL7 message.
 ;            Name - Name of HL7 segment.
 ;          Fields - List of fields used by PCMM. VAFSTR would be set
 ;                   to this value.
 ;  Note: MSH segment is not included
 ;
 ;Check input
 S EVNTTYPE=$G(EVNTTYPE)
 S:(EVNTTYPE'="A23") EVNTTYPE="A08"
 S SEGARRY=$G(SEGARRY)
 S:(SEGARRY="") SEGARRY="^TMP(""SCMC SEGMENTS"","_$J_")"
 ;
 ;Segments used by A08
 S @SEGARRY@(1,"EVN")="1,2"
 S @SEGARRY@(2,"PID")="1,2,3,4,5,6,7,8,10N,11,12,13,14,16,17,19,22"
 S @SEGARRY@(3,"ZPC")="1,2,3,4,5,6,8" ;bp/ar and alb/rpm Patch 212
 Q
 ;
UNWIND(XMITARRY,INSRTPNT) ;Remove all data that was put into transmit array.
 ;
 ; Input: XMITARRY - Array containing HL7 message (full global ref).
 ;                   Default=^TMP("HLS",$J).
 ;        INSRTPNT - Where to begin deletion from.
 ;                   Default=1
 ;Output: None
 ;
 ;Check input
 S:$G(XMITARRY)="" XMITARRY="^TMP(""HLS"","_$J_")"
 S:$G(INSRTPNT)="" INSRTPNT=1
 ;
 ;Remove insertion point from array
 KILL @XMITARRY@(INSRTPNT)
 ;Remove everything from insertion point to end of array
 F  S INSRTPNT=$O(@XMITARRY@(INSRTPNT)) Q:INSRTPNT=""  KILL @XMITARRY@(INSRTPNT)
 ;Done
 Q
COUNT(VALER) ;counts the number of errored encounters found.
 ;
 ; Input: VALER - Array containing error messages.
 ;Output: Number of errors
 ;
 NEW VAR,CNT
 S CNT=0
 S VAR=""
 F  S VAR=$O(@VALER@(VAR)) Q:VAR']""  S CNT=CNT+1
 Q CNT