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/RADIOLOGY_NUCLEAR_MEDICINE-RA/RAO7RON.m

    r613 r623  
    1 RAO7RON ;HISC/GJC- Request message from OE/RR. (frontdoor) ;2/2/98  12:34
    2         ;;5.0;Radiology/Nuclear Medicine;**41,75,86**;Mar 16, 1998;Build 7
    3         ;
    4         ;Supported IA #10040 reference to ^SC
    5         ;Supported IA #2187 reference to EN^ORERR
    6         ;Supported IA #10103 reference to ^XLFDT
    7         ;Supported IA #10141 reference to ^XPDUTL
    8         ;Supported IA #10106 reference to $$FMDATE^HLFNC
    9         ;
    10         ;------------------------- Variable List -------------------------------
    11         ; RADATA=HL7 data minus seg. hdr    RAHDR=Segment header
    12         ; RAHLFS="|"                        RAMSG=HL7 message passed in
    13         ; RAOBR12=danger code               RAOBR18=modifier
    14         ; RAOBR19=hosp. loc. pntr (44)      RAOBR30=trans. mode
    15         ; RAOBR4=univ. trans. mode          RAOBX2=format of observ. value
    16         ; RAOBX3=observ. ID                 RAOBX5=observ. value
    17         ; RAORC1=order control              RAORC10=entered by (200)
    18         ; RAORC11=approving rad/nm phys (for some procedures only)
    19         ; RAORC12=ordering provider (200)   RAORC15=order effective D/T
    20         ; RAORC16=order control reason      RAORC2=placer order #_"^OR"
    21         ; RAORC3=filler order #_"^RA"       RAORC7=start dt/freq. of service
    22         ; RAPID3=patient ID                 RAPID5=patient name (2)
    23         ; RAPV119=visit #                   RAPV12=patient class
    24         ; RAPV13=patient location (44)      RASEG=message seg. including header
    25         ; ----------------------------------------------------------------------
    26 EN1(RAMSG)      ; Pass in the message from RAO7RO.  Decipher information.
    27         D BRKOUT^RAO7UTL1
    28         ; defines RAORC2, RAORC3, RAPID3, RAPID5, RAMSH3 & RADIV(.119)
    29         S (RAERR,RAWP,RALINEX)=0,RACLIN="^" K ^TMP("RAWP",$J)
    30         F  S RALINEX=$O(RAMSG(RALINEX)) Q:RALINEX'>0  D  Q:RAERR
    31         . S RASEG=$G(RAMSG(RALINEX)) Q:$P(RASEG,RAHLFS)="MSH"  ; quit if MSH segment
    32         . S RAHDR=$P(RASEG,RAHLFS),RADATA=$P(RASEG,RAHLFS,2,999)
    33         . D @$S(RAHDR="PID":"PID",RAHDR="PV1":"PV1",RAHDR="ORC":"ORC",RAHDR="OBR":"OBR^RAO7RON1",RAHDR="OBX":"OBX^RAO7RON1",RAHDR="DG1":"GETCPRS^RABWORD1",RAHDR="ZCL":"GETCPRS^RABWORD1",1:"ERR")
    34         . Q
    35         S RANEW(75.1,"+1,",18)=RALDT
    36         Q
    37 PID     ; breakdown the 'PID' segment
    38         S RAERR=$$EN2^RAO7VLD(2,RAPID3,RAPID5) S:RAERR RAERR=2
    39         I 'RAERR S RANEW(75.1,"+1,",.01)=RAPID3
    40         Q
    41 PV1     ; breakdown the 'PV1' segment
    42         S RAPV12=$P(RADATA,RAHLFS,2)
    43         S RAERR=$$EN1^RAO7VLD(75.1,4,"E",RAPV12,"RASULT","") S:RAERR RAERR=27 Q:RAERR
    44         S RANEW(75.1,"+1,",4)=RAPV12
    45         S RAPV13=$P(RADATA,RAHLFS,3)
    46         S RAERR=$$EN3^RAO7VLD(44,+RAPV13) S:RAERR RAERR=3 Q:RAERR
    47         S RANEW(75.1,"+1,",22)=+RAPV13
    48         ;check the GUI version of CPRS at this facility:
    49         ;$$PATCH^XPDUTL("OR*3.0*243")=1 CPRS V27, else CPRS V26.
    50         I '$$PATCH^XPDUTL("OR*3.0*243") D  Q:RAERR  ;P86
    51         .I RAPV12="I",$P(^SC($P(RAPV13,U,1),0),U,3)'="W" S RAERR=9 Q
    52         .I RAPV12="O",$P(^SC($P(RAPV13,U,1),0),U,3)="W" S RAERR=9
    53         .Q
    54         S RAPV119=$P(RADATA,RAHLFS,19)
    55         Q
    56 ORC     ; breakdown the 'ORC' segment
    57         ; RAORC7D is: timestamp HL7 format
    58         ; RAORC7P is: priority/urgency
    59         S:+RAORC2'>0 RAERR=16 Q:RAERR
    60         S RANEW(75.1,"+1,",7)=+RAORC2
    61         S RANEW(75.1,"+1,",5)=5
    62         S RAORC7=$P(RADATA,RAHLFS,7)
    63         S RAORC7D=$P(RAORC7,RAECH(1),4)
    64         S RAORC7D=$$FMDATE^HLFNC(RAORC7D)
    65         S RAERR=$$EN1^RAO7VLD(75.1,21,"E",RAORC7D,"RASULT","") S:RAERR RAERR=28 Q:RAERR
    66         S RANEW(75.1,"+1,",21)=RAORC7D
    67         S X=$P(RAORC7,RAECH(1),6)
    68         S RAORC7P=$S(X="S":1,X="A":2,X="R":9,1:"") I +RAORC7P'>0 S RAERR=5 Q
    69         S RANEW(75.1,"+1,",6)=RAORC7P
    70         S RAORC10=$P(RADATA,RAHLFS,10)
    71         S RAERR=$$EN3^RAO7VLD(200,RAORC10) S:RAERR RAERR=4 Q:RAERR
    72         S RANEW(75.1,"+1,",15)=RAORC10
    73         S RAORC11=$P(RADATA,RAHLFS,11) ;approving rad/nm phys for some proc's
    74         I $G(RAORC11) S RAERR=$$EN3^RAO7VLD(200,RAORC11) S:RAERR RAERR=36 Q:RAERR
    75         I $G(RAORC11) S RANEW(75.1,"+1,",8)=RAORC11
    76         S RAORC12=$P(RADATA,RAHLFS,12)
    77         S RAERR=$$EN3^RAO7VLD(200,RAORC12) S:RAERR RAERR=6 Q:RAERR
    78         S RANEW(75.1,"+1,",14)=RAORC12
    79         S RAORC15=$P(RADATA,RAHLFS,15)
    80         S RAORC15=$$FMDATE^HLFNC(RAORC15)
    81         ;The order entered dt/time validity ck results are ignored because we
    82         ;have never been able to determine why FileMan erroneously rejects
    83         ;some date/times in a Silent FM call.  We now assume this date is OK.
    84         S RAERR=$$EN1^RAO7VLD(75.1,16,"E",RAORC15,"RASULT","") S:RAERR RAERR=35
    85         ;Q:RAERR
    86         I RAERR D  S RAERR=0
    87         . N I,RAX,RAVARS,RAERRDT
    88         . S RAX=$G(^TMP("DIERR",$J,1,"TEXT",1))
    89         . S RAERRDT=$$NOW^XLFDT()
    90         . F I="RAX","RAORC15","RAERRDT","RAERR" S RAVARS(I)=""
    91         . S:$D(X) RAVARS("X")="" S:$D(%DT) RAVARS("%DT")=""
    92         . S:$D(%DT(0)) RAVARS("%DT(0)")=""
    93         . ;S RAVARS("RAX")="",RAVARS("RAORC15")="",RAVARS("RAERRDT")="",RAVARS("RAERR")=""
    94         . D EN^ORERR("RAD MYSTERY ERROR",.RAMSG,.RAVARS)
    95         . Q
    96         S RANOW=$$NOW^XLFDT() I RANOW<RAORC15 S RAERR=7 Q
    97         S RANEW(75.1,"+1,",16)=RAORC15
    98         Q
    99 ERR     ; error control - file 'soft' errors with CPRS
    100         N RAVAR S RAVAR("XQY0")=""
    101         D ERR^RAO7UTL("HL7 message with unknown segment header",.RAMSG,.RAVAR)
    102         Q
     1RAO7RON ;HISC/GJC- Request message from OE/RR. (frontdoor) ;2/2/98  12:34
     2 ;;5.0;Radiology/Nuclear Medicine;**41,75**;Mar 16, 1998;Build 4
     3 ;
     4 ;------------------------- Variable List -------------------------------
     5 ; RADATA=HL7 data minus seg. hdr    RAHDR=Segment header
     6 ; RAHLFS="|"                        RAMSG=HL7 message passed in
     7 ; RAOBR12=danger code               RAOBR18=modifier
     8 ; RAOBR19=hosp. loc. pntr (44)      RAOBR30=trans. mode
     9 ; RAOBR4=univ. trans. mode          RAOBX2=format of observ. value
     10 ; RAOBX3=observ. ID                 RAOBX5=observ. value
     11 ; RAORC1=order control              RAORC10=entered by (200)
     12 ; RAORC11=approving rad/nm phys (for some procedures only)
     13 ; RAORC12=ordering provider (200)   RAORC15=order effective D/T
     14 ; RAORC16=order control reason      RAORC2=placer order #_"^OR"
     15 ; RAORC3=filler order #_"^RA"       RAORC7=start dt/freq. of service
     16 ; RAPID3=patient ID                 RAPID5=patient name (2)
     17 ; RAPV119=visit #                   RAPV12=patient class
     18 ; RAPV13=patient location (44)      RASEG=message seg. including header
     19 ; ----------------------------------------------------------------------
     20EN1(RAMSG) ; Pass in the message from RAO7RO.  Decipher information.
     21 D BRKOUT^RAO7UTL1
     22 ; defines RAORC2, RAORC3, RAPID3, RAPID5, RAMSH3 & RADIV(.119)
     23 S (RAERR,RAWP,RALINEX)=0,RACLIN="^" K ^TMP("RAWP",$J)
     24 F  S RALINEX=$O(RAMSG(RALINEX)) Q:RALINEX'>0  D  Q:RAERR
     25 . S RASEG=$G(RAMSG(RALINEX)) Q:$P(RASEG,RAHLFS)="MSH"  ; quit if MSH segment
     26 . S RAHDR=$P(RASEG,RAHLFS),RADATA=$P(RASEG,RAHLFS,2,999)
     27 . D @$S(RAHDR="PID":"PID",RAHDR="PV1":"PV1",RAHDR="ORC":"ORC",RAHDR="OBR":"OBR^RAO7RON1",RAHDR="OBX":"OBX^RAO7RON1",RAHDR="DG1":"GETCPRS^RABWORD1",RAHDR="ZCL":"GETCPRS^RABWORD1",1:"ERR")
     28 . Q
     29 S RANEW(75.1,"+1,",18)=RALDT
     30 Q
     31PID ; breakdown the 'PID' segment
     32 S RAERR=$$EN2^RAO7VLD(2,RAPID3,RAPID5) S:RAERR RAERR=2
     33 I 'RAERR S RANEW(75.1,"+1,",.01)=RAPID3
     34 Q
     35PV1 ; breakdown the 'PV1' segment
     36 S RAPV12=$P(RADATA,RAHLFS,2)
     37 S RAERR=$$EN1^RAO7VLD(75.1,4,"E",RAPV12,"RASULT","") S:RAERR RAERR=27 Q:RAERR
     38 S RANEW(75.1,"+1,",4)=RAPV12
     39 S RAPV13=$P(RADATA,RAHLFS,3)
     40 S RAERR=$$EN3^RAO7VLD(44,+RAPV13) S:RAERR RAERR=3 Q:RAERR
     41 S RANEW(75.1,"+1,",22)=+RAPV13
     42 I RAPV12="I",$P(^SC($P(RAPV13,U,1),0),U,3)'="W" S RAERR=9 Q:RAERR
     43 I RAPV12="O",$P(^SC($P(RAPV13,U,1),0),U,3)="W" S RAERR=9 Q:RAERR
     44 S RAPV119=$P(RADATA,RAHLFS,19)
     45 Q
     46ORC ; breakdown the 'ORC' segment
     47 ; RAORC7D is: timestamp HL7 format
     48 ; RAORC7P is: priority/urgency
     49 S:+RAORC2'>0 RAERR=16 Q:RAERR
     50 S RANEW(75.1,"+1,",7)=+RAORC2
     51 S RANEW(75.1,"+1,",5)=5
     52 S RAORC7=$P(RADATA,RAHLFS,7)
     53 S RAORC7D=$P(RAORC7,RAECH(1),4)
     54 S RAORC7D=$$FMDATE^HLFNC(RAORC7D)
     55 S RAERR=$$EN1^RAO7VLD(75.1,21,"E",RAORC7D,"RASULT","") S:RAERR RAERR=28 Q:RAERR
     56 S RANEW(75.1,"+1,",21)=RAORC7D
     57 S X=$P(RAORC7,RAECH(1),6)
     58 S RAORC7P=$S(X="S":1,X="A":2,X="R":9,1:"") I +RAORC7P'>0 S RAERR=5 Q
     59 S RANEW(75.1,"+1,",6)=RAORC7P
     60 S RAORC10=$P(RADATA,RAHLFS,10)
     61 S RAERR=$$EN3^RAO7VLD(200,RAORC10) S:RAERR RAERR=4 Q:RAERR
     62 S RANEW(75.1,"+1,",15)=RAORC10
     63 S RAORC11=$P(RADATA,RAHLFS,11) ;approving rad/nm phys for some proc's
     64 I $G(RAORC11) S RAERR=$$EN3^RAO7VLD(200,RAORC11) S:RAERR RAERR=36 Q:RAERR
     65 I $G(RAORC11) S RANEW(75.1,"+1,",8)=RAORC11
     66 S RAORC12=$P(RADATA,RAHLFS,12)
     67 S RAERR=$$EN3^RAO7VLD(200,RAORC12) S:RAERR RAERR=6 Q:RAERR
     68 S RANEW(75.1,"+1,",14)=RAORC12
     69 S RAORC15=$P(RADATA,RAHLFS,15)
     70 S RAORC15=$$FMDATE^HLFNC(RAORC15)
     71 ;The order entered dt/time validity ck results are ignored because we
     72 ;have never been able to determine why FileMan erroneously rejects
     73 ;some date/times in a Silent FM call.  We now assume this date is OK.
     74 S RAERR=$$EN1^RAO7VLD(75.1,16,"E",RAORC15,"RASULT","") S:RAERR RAERR=35
     75 ;Q:RAERR
     76 I RAERR D  S RAERR=0
     77 . N I,RAX,RAVARS,RAERRDT
     78 . S RAX=$G(^TMP("DIERR",$J,1,"TEXT",1))
     79 . S RAERRDT=$$NOW^XLFDT()
     80 . F I="RAX","RAORC15","RAERRDT","RAERR" S RAVARS(I)=""
     81 . S:$D(X) RAVARS("X")="" S:$D(%DT) RAVARS("%DT")=""
     82 . S:$D(%DT(0)) RAVARS("%DT(0)")=""
     83 . ;S RAVARS("RAX")="",RAVARS("RAORC15")="",RAVARS("RAERRDT")="",RAVARS("RAERR")=""
     84 . D EN^ORERR("RAD MYSTERY ERROR",.RAMSG,.RAVARS)
     85 . Q
     86 S RANOW=$$NOW^XLFDT() I RANOW<RAORC15 S RAERR=7 Q
     87 S RANEW(75.1,"+1,",16)=RAORC15
     88 Q
     89ERR ; error control - file 'soft' errors with CPRS
     90 N RAVAR S RAVAR("XQY0")=""
     91 D ERR^RAO7UTL("HL7 message with unknown segment header",.RAMSG,.RAVAR)
     92 Q
Note: See TracChangeset for help on using the changeset viewer.