[613] | 1 | GMRCIMSG ;SLC/JFR - IFC MESSAGE HANDLING ROUTINE; 09/26/02 00:23
|
---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**22,28,51**;DEC 27, 1997
|
---|
| 3 | ;
|
---|
| 4 | Q ;don't start at the top
|
---|
| 5 | IN ;process incoming message and save segments to ^TMP(
|
---|
| 6 | K ^TMP("GMRCIF",$J)
|
---|
| 7 | N HLNODE,SEG,I,GMRCIER ;production code
|
---|
| 8 | F I=1:1 X HLNEXT Q:HLQUIT'>0 D
|
---|
| 9 | . I $P(HLNODE,"|")="OBX" D ;multiple segs for OBX
|
---|
| 10 | .. S ^TMP("GMRCIF",$J,"OBX",$P(HLNODE,"|",2),$P(HLNODE,"|",5))=$E(HLNODE,5,999)
|
---|
| 11 | . I $P(HLNODE,"|")="NTE" D ; may be multiple NTE's
|
---|
| 12 | .. S ^TMP("GMRCIF",$J,"NTE",$P(HLNODE,"|",2))=$E(HLNODE,5,999)
|
---|
| 13 | . I "OBXNTE"'[$P(HLNODE,"|") D ;all other segs are single
|
---|
| 14 | .. S ^TMP("GMRCIF",$J,$P(HLNODE,"|"))=$E(HLNODE,5,999)
|
---|
| 15 | . Q
|
---|
| 16 | ;
|
---|
| 17 | I '$$VALMSG(^TMP("GMRCIF",$J,"ORC")) D EX Q ;chk msg for valid cslt #'s
|
---|
| 18 | ;
|
---|
| 19 | I $P(^TMP("GMRCIF",$J,"ORC"),"|")="NW" D D EX Q
|
---|
| 20 | . I $P(^TMP("GMRCIF",$J,"ORC"),"|",2)["TST1234" D D EX Q ;testing impl
|
---|
| 21 | .. D TST^GMRCIAC2($NA(^TMP("GMRCIF",$J)))
|
---|
| 22 | . D NW^GMRCIACT($NA(^TMP("GMRCIF",$J)))
|
---|
| 23 | I $P(^TMP("GMRCIF",$J,"ORC"),"|")="XO" D D EX Q
|
---|
| 24 | . D RESUB^GMRCIAC1($NA(^TMP("GMRCIF",$J)))
|
---|
| 25 | I $P(^TMP("GMRCIF",$J,"ORC"),"|")="XX" D D EX Q
|
---|
| 26 | . D FWD^GMRCIAC1($NA(^TMP("GMRCIF",$J)))
|
---|
| 27 | I $P(^TMP("GMRCIF",$J,"ORC"),"|")="RE" D D EX Q
|
---|
| 28 | . I $P($G(^TMP("GMRCIF",$J,"OBX",4,1)),"|",11)="D" D Q
|
---|
| 29 | .. D DIS^GMRCIACT($NA(^TMP("GMRCIF",$J))) ; dis-assoc. result
|
---|
| 30 | . I $P($P(^TMP("GMRCIF",$J,"ORC"),"|",16),U)="S" D Q
|
---|
| 31 | .. D SF^GMRCIAC1($NA(^TMP("GMRCIF",$J))) ; significant findings
|
---|
| 32 | . D COMP^GMRCIAC1($NA(^TMP("GMRCIF",$J)))
|
---|
| 33 | D OTHER^GMRCIACT($NA(^TMP("GMRCIF",$J)))
|
---|
| 34 | D EX
|
---|
| 35 | Q
|
---|
| 36 | ;
|
---|
| 37 | EX ; clean up ^TMP(
|
---|
| 38 | K ^TMP("GMRCIF",$J)
|
---|
| 39 | Q
|
---|
| 40 | ;
|
---|
| 41 | ORRIN ;process IFC responses
|
---|
| 42 | K ^TMP("GMRCIF",$J)
|
---|
| 43 | N HLNODE,SEG,I ;production code
|
---|
| 44 | F I=1:1 X HLNEXT Q:HLQUIT'>0 D
|
---|
| 45 | .S ^TMP("GMRCIF",$J,$P(HLNODE,"|"))=$E(HLNODE,5,999)
|
---|
| 46 | I $D(^TMP("GMRCIF",$J,"ORC")),$P(^("ORC"),"|")="OK" D
|
---|
| 47 | . N GMRCFNUM,GMRCROUT,GMRCDA,FDA
|
---|
| 48 | . S GMRCROUT=$$IEN^XUAF4($P($P(^TMP("GMRCIF",$J,"ORC"),"|",3),U,2))
|
---|
| 49 | . S GMRCDA=+$P(^TMP("GMRCIF",$J,"ORC"),"|",2)
|
---|
| 50 | . ;I GMRCROUT'=$P(^GMR(123,GMRCDA,0),U,23) Q
|
---|
| 51 | . S GMRCFNUM=+$P(^TMP("GMRCIF",$J,"ORC"),"|",3)
|
---|
| 52 | . S FDA(1,123,GMRCDA_",",.06)=GMRCFNUM
|
---|
| 53 | . D UPDATE^DIE("","FDA(1)",,"GMRCERR")
|
---|
| 54 | . Q
|
---|
| 55 | I $P(^TMP("GMRCIF",$J,"MSA"),"|")="AA" D
|
---|
| 56 | . N MSGID,MSGLOG,FDA,GMRCDA,GMRCACT,GMRCLOG
|
---|
| 57 | . S MSGID=$P(^TMP("GMRCIF",$J,"MSA"),"|",2)
|
---|
| 58 | . S MSGLOG=$O(^GMR(123.6,"AM",MSGID,0)) Q:'MSGLOG
|
---|
| 59 | . S FDA(1,123.6,MSGLOG_",",.06)="@"
|
---|
| 60 | . S FDA(1,123.6,MSGLOG_",",.08)="@"
|
---|
| 61 | . D UPDATE^DIE("","FDA(1)",,"GMRCERR")
|
---|
| 62 | . S GMRCDA=$P(^GMR(123.6,MSGLOG,0),U,4) Q:'GMRCDA
|
---|
| 63 | . S GMRCACT=$P(^GMR(123.6,MSGLOG,0),U,5) Q:'GMRCACT
|
---|
| 64 | . S GMRCACT=$O(^GMR(123.6,"AC",GMRCDA,GMRCACT)) D
|
---|
| 65 | .. I 'GMRCACT Q
|
---|
| 66 | .. S GMRCLOG=$O(^GMR(123.6,"AC",GMRCDA,GMRCACT,1,0)) Q:'GMRCLOG
|
---|
| 67 | .. I $P(^GMR(123.6,GMRCLOG,0),U,8)<900 Q ;re-send 901 & 902 immed.
|
---|
| 68 | .. D TRIGR^GMRCIEVT(GMRCDA,GMRCACT)
|
---|
| 69 | . Q
|
---|
| 70 | I $P(^TMP("GMRCIF",$J,"MSA"),"|")="AR" D
|
---|
| 71 | . N MSGID,MSGLOG,FDA,GMRCERR,GMRCE
|
---|
| 72 | . S MSGID=$P(^TMP("GMRCIF",$J,"MSA"),"|",2)
|
---|
| 73 | . S MSGLOG=$O(^GMR(123.6,"AM",MSGID,0)) Q:'MSGLOG
|
---|
| 74 | . S GMRCE=$P(^TMP("GMRCIF",$J,"MSA"),"|",3)
|
---|
| 75 | . S FDA(1,123.6,MSGLOG_",",.08)=GMRCE
|
---|
| 76 | . I GMRCE=802 S FDA(1,123.6,MSGLOG_",",.06)="@"
|
---|
| 77 | . D UPDATE^DIE("","FDA(1)",,"GMRCERR")
|
---|
| 78 | . I GMRCE=901!(GMRCE=902) Q ;no alerts on these probs (yet)
|
---|
| 79 | . I GMRCE=201 D Q
|
---|
| 80 | .. I '$$GET^XPAR("SYS","GMRC IFC ALERT IMMED ON PT ERR",1) Q
|
---|
| 81 | .. D SNDALRT^GMRCIERR(MSGLOG,"C","IFC patient error at remote facility")
|
---|
| 82 | . D SNDALRT^GMRCIERR(MSGLOG,"C")
|
---|
| 83 | K ^TMP("GMRCIF",$J)
|
---|
| 84 | I $T(ORRIN^MAGDTR01)'="" D ;invoke Imaging code if tag^routine exists
|
---|
| 85 | . D ORRIN^MAGDTR01
|
---|
| 86 | Q
|
---|
| 87 | ;
|
---|
| 88 | VALMSG(GMRCORC) ;check to make sure placer and filler # match current entry
|
---|
| 89 | ; Input:
|
---|
| 90 | ; GMRCORC = ORC segment from incoming HL7 msg
|
---|
| 91 | ;
|
---|
| 92 | I $P(GMRCORC,"|")="NW" Q 1 ; no #'s to match on new order
|
---|
| 93 | N GMRCPDA,GMRCFDA,GMRCPSIT,GMRCFSIT,GMRCROL,GMRCOK
|
---|
| 94 | S GMRCPDA=+$P(GMRCORC,"|",2)
|
---|
| 95 | S GMRCPSIT=$$IEN^XUAF4($P($P(GMRCORC,"|",2),U,2))
|
---|
| 96 | S GMRCFDA=+$P(GMRCORC,"|",3)
|
---|
| 97 | S GMRCFSIT=$$IEN^XUAF4($P($P(GMRCORC,"|",3),U,2))
|
---|
| 98 | I $$KSP^XUPARAM("INST")=GMRCPSIT S GMRCROL="P"
|
---|
| 99 | I $$KSP^XUPARAM("INST")=GMRCFSIT S GMRCROL="F"
|
---|
| 100 | S GMRCOK=1
|
---|
| 101 | I '$D(GMRCROL) S GMRCOK=0,GMRCROL="" ;bad institutions in msg
|
---|
| 102 | I GMRCROL="P" D
|
---|
| 103 | . I '$D(^GMR(123,GMRCPDA,0)) S GMRCOK=0 Q ;no such cslt #
|
---|
| 104 | . I $P(^GMR(123,GMRCPDA,0),U,22)'=GMRCFDA S GMRCOK=0 Q ;cslt # prob
|
---|
| 105 | . I $P(^GMR(123,GMRCPDA,0),U,23)'=GMRCFSIT S GMRCOK=0 Q ;routing facil.
|
---|
| 106 | I GMRCROL="F" D
|
---|
| 107 | . I '$D(^GMR(123,GMRCFDA,0)) S GMRCOK=0 Q ;no such cslt #
|
---|
| 108 | . I $P(^GMR(123,GMRCFDA,0),U,22)'=GMRCPDA S GMRCOK=0 Q ;cslt # prob
|
---|
| 109 | . I $P(^GMR(123,GMRCFDA,0),U,23)'=GMRCPSIT S GMRCOK=0 Q ;routing facil.
|
---|
| 110 | I 'GMRCOK D ;return a 101 error to sending site
|
---|
| 111 | . N GMRCRSLT
|
---|
| 112 | . D RESP^GMRCIUTL("AR",HL("MID"),,,101) ;build HLA(
|
---|
| 113 | . D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT) ;-(
|
---|
| 114 | Q GMRCOK
|
---|
| 115 | ;
|
---|