| 1 | RAO7RON1 ;HISC/GJC,FPT-Request message from OE/RR. (frontdoor) ; 7/26/05 2:08pm
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**69,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=Img. Loc. pntr (79.1)     RAOBR30=trans. mode
 | 
|---|
| 9 |  ; RAOBR31=Reason for Study          RAOBX2=format of observ. value
 | 
|---|
| 10 |  ; RAOBR4=univ. trans. mode          RAOBX5=observ. value
 | 
|---|
| 11 |  ; RAOBX3=observ. ID                 RAORC10=entered by (200
 | 
|---|
| 12 |  ; RAORC1=order control              RAORC15=order effective D/T
 | 
|---|
| 13 |  ; RAORC12=ordering provider (200)   RAORC2=placer order #_"^OR"
 | 
|---|
| 14 |  ; RAORC16=order control reason      RAORC7=start dt/freq. of service
 | 
|---|
| 15 |  ; RAORC3=filler order #_"^RA"       RAPID5=patient name (2)
 | 
|---|
| 16 |  ; RAPID3=patient ID                 RAPV12=patient class
 | 
|---|
| 17 |  ; RAPV119=visit #                   RASEG=message seg. including header
 | 
|---|
| 18 |  ; RAPV13=patient location (44)
 | 
|---|
| 19 |  ; ----------------------------------------------------------------------
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | OBR ; breakdown the 'OBR' segment
 | 
|---|
| 22 |  S RAOBR4=$P(RADATA,RAHLFS,4)
 | 
|---|
| 23 |  F I=1:1:$L(RAOBR4,RAECH(1)) S RAOBR4(I)=$P(RAOBR4,RAECH(1),I)
 | 
|---|
| 24 |  I RAOBR4(1)'="" S RACPTIEN=+$O(^ICPT("B",RAOBR4(1),0)) S:'RACPTIEN RAERR=8 Q:RAERR  ;RA*5*69
 | 
|---|
| 25 |  S RAERR=$$EN2^RAO7VLD(71,+RAOBR4(4),RAOBR4(5)) S:RAERR RAERR=8 Q:RAERR
 | 
|---|
| 26 |  I $$UP^XLFSTR($P($G(^RAMIS(71,+RAOBR4(4),0)),"^",6))="P" D  Q:RAERR
 | 
|---|
| 27 |  . S RAERR=$$EN6^RAO7VLD(+RAOBR4(4)) S:RAERR RAERR=32
 | 
|---|
| 28 |  . Q
 | 
|---|
| 29 |  I RAOBR4(1)'="" S:'$D(^RAMIS(71,"D",RACPTIEN,+RAOBR4(4))) RAERR=8 Q:RAERR  ;RA*5*69
 | 
|---|
| 30 |  S RAOBR4(4,"I-TYPE")=+$P($G(^RAMIS(71,+RAOBR4(4),0)),"^",12)
 | 
|---|
| 31 |  S RANEW(75.1,"+1,",2)=RAOBR4(4)
 | 
|---|
| 32 |  S RAIT=$P(^RAMIS(71,+RAOBR4(4),0),U,12)
 | 
|---|
| 33 |  S RAERR=$$EN3^RAO7VLD(79.2,RAIT) Q:RAERR
 | 
|---|
| 34 |  S RANEW(75.1,"+1,",3)=RAIT
 | 
|---|
| 35 |  S RAOBR12=$P(RADATA,RAHLFS,12)
 | 
|---|
| 36 |  S RAOBR12=$S($E(RAOBR12)="":"n","yYiI"[$E(RAOBR12):"y",1:"n")
 | 
|---|
| 37 |  S RAERR=$$EN1^RAO7VLD(75.1,24,"E",RAOBR12,"RASULT","") S:RAERR RAERR=10 Q:RAERR
 | 
|---|
| 38 |  S RANEW(75.1,"+1,",24)=RAOBR12
 | 
|---|
| 39 |  S RAOBR18=$P(RADATA,RAHLFS,18)
 | 
|---|
| 40 |  N RASERIES,RAIMAG
 | 
|---|
| 41 |  F I=1:1:$L(RAOBR18,RAECH(2)) S:$L($P(RAOBR18,RAECH(2),I))>0 RAOBR18(I)=$P(RAOBR18,RAECH(2),I)
 | 
|---|
| 42 |  S I=0 F  S I=$O(RAOBR18(I)) Q:I'>0  D  Q:RAERR
 | 
|---|
| 43 |  . S RAMODIEN=+$O(^RAMIS(71.2,"B",RAOBR18(I),0))
 | 
|---|
| 44 |  . S:'RAMODIEN RAERR=11 Q:RAERR
 | 
|---|
| 45 |  . S RAIMAG=$P($G(^RAMIS(71,+RAOBR4(4),0)),U,12) ; type of imaging
 | 
|---|
| 46 |  . S:'$D(^RAMIS(71.2,"AB",RAIMAG,RAMODIEN)) RAERR=33 Q:RAERR
 | 
|---|
| 47 |  . S RASERIES=$S($P($G(^RAMIS(71,+RAOBR4(4),0)),"^",6)="S":1,1:0)
 | 
|---|
| 48 |  . S:RASERIES&($P($G(^RAMIS(71.2,RAMODIEN,0)),U,2)]"") RAERR=34 Q:RAERR
 | 
|---|
| 49 |  . S RAPLCHLD=RAPLCHLD+1
 | 
|---|
| 50 |  . S RANEW(75.1125,"+"_RAPLCHLD_",+1,",.01)=RAMODIEN
 | 
|---|
| 51 |  . Q
 | 
|---|
| 52 |  S RAOBR19=$P(RADATA,RAHLFS,19),RAOBR19(1)=$P(RAOBR19,U,1)
 | 
|---|
| 53 |  S RAOBR19(2)=$P(RAOBR19,U,2),RAOBR19(3)=+RAOBR19(1)
 | 
|---|
| 54 |  I RAOBR19(3) D  Q:RAERR
 | 
|---|
| 55 |  . S RAOBR19(3,"I-TYPE")=+$P($G(^RA(79.1,+RAOBR19(3),0)),"^",6)
 | 
|---|
| 56 |  . I RAOBR4(4,"I-TYPE")'=RAOBR19(3,"I-TYPE") S RAERR=31
 | 
|---|
| 57 |  . Q
 | 
|---|
| 58 |  S RANEW(75.1,"+1,",20)=$S(RAOBR19(3)>0:RAOBR19(3),1:"")
 | 
|---|
| 59 |  S X=$P(RADATA,RAHLFS,30)
 | 
|---|
| 60 |  S RAOBR30=$S(X="CART":"s",X="PORT":"p",X="WALK":"a",X="WHLC":"w",1:"")
 | 
|---|
| 61 |  I RAOBR30']"" S RAERR=13
 | 
|---|
| 62 |  S:'RAERR RAERR=$$EN1^RAO7VLD(75.1,19,"E",RAOBR30,"RASULT","")
 | 
|---|
| 63 |  S:RAERR RAERR=13 Q:RAERR
 | 
|---|
| 64 |  S RANEW(75.1,"+1,",19)=RAOBR30
 | 
|---|
| 65 |  ;--- Reason for Study P75 ---
 | 
|---|
| 66 |  ;CPRS will not pass 'Reason for Study' data until OR*3.0*243
 | 
|---|
| 67 |  ;(GUI CPRS V27) is released. Define a default Reason for Study 
 | 
|---|
| 68 |  I '$$PATCH^XPDUTL("OR*3.0*243") S RAOBR31="See Clinical History:"
 | 
|---|
| 69 |  E  D  Q:RAERR  ;CPRS V27 is installed
 | 
|---|
| 70 |  .S RAOBR31=$P($P(RADATA,RAHLFS,31),RAECH(1),2)
 | 
|---|
| 71 |  .S:RAOBR31="" RAERR=38 Q:RAERR
 | 
|---|
| 72 |  .S RAERR=$$EN1^RAO7VLD(75.1,1.1,"E",RAOBR31,"RASULT","")
 | 
|---|
| 73 |  .S:RAERR RAERR=39
 | 
|---|
| 74 |  .Q
 | 
|---|
| 75 |  S:'RAERR RANEW(75.1,"+1,",1.1)=RAOBR31
 | 
|---|
| 76 |  K RAOBR31
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | OBX ; breakdown the 'OBX' segment
 | 
|---|
| 79 |  S RAOBX2=$P(RADATA,RAHLFS,2)
 | 
|---|
| 80 |  S RAERR=$S(RAOBX2="TX":0,RAOBX2="CE":0,RAOBX2="TS":0,1:1) Q:RAERR=17
 | 
|---|
| 81 |  S RAOBX3=$P(RADATA,RAHLFS,3)
 | 
|---|
| 82 |  S RAOBX5=$P(RADATA,RAHLFS,5)
 | 
|---|
| 83 |  F I=1:1:$L(RAOBX3,RAECH(1)) S RAOBX3(I)=$P(RAOBX3,RAECH(1),I)
 | 
|---|
| 84 |  S X=RAOBX3(2) D UPPER^RAUTL4 S RAOBX3(2)=Y
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ;P75 check to see if CLINICAL HISTORY data is passed. If data is passed, and not yet
 | 
|---|
| 87 |  ;determined if valid continue to check for validity until:
 | 
|---|
| 88 |  ;1-valid data is found
 | 
|---|
| 89 |  ;2-no data left to validate
 | 
|---|
| 90 |  I RAOBX3(1)=2000.02 D
 | 
|---|
| 91 |  .;check if a null value is sent for CLINICAL HISTORY which is
 | 
|---|
| 92 |  .;possible if the CPRS user does not enter a CLINICAL HISTORY
 | 
|---|
| 93 |  .I RAOBX5="",$P(RACLIN,U)'=1 Q
 | 
|---|
| 94 |  .;now if data was sent (RAOBX5'="") set the data received from CPRS flag
 | 
|---|
| 95 |  .S $P(RACLIN,U)=1
 | 
|---|
| 96 |  .;now that we know the CPRS user intended to send CLINICAL HISTORY data
 | 
|---|
| 97 |  .;radiology has to validate the format of that data. $$EN4^RAO7VLD(str)
 | 
|---|
| 98 |  .;returns 1 if the data passed in was valid, else 0. Once we establish
 | 
|---|
| 99 |  .;that valid data has been sent, all subsequent data is accepted, valid
 | 
|---|
| 100 |  .;or not.
 | 
|---|
| 101 |  .S:$$EN4^RAO7VLD(RAOBX5) $P(RACLIN,U,2)=1
 | 
|---|
| 102 |  .;now, if the current character string or any other character string
 | 
|---|
| 103 |  .;of data representing the CLINICAL HISTORY has been accepted as valid
 | 
|---|
| 104 |  .;($P(RACLIN,U,2)=1) save the character string
 | 
|---|
| 105 |  .I $P(RACLIN,U,2)=1 S RAWP=RAWP+1,^TMP("RAWP",$J,RAWP)=RAOBX5
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  I RAOBX3(1)=2000.33 D  Q:RAERR
 | 
|---|
| 108 |  .S RAERR=$$EN1^RAO7VLD(75.1,13,"E",RAOBX5,"RASULT","") S:RAERR RAERR=14 Q:RAERR
 | 
|---|
| 109 |  .S RAPREG=$E(RAOBX5),RAPREG=$S(RAPREG="N"!(RAPREG="n"):"n",RAPREG="Y"!(RAPREG="y"):"y",1:"u")
 | 
|---|
| 110 |  .S RANEW(75.1,"+1,",13)=RAPREG
 | 
|---|
| 111 |  I RAOBX3(1)=34!(RAOBX2="CE") D  Q:RAERR
 | 
|---|
| 112 |  .S RAERR=$$EN2^RAO7VLD(34,$P(RAOBX5,RAECH(1)),$P(RAOBX5,RAECH(1),2)) Q:RAERR
 | 
|---|
| 113 |  .S RANEW(75.1,"+1,",9)=+RAOBX5
 | 
|---|
| 114 |  I RAOBX3(2)["RESEARCH" D  S:RAERR RAERR=18 Q:RAERR
 | 
|---|
| 115 |  .S RAERR=$$EN1^RAO7VLD(75.1,9.5,"E",RAOBX5,"RASULT","") S:RAERR RAERR=19 Q:RAERR
 | 
|---|
| 116 |  .S RANEW(75.1,"+1,",9.5)=RAOBX5
 | 
|---|
| 117 |  I RAOBX3(2)["PRE-OP" D  Q:RAERR
 | 
|---|
| 118 |  .S RAOBX5=$$FMDATE^HLFNC(RAOBX5)
 | 
|---|
| 119 |  .S RAERR=$$EN1^RAO7VLD(75.1,12,"E",RAOBX5,"RASULT","") S:RAERR RAERR=20 Q:RAERR
 | 
|---|
| 120 |  .S RANEW(75.1,"+1,",12)=RAOBX5
 | 
|---|
| 121 |  I $D(RANEW(75.1,"+1,",9))&($D(RANEW(75.1,"+1,",9.5))) S RAERR=29
 | 
|---|
| 122 |  Q
 | 
|---|