[613] | 1 | GMRCISEG ;SLC/JFR - CREATE IFC HL7 SEGMENTS ; 7/26/01 22:15
|
---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**22**;DEC 27, 1997
|
---|
| 3 | Q ;don't enter at top
|
---|
| 4 | BUILD(SEG,PCS) ;create any segment from array in PCS using |^&/~
|
---|
| 5 | ; SEG = ORC,OBR,etc.
|
---|
| 6 | ; PCS = array of data elements to be combined into the segement
|
---|
| 7 | ; array is numbered by the "|" piece
|
---|
| 8 | N ARR,SEGMNT
|
---|
| 9 | S ARR=0,SEGMNT=""
|
---|
| 10 | F S ARR=$O(PCS(ARR)) Q:'ARR D
|
---|
| 11 | . S $P(SEGMNT,"|",ARR)=PCS(ARR)
|
---|
| 12 | . Q
|
---|
| 13 | Q SEG_"|"_SEGMNT
|
---|
| 14 | ORC(GMRCO,GMRCOC,GMRCOS,GMRCACT) ;build ORC for all but new orders
|
---|
| 15 | ;Input:
|
---|
| 16 | ; GMRCO = ien from file 123
|
---|
| 17 | ; GMRCOC = order control
|
---|
| 18 | ; GMRCOS = order status
|
---|
| 19 | ; GMRCACT = ien in 40 multiple of particular action
|
---|
| 20 | ;
|
---|
| 21 | ;Output:
|
---|
| 22 | ; ORC segment
|
---|
| 23 | ;
|
---|
| 24 | I '$D(GMRCO)!('$D(GMRCOC))!('$D(GMRCACT)) Q "ERROR"
|
---|
| 25 | N GMRCPCS,SITE,GMRCRP
|
---|
| 26 | S GMRCPCS(1)=GMRCOC
|
---|
| 27 | I $P($G(^GMR(123,GMRCO,12)),U,5)="P" D
|
---|
| 28 | . S GMRCPCS(2)=GMRCO_U_$$STA^XUAF4($$KSP^XUPARAM("INST"))_"^GMRCIFR"
|
---|
| 29 | . S GMRCPCS(3)=$P(^GMR(123,GMRCO,0),U,22)_U_$$STA^XUAF4($P(^(0),U,23))
|
---|
| 30 | . S GMRCPCS(3)=GMRCPCS(3)_"^GMRCIFC"
|
---|
| 31 | I $P($G(^GMR(123,GMRCO,12)),U,5)="F" D
|
---|
| 32 | . S GMRCPCS(2)=$P(^GMR(123,GMRCO,0),U,22)_U_$$STA^XUAF4($P(^(0),U,23))
|
---|
| 33 | . S GMRCPCS(2)=GMRCPCS(2)_"^GMRCIFR"
|
---|
| 34 | . S GMRCPCS(3)=GMRCO_U_$$STA^XUAF4($$KSP^XUPARAM("INST"))_"^GMRCIFC"
|
---|
| 35 | S GMRCPCS(5)=$S($D(GMRCOS):GMRCOS,1:"")
|
---|
| 36 | I GMRCOC["X" S $P(GMRCPCS(7),U,6)=$$URG^GMRCIUTL(GMRCO)
|
---|
| 37 | S GMRCPCS(9)=$$FMTHL7^XLFDT($P(^GMR(123,GMRCO,40,GMRCACT,0),U,1))
|
---|
| 38 | S GMRCPCS(10)=$$HLNAME^GMRCIUTL($P(^GMR(123,GMRCO,40,GMRCACT,0),U,5))
|
---|
| 39 | S GMRCRP=$P(^GMR(123,GMRCO,40,GMRCACT,0),U,4) I +GMRCRP D
|
---|
| 40 | . S GMRCPCS(12)=$$HLNAME^GMRCIUTL(GMRCRP)
|
---|
| 41 | . N GMRCPHN,GMRCPAG
|
---|
| 42 | . S GMRCPHN=$$GET1^DIQ(200,GMRCRP,.132)
|
---|
| 43 | . S GMRCPAG=$$GET1^DIQ(200,GMRCRP,.138)
|
---|
| 44 | . S GMRCPCS(14)=$$HLPHONE^HLFNC(GMRCPHN,GMRCPAG)
|
---|
| 45 | S GMRCPCS(15)=$$FMTHL7^XLFDT($P(^GMR(123,GMRCO,40,GMRCACT,0),U,3))
|
---|
| 46 | I GMRCOC["X"!(GMRCOC="SC")!(GMRCOC="RE") D
|
---|
| 47 | . I GMRCOC="XX" D Q
|
---|
| 48 | .. I $P(^GMR(123,GMRCO,40,GMRCACT,0),U,2)=25 D Q
|
---|
| 49 | ... S GMRCPCS(16)="FI^FORWARD TO IFC^99GMRC"
|
---|
| 50 | .. S GMRCPCS(16)="F^FORWARD^99GMRC"
|
---|
| 51 | . I GMRCOC="XO" S GMRCPCS(16)="E^EDIT-RESUBMIT^99GMRC" Q
|
---|
| 52 | . I GMRCOC="SC" D Q
|
---|
| 53 | .. I GMRCOS="IP" S GMRCPCS(16)="R^RECEIVE^99GMRC"
|
---|
| 54 | .. I GMRCOS="SC" S GMRCPCS(16)="SC^SCHEDULE^99GMRC"
|
---|
| 55 | . I GMRCOC="RE" D
|
---|
| 56 | .. N ACTVT S ACTVT=$P(^GMR(123,GMRCO,40,GMRCACT,0),U,2)
|
---|
| 57 | .. I ACTVT=12 S GMRCPCS(16)="D^DISASSOCIATE RESULT^99GMRC"
|
---|
| 58 | .. I ACTVT=13 S GMRCPCS(16)="A^ADDENDUM^99GMRC"
|
---|
| 59 | .. I ACTVT=4 S GMRCPCS(16)="S^SIGNIFICANT FINDING^99GMRC"
|
---|
| 60 | . Q
|
---|
| 61 | S SITE=$$SITE^VASITE
|
---|
| 62 | I +SITE S GMRCPCS(17)=$P(SITE,U,3)_U_$P(SITE,U,2) ;use loc instead? ;-(
|
---|
| 63 | Q $$BUILD^GMRCISEG("ORC",.GMRCPCS)
|
---|
| 64 | ;
|
---|
| 65 | OBXWP(GMRCO,GMRCOC,GMRCACT,GMRCSEG) ; return a WP field in OBX segs
|
---|
| 66 | ; Input:
|
---|
| 67 | ; GMRCO =
|
---|
| 68 | ; GMRCOC =
|
---|
| 69 | ; GMRCACT = activity in 40 mult triggering msg
|
---|
| 70 | ; GMRCSEG = GLOBAL array to return results in
|
---|
| 71 | ;
|
---|
| 72 | ; Output:
|
---|
| 73 | ; ARRAY(1)=OBX|1|TX|coding scheme|1|text||||||obs result status
|
---|
| 74 | ; ARRAY(2)=OBX|1|TX|coding scheme|2|text||||||obs result status
|
---|
| 75 | ;
|
---|
| 76 | K ^TMP("GMRCWP",$J)
|
---|
| 77 | N GMRCPCS
|
---|
| 78 | I GMRCOC="NW"!(GMRCOC="XO") D Q
|
---|
| 79 | . N SUBS S SUBS=0
|
---|
| 80 | . F S SUBS=$O(^GMR(123,GMRCO,20,SUBS)) Q:'SUBS D
|
---|
| 81 | .. S GMRCPCS(1)=1,GMRCPCS(2)="TX"
|
---|
| 82 | .. S GMRCPCS(3)="2000.02^REASON FOR REQUEST^AS4",GMRCPCS(4)=SUBS
|
---|
| 83 | .. S GMRCPCS(5)=$G(^GMR(123,GMRCO,20,SUBS,0)),GMRCPCS(11)="O"
|
---|
| 84 | .. S ^TMP("GMRCWP",$J,SUBS)=$$BUILD^GMRCISEG("OBX",.GMRCPCS)
|
---|
| 85 | . M @GMRCSEG=^TMP("GMRCWP",$J)
|
---|
| 86 | . K ^TMP("GMRCWP",$J)
|
---|
| 87 | . Q
|
---|
| 88 | I '$D(GMRCACT)!('$D(^GMR(123,GMRCO,40,GMRCACT,1))) Q
|
---|
| 89 | N CMT,ACTVT
|
---|
| 90 | S CMT=0,ACTVT=$P(^GMR(123,GMRCO,40,GMRCACT,0),U,2)
|
---|
| 91 | F S CMT=$O(^GMR(123,GMRCO,40,GMRCACT,1,CMT)) Q:'CMT D
|
---|
| 92 | . S GMRCPCS(1)=3,GMRCPCS(2)="TX"
|
---|
| 93 | . S GMRCPCS(3)="^COMMENTS^",GMRCPCS(4)=CMT
|
---|
| 94 | . S GMRCPCS(5)=$G(^GMR(123,GMRCO,40,GMRCACT,1,CMT,0))
|
---|
| 95 | . S GMRCPCS(11)=$S(ACTVT=10:"F",1:"P") ;F if an admin comp. else "P"
|
---|
| 96 | . S ^TMP("GMRCWP",$J,CMT)=$$BUILD^GMRCISEG("OBX",.GMRCPCS)
|
---|
| 97 | M @GMRCSEG=^TMP("GMRCWP",$J)
|
---|
| 98 | K ^TMP("GMRCWP",$J)
|
---|
| 99 | Q
|
---|
| 100 | ;
|
---|
| 101 | OBXRSLT(GMRCO,GMRCACT) ; build an OBX segment to send a TIU doc reference
|
---|
| 102 | ; Input:
|
---|
| 103 | ; GMRCO = ien from file 123
|
---|
| 104 | ; GMRCACT = activity entry in 40 multiple
|
---|
| 105 | ;
|
---|
| 106 | ; Output:
|
---|
| 107 | ; OBX segment
|
---|
| 108 | ; e.g. OBX|4|RP|^TIU DOC^VA8925||41320^TIU^660||||||||F
|
---|
| 109 | ;
|
---|
| 110 | Q:'$D(^GMR(123,GMRCO,40,GMRCACT)) ""
|
---|
| 111 | N GMRCPCS,RSLT,GMRCACTV
|
---|
| 112 | S GMRCPCS(1)=4,GMRCPCS(2)="RP"
|
---|
| 113 | S GMRCPCS(4)=1
|
---|
| 114 | S GMRCACTV=$P(^GMR(123,GMRCO,40,GMRCACT,0),U,2)
|
---|
| 115 | S RSLT=$P(^GMR(123,GMRCO,40,GMRCACT,0),U,9)
|
---|
| 116 | I RSLT["TIU" D
|
---|
| 117 | . S GMRCPCS(3)="^TIU DOC^VA8925"
|
---|
| 118 | . S GMRCPCS(5)=+RSLT_"^TIU DOCUMENT^"_$$STA^XUAF4($$KSP^XUPARAM("INST"))
|
---|
| 119 | I RSLT["MCAR" D
|
---|
| 120 | . N MCPRNM S MCPRNM=$P($$SINGLE^MCAPI(RSLT),U)
|
---|
| 121 | . S GMRCPCS(3)="^MED RSLT^VA"_+$P(RSLT,"MCAR(",2)
|
---|
| 122 | . S GMRCPCS(5)=+RSLT_U_MCPRNM_U_$$STA^XUAF4($$KSP^XUPARAM("INST"))
|
---|
| 123 | S GMRCPCS(11)=$S(GMRCACTV=9:"S",GMRCACTV=12:"D",1:"F")
|
---|
| 124 | Q $$BUILD^GMRCISEG("OBX",.GMRCPCS)
|
---|
| 125 | ;
|
---|
| 126 | NTE(GMRCO,GMRCACT,GMRCAR) ;format an NTE seg with DC comment
|
---|
| 127 | ; Input:
|
---|
| 128 | ; GMRCO = ien from file 123
|
---|
| 129 | ; GMRCACT = activity entry in 40 multiple
|
---|
| 130 | ; GMRCAR = array in which to pass back NTE segs
|
---|
| 131 | ;
|
---|
| 132 | ; Output:
|
---|
| 133 | ; array of NTE segments containing the comment
|
---|
| 134 | ; e.g. NTE|1|L|cancelled by requestor
|
---|
| 135 | ;
|
---|
| 136 | Q:'$D(^GMR(123,GMRCO,40,GMRCACT,1))
|
---|
| 137 | N CMT,GMRCPCS S CMT=0
|
---|
| 138 | F S CMT=$O(^GMR(123,GMRCO,40,GMRCACT,1,CMT)) Q:'CMT D
|
---|
| 139 | . S GMRCPCS(1)=CMT,GMRCPCS(2)="L"
|
---|
| 140 | . S GMRCPCS(3)=$G(^GMR(123,GMRCO,40,GMRCACT,1,CMT,0))
|
---|
| 141 | . S GMRCAR(CMT)=$$BUILD^GMRCISEG("NTE",.GMRCPCS)
|
---|
| 142 | Q
|
---|
| 143 | ;
|
---|
| 144 | MSA(GMRCAC,GMRCMSG,GMRCERR) ; build MSA for response to placer activity
|
---|
| 145 | ; Input:
|
---|
| 146 | ; GMRCAC = acknowledgment code (AA or AR)
|
---|
| 147 | ; GMRCMSG = message number from incoming msg being responded to
|
---|
| 148 | ; GMRCERR = error message if can't accept the activity
|
---|
| 149 | ;
|
---|
| 150 | ; Output:
|
---|
| 151 | ; MSA segment to include with ACK or NAK
|
---|
| 152 | ;
|
---|
| 153 | N GMRCPCS
|
---|
| 154 | S GMRCPCS(1)=GMRCAC
|
---|
| 155 | S GMRCPCS(2)=GMRCMSG
|
---|
| 156 | S GMRCPCS(3)=$G(GMRCERR)
|
---|
| 157 | Q $$BUILD^GMRCISEG("MSA",.GMRCPCS)
|
---|
| 158 | ;
|
---|
| 159 | OBXTZ() ;build and return an OBX with the current TIME ZONE encoded
|
---|
| 160 | ;Input:
|
---|
| 161 | ; none
|
---|
| 162 | ;
|
---|
| 163 | ;Output:
|
---|
| 164 | ; OBX segment in the format:
|
---|
| 165 | ; OBX|5|CE|^TIME ZONE^VA4.4|1|MST||||||O
|
---|
| 166 | ;
|
---|
| 167 | N GMRCPCS
|
---|
| 168 | S GMRCPCS(1)=5,GMRCPCS(2)="CE"
|
---|
| 169 | S GMRCPCS(3)="^TIME ZONE^VA4.4",GMRCPCS(4)=1
|
---|
| 170 | S GMRCPCS(5)=$$GET1^DIQ(4.3,1,1)
|
---|
| 171 | Q $$BUILD^GMRCISEG("OBX",.GMRCPCS)
|
---|
| 172 | ;
|
---|
| 173 | OBXSF(GMRCO) ; build OBX seg for Sig. Find.
|
---|
| 174 | ; Input:
|
---|
| 175 | ; GMRCO = ien from file 123
|
---|
| 176 | ;
|
---|
| 177 | ; Output:
|
---|
| 178 | ; OBX segment in format:
|
---|
| 179 | ; OBX|6|TX|^SIG FINDINGS^|1|S||||||O
|
---|
| 180 | ;
|
---|
| 181 | I '$L($P(^GMR(123,GMRCO,0),U,19)) Q ""
|
---|
| 182 | N GMRCPCS
|
---|
| 183 | S GMRCPCS(1)=6,GMRCPCS(2)="TX",GMRCPCS(3)="^SIG FINDINGS^"
|
---|
| 184 | S GMRCPCS(4)=1,GMRCPCS(5)=$P(^GMR(123,GMRCO,0),U,19),GMRCPCS(11)="O"
|
---|
| 185 | Q $$BUILD^GMRCISEG("OBX",.GMRCPCS)
|
---|