Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/SCHEDULING-SD-SC/SCMCHLS.m

    r613 r623  
    1 SCMCHLS ;BPOI/DJB - PCMM HL7 Segment Utils;12/13/99
    2         ;;5.3;Scheduling;**177,210,212,293,515,524**;08/13/93;Build 29
    3         ;
    4         ;Ref rtn: SCDXMSG1
    5         ;
    6         ;--> Build HL7 segments
    7 BLDEVN  ;Build EVN segment
    8         S VAFEVN=$$EN^VAFHLEVN(EVNTHL7,EVNTDATE,VAFSTR,HL("Q"),HL("FS"))
    9         Q
    10 BLDPID  ;Build PID segment
    11         ;S VAFPID=$$EN^VAFHLPID(DFN,VAFSTR)
    12         S VAFPID=$$EN^VAFCPID(DFN,VAFSTR) ;Use CIRN version
    13         D SETMAR^SCMSVUT0(.VAFPID,HL("Q"),HL("FS"))
    14         Q
    15 BLDZPC  ;Build ZPC segment
    16         ;djb/bp Patch 210. Sequentially number multiple ZPC segments.
    17         ;new code begin
    18         S SCSEQ=$G(SCSEQ)+1 ;Increment ZPC sequence number.
    19         ; S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA,SCSEQ)
    20         S VAFZPC=$$ZPC^SCMCHLZ("",.ID,.DATA,SCSEQ)
    21         ;new code end
    22         ;old code begin
    23         ;S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA)
    24         ;old code end
    25         Q
    26         ;
    27         ;--> Copy HL7 segments into HL7 message
    28 CPYEVN  ;Copy EVN segment
    29         ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
    30         M @XMITARRY@(SUB,SEGNAME,1)=VAFEVN
    31         Q
    32 CPYPID  ;Copy PID segment
    33         ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
    34         M @XMITARRY@(SUB,SEGNAME,1)=VAFPID
    35         Q
    36 CPYZPC  ;Copy ZPC segment
    37         ; PATCH 515 DLL USE ORIG TRIG
    38         ; old code = M @XMITARRY@($P(ID,"-",1),"ZPC",ID)=VAFZPC
    39         M @XMITARRY@(SUB,"ZPC",ID)=VAFZPC  ; og/sd/524
    40         Q
    41         ;
    42         ;--> Delete HL7 segment variables
    43 DELEVN  ;Delete EVN variable
    44         KILL VAFEVN
    45         Q
    46 DELPID  ;Delete PID variable
    47         KILL VAFPID
    48         Q
    49 DELZPC  ;Delete ZPC variable
    50         KILL VAFZPC
    51         Q
    52         ;
    53 SEGMENTS(EVNTTYPE,SEGARRY)      ;Build list of HL7 segments for a given event type
    54         ;
    55         ; Input: EVNTTYPE - Event type to build list for A08 & A23 are the
    56         ;                   only types currently supported.
    57         ;                   Default=A08
    58         ;         SEGARRY - Array to place output in (full global reference)
    59         ;                   Defaul=^TMP("SCMC SEGMENTS",$J)
    60         ;Output: SEGARRY(Seq,Name)=Fields
    61         ;             Seq - Sequence number to order segments as they should
    62         ;                   be placed in the HL7 message.
    63         ;            Name - Name of HL7 segment.
    64         ;          Fields - List of fields used by PCMM. VAFSTR would be set
    65         ;                   to this value.
    66         ;  Note: MSH segment is not included
    67         ;
    68         ;Check input
    69         S EVNTTYPE=$G(EVNTTYPE)
    70         S:(EVNTTYPE'="A23") EVNTTYPE="A08"
    71         S SEGARRY=$G(SEGARRY)
    72         S:(SEGARRY="") SEGARRY="^TMP(""SCMC SEGMENTS"","_$J_")"
    73         ;
    74         ;Segments used by A08
    75         S @SEGARRY@(1,"EVN")="1,2"
    76         S @SEGARRY@(2,"PID")="1,2,3,4,5,6,7,8,10N,11,12,13,14,16,17,19,22"
    77         S @SEGARRY@(3,"ZPC")="1,2,3,4,5,6,8" ;bp/ar and alb/rpm Patch 212
    78         Q
    79         ;
    80 UNWIND(XMITARRY,INSRTPNT)       ;Remove all data that was put into transmit array.
    81         ;
    82         ; Input: XMITARRY - Array containing HL7 message (full global ref).
    83         ;                   Default=^TMP("HLS",$J).
    84         ;        INSRTPNT - Where to begin deletion from.
    85         ;                   Default=1
    86         ;Output: None
    87         ;
    88         ;Check input
    89         S:$G(XMITARRY)="" XMITARRY="^TMP(""HLS"","_$J_")"
    90         S:$G(INSRTPNT)="" INSRTPNT=1
    91         ;
    92         ;Remove insertion point from array
    93         KILL @XMITARRY@(INSRTPNT)
    94         ;Remove everything from insertion point to end of array
    95         F  S INSRTPNT=$O(@XMITARRY@(INSRTPNT)) Q:INSRTPNT=""  KILL @XMITARRY@(INSRTPNT)
    96         ;Done
    97         Q
    98 COUNT(VALER)    ;counts the number of errored encounters found.
    99         ;
    100         ; Input: VALER - Array containing error messages.
    101         ;Output: Number of errors
    102         ;
    103         NEW VAR,CNT
    104         S CNT=0
    105         S VAR=""
    106         F  S VAR=$O(@VALER@(VAR)) Q:VAR']""  S CNT=CNT+1
    107         Q CNT
     1SCMCHLS ;BP/DJB - PCMM HL7 Segment Utils ; 12/13/99 12:40pm
     2 ;;5.3;Scheduling;**177,210,212,293,515**;AUG 13, 1993;Build 14
     3 ;
     4 ;Ref rtn: SCDXMSG1
     5 ;
     6 ;--> Build HL7 segments
     7BLDEVN ;Build EVN segment
     8 S VAFEVN=$$EN^VAFHLEVN(EVNTHL7,EVNTDATE,VAFSTR,HL("Q"),HL("FS"))
     9 Q
     10BLDPID ;Build PID segment
     11 ;S VAFPID=$$EN^VAFHLPID(DFN,VAFSTR)
     12 S VAFPID=$$EN^VAFCPID(DFN,VAFSTR) ;Use CIRN version
     13 D SETMAR^SCMSVUT0(.VAFPID,HL("Q"),HL("FS"))
     14 Q
     15BLDZPC ;Build ZPC segment
     16 ;djb/bp Patch 210. Sequentially number multiple ZPC segments.
     17 ;new code begin
     18 S SCSEQ=$G(SCSEQ)+1 ;Increment ZPC sequence number.
     19 ; S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA,SCSEQ)
     20 S VAFZPC=$$ZPC^SCMCHLZ("",.ID,.DATA,SCSEQ)
     21 ;new code end
     22 ;old code begin
     23 ;S VAFZPC=$$ZPC^SCMCHLZ("",ID,DATA)
     24 ;old code end
     25 Q
     26 ;
     27 ;--> Copy HL7 segments into HL7 message
     28CPYEVN ;Copy EVN segment
     29 ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
     30 M @XMITARRY@(SUB,SEGNAME,1)=VAFEVN
     31 Q
     32CPYPID ;Copy PID segment
     33 ;Add 1 as 3rd subscript so number of subscripts matches ZPC segment
     34 M @XMITARRY@(SUB,SEGNAME,1)=VAFPID
     35 Q
     36CPYZPC ;Copy ZPC segment
     37 ; PATCH 515 DLL USE ORIG TRIG
     38 ; old code = M @XMITARRY@($P(ID,"-",1),"ZPC",ID)=VAFZPC
     39 M @XMITARRY@(NUM,"ZPC",ID)=VAFZPC
     40 Q
     41 ;
     42 ;--> Delete HL7 segment variables
     43DELEVN ;Delete EVN variable
     44 KILL VAFEVN
     45 Q
     46DELPID ;Delete PID variable
     47 KILL VAFPID
     48 Q
     49DELZPC ;Delete ZPC variable
     50 KILL VAFZPC
     51 Q
     52 ;
     53SEGMENTS(EVNTTYPE,SEGARRY) ;Build list of HL7 segments for a given event type
     54 ;
     55 ; Input: EVNTTYPE - Event type to build list for A08 & A23 are the
     56 ;                   only types currently supported.
     57 ;                   Default=A08
     58 ;         SEGARRY - Array to place output in (full global reference)
     59 ;                   Defaul=^TMP("SCMC SEGMENTS",$J)
     60 ;Output: SEGARRY(Seq,Name)=Fields
     61 ;             Seq - Sequence number to order segments as they should
     62 ;                   be placed in the HL7 message.
     63 ;            Name - Name of HL7 segment.
     64 ;          Fields - List of fields used by PCMM. VAFSTR would be set
     65 ;                   to this value.
     66 ;  Note: MSH segment is not included
     67 ;
     68 ;Check input
     69 S EVNTTYPE=$G(EVNTTYPE)
     70 S:(EVNTTYPE'="A23") EVNTTYPE="A08"
     71 S SEGARRY=$G(SEGARRY)
     72 S:(SEGARRY="") SEGARRY="^TMP(""SCMC SEGMENTS"","_$J_")"
     73 ;
     74 ;Segments used by A08
     75 S @SEGARRY@(1,"EVN")="1,2"
     76 S @SEGARRY@(2,"PID")="1,2,3,4,5,6,7,8,10N,11,12,13,14,16,17,19,22"
     77 S @SEGARRY@(3,"ZPC")="1,2,3,4,5,6,8" ;bp/ar and alb/rpm Patch 212
     78 Q
     79 ;
     80UNWIND(XMITARRY,INSRTPNT) ;Remove all data that was put into transmit array.
     81 ;
     82 ; Input: XMITARRY - Array containing HL7 message (full global ref).
     83 ;                   Default=^TMP("HLS",$J).
     84 ;        INSRTPNT - Where to begin deletion from.
     85 ;                   Default=1
     86 ;Output: None
     87 ;
     88 ;Check input
     89 S:$G(XMITARRY)="" XMITARRY="^TMP(""HLS"","_$J_")"
     90 S:$G(INSRTPNT)="" INSRTPNT=1
     91 ;
     92 ;Remove insertion point from array
     93 KILL @XMITARRY@(INSRTPNT)
     94 ;Remove everything from insertion point to end of array
     95 F  S INSRTPNT=$O(@XMITARRY@(INSRTPNT)) Q:INSRTPNT=""  KILL @XMITARRY@(INSRTPNT)
     96 ;Done
     97 Q
     98COUNT(VALER) ;counts the number of errored encounters found.
     99 ;
     100 ; Input: VALER - Array containing error messages.
     101 ;Output: Number of errors
     102 ;
     103 NEW VAR,CNT
     104 S CNT=0
     105 S VAR=""
     106 F  S VAR=$O(@VALER@(VAR)) Q:VAR']""  S CNT=CNT+1
     107 Q CNT
Note: See TracChangeset for help on using the changeset viewer.