[613] | 1 | GMRCIEV1 ;SLC/JFR - IFC EVENTS CONT'D ;01/27/03 09:28
|
---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**22,28,31**;DEC 27, 1997
|
---|
| 3 | Q ;no-no-no
|
---|
| 4 | RESUB(GMRCDA,GMRCACT) ;build HL7 msg with edits from resubit
|
---|
| 5 | ;Input:
|
---|
| 6 | ; GMRCDA = ien from file 123
|
---|
| 7 | ; GMRCACT = ien of the activity from 40 multiple
|
---|
| 8 | ;
|
---|
| 9 | N HL,HLL,SEG,GMRC773,GMRCIQT
|
---|
| 10 | S SEG=1
|
---|
| 11 | K ^TMP("HLS",$J)
|
---|
| 12 | D INIT^HLFNC2("GMRC IFC ORM EVENT",.HL)
|
---|
| 13 | I $G(HL) D Q ; if HL array can't be built, log it with an error
|
---|
| 14 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,,904)
|
---|
| 15 | D I $D(GMRCIQT) D NOMPI^GMRCIEVT(GMRCDA,GMRCACT) Q ;build PID seg
|
---|
| 16 | . N GMRCDFN S GMRCDFN=$P(^GMR(123,+GMRCDA,0),U,2)
|
---|
| 17 | . I '$G(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 18 | . I $$GETICN^MPIF001(GMRCDFN)<1 S GMRCIQT=1 Q
|
---|
| 19 | . I $$IFLOCAL^MPIF001(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 20 | . S ^TMP("HLS",$J,SEG)=$$EN^VAFCPID(GMRCDFN,"1,2,3,4,5,7,8,19")
|
---|
| 21 | . S SEG=SEG+1
|
---|
| 22 | . Q
|
---|
| 23 | ;
|
---|
| 24 | ;build ORC seg based on GMRCACT
|
---|
| 25 | S ^TMP("HLS",$J,SEG)=$$ORC^GMRCISEG(GMRCDA,"XO","IP",GMRCACT)
|
---|
| 26 | S SEG=SEG+1
|
---|
| 27 | ;
|
---|
| 28 | ; include Inpatient or Outpatient
|
---|
| 29 | S ^TMP("HLS",$J,SEG)=$$OBR^GMRCISG1(GMRCDA,GMRCACT)
|
---|
| 30 | S SEG=SEG+1
|
---|
| 31 | ;
|
---|
| 32 | D ;load up reason for request
|
---|
| 33 | . K ^TMP("GMRCRFR",$J)
|
---|
| 34 | . D OBXWP^GMRCISEG(GMRCDA,"XO",GMRCACT,$NA(^TMP("GMRCRFR",$J)))
|
---|
| 35 | . I '$D(^TMP("GMRCRFR",$J)) Q
|
---|
| 36 | . N I S I=0
|
---|
| 37 | . F S I=$O(^TMP("GMRCRFR",$J,I)) Q:'I D
|
---|
| 38 | .. S ^TMP("HLS",$J,SEG)=^TMP("GMRCRFR",$J,I)
|
---|
| 39 | .. S SEG=SEG+1
|
---|
| 40 | . K ^TMP("GMRCRFR",$J)
|
---|
| 41 | . Q
|
---|
| 42 | D ;prov DX changed, send it
|
---|
| 43 | . S ^TMP("HLS",$J,SEG)=$$OBXPD^GMRCISG1(GMRCDA)
|
---|
| 44 | . S SEG=SEG+1
|
---|
| 45 | ;
|
---|
| 46 | D ;send ed-res comment and file as is
|
---|
| 47 | . N I
|
---|
| 48 | . K ^TMP("GMRCMT",$J)
|
---|
| 49 | . D OBXWP^GMRCISEG(GMRCDA,"",GMRCACT,$NA(^TMP("GMRCMT",$J)))
|
---|
| 50 | . Q:'$O(^TMP("GMRCMT",$J,0))
|
---|
| 51 | . S I=0 F S I=$O(^TMP("GMRCMT",$J,I)) Q:'I D
|
---|
| 52 | .. S ^TMP("HLS",$J,SEG)=^TMP("GMRCMT",$J,I)
|
---|
| 53 | .. S SEG=SEG+1
|
---|
| 54 | . K ^TMP("GMRCMT",$J)
|
---|
| 55 | . Q
|
---|
| 56 | S ^TMP("HLS",$J,SEG)=$$OBXTZ^GMRCISEG ;always include local time zone
|
---|
| 57 | S HLL("LINKS",1)=$$ROUTE^GMRCIEVT(GMRCDA) I '$L(HLL("LINKS",1)) D Q
|
---|
| 58 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,"",903) ;log error
|
---|
| 59 | D GENERATE^HLMA("GMRC IFC ORM EVENT","GM",1,.GMRC773)
|
---|
| 60 | N ERR S ERR=$S($P(GMRC773,U,2):904,1:"") ; if err from HL7, log it
|
---|
| 61 | D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,+GMRC773,ERR)
|
---|
| 62 | Q
|
---|
| 63 | ;
|
---|
| 64 | SF(GMRCDA,GMRCACT) ;send SIG FINDING update
|
---|
| 65 | ;Input:
|
---|
| 66 | ; GMRCDA = ien from file 123
|
---|
| 67 | ; GMRCACT = ien of the activity from 40 multiple
|
---|
| 68 | N HL,HLL,SEG,GMRC773,GMRCIQT,GMRCOS
|
---|
| 69 | S SEG=1
|
---|
| 70 | K ^TMP("HLS",$J)
|
---|
| 71 | D INIT^HLFNC2("GMRC IFC ORM EVENT",.HL)
|
---|
| 72 | I $G(HL) D Q ; if HL array can't be built, log it with an error
|
---|
| 73 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,,904)
|
---|
| 74 | D I $D(GMRCIQT) D NOMPI^GMRCIEVT(GMRCDA,GMRCACT) Q ;build PID seg
|
---|
| 75 | . N GMRCDFN S GMRCDFN=$P(^GMR(123,+GMRCDA,0),U,2)
|
---|
| 76 | . I '$G(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 77 | . I $$GETICN^MPIF001(GMRCDFN)<1 S GMRCIQT=1 Q
|
---|
| 78 | . I $$IFLOCAL^MPIF001(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 79 | . S ^TMP("HLS",$J,SEG)=$$EN^VAFCPID(GMRCDFN,"1,2,3,4,5,7,8,19")
|
---|
| 80 | . S SEG=SEG+1
|
---|
| 81 | . Q
|
---|
| 82 | ;
|
---|
| 83 | ;build ORC seg based on GMRCACT
|
---|
| 84 | S GMRCOS=$S($P(^GMR(123,GMRCDA,0),U,12)="2":"CM",1:"IP")
|
---|
| 85 | S ^TMP("HLS",$J,SEG)=$$ORC^GMRCISEG(GMRCDA,"RE","CM",GMRCACT)
|
---|
| 86 | S SEG=SEG+1
|
---|
| 87 | I $O(^GMR(123,GMRCDA,40,GMRCACT,1,0)) D ;load up comment to send
|
---|
| 88 | . K ^TMP("GMRCMT",$J)
|
---|
| 89 | . D OBXWP^GMRCISEG(GMRCDA,"",GMRCACT,$NA(^TMP("GMRCMT",$J)))
|
---|
| 90 | . Q:'$O(^TMP("GMRCMT",$J,0))
|
---|
| 91 | . N I S I=0 F S I=$O(^TMP("GMRCMT",$J,I)) Q:'I D
|
---|
| 92 | .. S ^TMP("HLS",$J,SEG)=^TMP("GMRCMT",$J,I)
|
---|
| 93 | .. S SEG=SEG+1
|
---|
| 94 | . K ^TMP("GMRCMT",$J)
|
---|
| 95 | . Q
|
---|
| 96 | S ^TMP("HLS",$J,SEG)=$$OBXSF^GMRCISEG(GMRCDA),SEG=SEG+1
|
---|
| 97 | S ^TMP("HLS",$J,SEG)=$$OBXTZ^GMRCISEG ;always include local time zone
|
---|
| 98 | S HLL("LINKS",1)=$$ROUTE^GMRCIEVT(GMRCDA) I '$L(HLL("LINKS",1)) D Q
|
---|
| 99 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,"",903) ;log error
|
---|
| 100 | D GENERATE^HLMA("GMRC IFC ORM EVENT","GM",1,.GMRC773)
|
---|
| 101 | N ERR S ERR=$S($P(GMRC773,U,2):904,1:"") ; if err from HL7, log it
|
---|
| 102 | D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,+GMRC773,ERR)
|
---|
| 103 | Q
|
---|
| 104 | ;
|
---|
| 105 | FWD(GMRCDA,GMRCACT) ;bld HL7 msg upon FWD action
|
---|
| 106 | ;Input:
|
---|
| 107 | ; GMRCDA = ien from file 123
|
---|
| 108 | ; GMRCACT = ien of the activity from 40 multiple
|
---|
| 109 | N HL,HLL,SEG,GMRC773,GMRCIQT,GMRCOS
|
---|
| 110 | S SEG=1
|
---|
| 111 | K ^TMP("HLS",$J)
|
---|
| 112 | D INIT^HLFNC2("GMRC IFC ORM EVENT",.HL)
|
---|
| 113 | I $G(HL) D Q ; if HL array can't be built, log it with an error
|
---|
| 114 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,,904)
|
---|
| 115 | D I $D(GMRCIQT) D NOMPI^GMRCIEVT(GMRCDA,GMRCACT) Q ;build PID seg
|
---|
| 116 | . N GMRCDFN S GMRCDFN=$P(^GMR(123,+GMRCDA,0),U,2)
|
---|
| 117 | . I '$G(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 118 | . I $$GETICN^MPIF001(GMRCDFN)<1 S GMRCIQT=1 Q
|
---|
| 119 | . I $$IFLOCAL^MPIF001(GMRCDFN) S GMRCIQT=1 Q
|
---|
| 120 | . S ^TMP("HLS",$J,SEG)=$$EN^VAFCPID(GMRCDFN,"1,2,3,4,5,7,8,19")
|
---|
| 121 | . S SEG=SEG+1
|
---|
| 122 | . Q
|
---|
| 123 | ;
|
---|
| 124 | ;build ORC seg based on GMRCACT
|
---|
| 125 | S ^TMP("HLS",$J,SEG)=$$ORC^GMRCISEG(GMRCDA,"XX","IP",GMRCACT)
|
---|
| 126 | S SEG=SEG+1
|
---|
| 127 | S ^TMP("HLS",$J,SEG)=$$OBR^GMRCISG1(GMRCDA,GMRCACT),SEG=SEG+1
|
---|
| 128 | I $O(^GMR(123,GMRCDA,40,GMRCACT,1,0)) D ;load up comment to send
|
---|
| 129 | . K ^TMP("GMRCMT",$J)
|
---|
| 130 | . D OBXWP^GMRCISEG(GMRCDA,"",GMRCACT,$NA(^TMP("GMRCMT",$J)))
|
---|
| 131 | . Q:'$O(^TMP("GMRCMT",$J,0))
|
---|
| 132 | . N I S I=0 F S I=$O(^TMP("GMRCMT",$J,I)) Q:'I D
|
---|
| 133 | .. S ^TMP("HLS",$J,SEG)=^TMP("GMRCMT",$J,I)
|
---|
| 134 | .. S SEG=SEG+1
|
---|
| 135 | . K ^TMP("GMRCMT",$J)
|
---|
| 136 | . Q
|
---|
| 137 | S ^TMP("HLS",$J,SEG)=$$OBXSF^GMRCISEG(GMRCDA),SEG=SEG+1
|
---|
| 138 | S ^TMP("HLS",$J,SEG)=$$OBXTZ^GMRCISEG ;always include local time zone
|
---|
| 139 | S HLL("LINKS",1)=$$ROUTE^GMRCIEVT(GMRCDA) I '$L(HLL("LINKS",1)) D Q
|
---|
| 140 | . D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,"",903) ;log error
|
---|
| 141 | D GENERATE^HLMA("GMRC IFC ORM EVENT","GM",1,.GMRC773)
|
---|
| 142 | N ERR S ERR=$S($P(GMRC773,U,2):904,1:"") ; if err from HL7, log it
|
---|
| 143 | D LOGMSG^GMRCIUTL(GMRCDA,GMRCACT,+GMRC773,ERR)
|
---|
| 144 | Q
|
---|
| 145 | ;
|
---|
| 146 | FWD2IFC(GMRCDA,GMRCACT) ;pkg up and send request upon fwd'ing into IFC serv
|
---|
| 147 | ;Input:
|
---|
| 148 | ; GMRCDA = ien from file 123
|
---|
| 149 | ; GMRCACT = ien of the activity from 40 multiple
|
---|
| 150 | N GMRCACTN
|
---|
| 151 | I '$P(^GMR(123,GMRCDA,0),U,22),'$D(^GMR(123.6,"C",GMRCDA)) D Q
|
---|
| 152 | . D NW^GMRCIEVT(GMRCDA)
|
---|
| 153 | . S GMRCACTN=1
|
---|
| 154 | . F S GMRCACTN=$O(^GMR(123,GMRCDA,40,GMRCACTN)) Q:'GMRCACTN D
|
---|
| 155 | .. D TRIGR^GMRCIEVT(GMRCDA,GMRCACTN)
|
---|
| 156 | D FWD(GMRCDA,GMRCACT)
|
---|
| 157 | Q
|
---|