GMRCIUT1 ;SLC/JFR - UTILITIES FOR INTER-FACILITY CONSULTS ; Jan 27, 2025@06:04:10
;;3.0;CONSULT/REQUEST TRACKING;**189,205**;DEC 27, 1997;Build 3
;;Per VHA Directive 2004-038, this routine should not be modified.
;
Q ;don't start at the top
;
CHKPROXY(GMRCDA,GMRCDFN,STA,DONOTLOG) ;
;
; GMRCDA = Consult, pointer to #123
; GMRCDFN = Patient, pointer to #2
; STA = Routing station number
; DONOTLOG = Flag to prevent logging in IFC Message Log (#123.6). 1=DO NOT LOG. [OPTIONAL]
;
; Checks success/failure of proxy add. Returns 1 if all is OK and IFC can be sent, 0^REASON if not.
;
;pull patient Correlation list
;
N DGKEY,DGOUT,CNT,IDS,CERNERID,CONSULTDFN,RTNCODE,EDIPI ;
;
S DGKEY=GMRCDFN_U_"PI"_U_"USVHA"_U_$P($$SITE^VASITE,"^",3)
D TFL^VAFCTFU2(.DGOUT,DGKEY)
;
S CONSULTDFN="",CERNERID="" ;
S CNT=0 F S CNT=$O(DGOUT(CNT)) Q:'CNT S IDS=$G(DGOUT(CNT)) D ;
.I $P(IDS,"^",4)="200CRNR" I $P(IDS,"^",2)="PI" S CERNERID=IDS ;
.I $P(IDS,"^",4)=STA I $P(IDS,"^",2)="PI" I $P(IDS,"^",5)="A"!($P(IDS,"^",5)="C") S CONSULTDFN=IDS ;
;
; Destination site is converted.
;
I $$CRNRSITE^VAFCCRNR(STA)=1 D Q RTNCODE ;
. I CERNERID'="",CONSULTDFN'="" S RTNCODE=1 Q ;
. ;
. I CERNERID="" S RTNCODE="0^CERNER INCOMPLETE" Q ;
. ;
. I CONSULTDFN="" D Q ;
.. ;
.. ; Call proxy add for converted VistA.
.. ;
.. S EDIPI=$$EDIPI^GMRCIUTL(GMRCDFN) ;
.. S RTNCODE=$$ADD^DGPROSAD(EDIPI_"~USDOD~NI~200DOD",STA) ; ICR 7421
.. I RTNCODE<0 D ; Proxy add failed.
... I '$G(DONOTLOG) D LOGMSG^GMRCIUTL(GMRCDA,1,"",205) ;
... D FAILPRXY("",EDIPI,GMRCDA,"","","",STA,$P(RTNCODE,U,2)) ; P189 WTC 6/24/24
... S RTNCODE="0^CONVERTED VISTA INCOMPLETE" ;
.. Q:$G(DONOTLOG) ;
.. ;
.. ; Suppress 201 error if IFC already has a 203 error in the message log. wtc 11.22.23 p189
.. ;
.. N ACTIEN,SUPPRESS,LOGIEN S SUPPRESS=0,ACTIEN=0 F S ACTIEN=$O(^GMR(123.6,"AC",GMRCDA,ACTIEN)) Q:'ACTIEN D Q:SUPPRESS ;
... S LOGIEN=0 F S LOGIEN=$O(^GMR(123.6,"AC",GMRCDA,ACTIEN,1,LOGIEN)) Q:'LOGIEN I $P($G(^GMR(123.6,LOGIEN,0)),U,8)=203 S SUPPRESS=1 Q ;
.. ;
.. I 'SUPPRESS D LOGMSG^GMRCIUTL(GMRCDA,1,"",201) ;
;
; Destination site is non-converted.
;
I $$CRNRSITE^VAFCCRNR(STA)'=1 D Q RTNCODE ;
. I CONSULTDFN'="" S RTNCODE=1 Q ;
. ;
. S RTNCODE="0^NON-CONVERTED VISTA INCOMPLETE" ;
. D LOGMSG^GMRCIUTL(GMRCDA,1,"",201) ;
;
Q "0^UNKNOWN" ;
;
FAILPRXY(MSGID,EDIPI,GMRCDA,CRNRORDR,ORDRDESC,ORDRDATE,STA,REASON) ;
;
; Send MailMan message when proxy add fails.
;
; MSGID = HL7 Message ID (MSH-10) [OPTIONAL]
; EDIPI = Patient's EDIPI [OPTIONAL]
; GMRCDA = Consult IEN (pointer to #123) [OPTIONAL]
; CRNRORDR = Cerner order number [OPTIONAL]
; ORDRDESC = Ordering description [OPTIONAL]
; ORDRDATE = Ordering date in HL7 format [OPTIONAL]
; STA = Station where proxy add attempted [OPTIONAL]
; REASON = Proxy add failure reason [REQUIRED]
;
Q:$G(REASON)="" ;
;
N XMSUB,XMDUZ,XMTEXT,XMY,GRPIEN,MEM,GRP,N ;
S GRP="IFC PATIENT ERROR MESSAGES" ;
S XMSUB="Failed IFC transaction: Proxy Add Failed",XMTEXT="XMTEXT(" ;
S N=0 ;
I $G(MSGID)'="" S N=N+1,XMTEXT(N)="Message ID: "_MSGID ;
I $G(EDIPI)'="" S N=N+1,XMTEXT(N)="EDIPI: "_EDIPI ;
I $G(GMRCDA)'="" S N=N+1,XMTEXT(N)="Consult Number: "_GMRCDA ;
I $G(CRNRORDR)'="" S N=N+1,XMTEXT(N)="Cerner Order Number: "_CRNRORDR ;
I $G(ORDRDESC)'="" S N=N+1,XMTEXT(N)="Order Description: "_ORDRDESC ;
I $G(ORDRDATE)'="" S N=N+1,XMTEXT(N)="Order Date: "_$$FMTE^XLFDT($$HL7TFM^XLFDT(ORDRDATE)) ;
I $G(STA)'="" S N=N+1,XMTEXT(N)="Station where proxy add attempted: "_STA ;
S N=N+1,XMTEXT(N)="Failure Reason: "_REASON ;
S GRPIEN=$O(^XMB(3.8,"B",GRP,"")) Q:'GRPIEN
;Set up XMY for MEMBERS
S MEM=0 F S MEM=$O(^XMB(3.8,GRPIEN,1,MEM)) Q:'MEM S XMY($P(^XMB(3.8,GRPIEN,1,MEM,0),U))=""
;Set up XMY for MEMBERS REMOTE
S MEM=0 F S MEM=$O(^XMB(3.8,GRPIEN,6,MEM)) Q:'MEM S XMY($P(^XMB(3.8,GRPIEN,6,MEM,0),U))=""
Q:'$D(XMY)
S XMDUZ=GRP
D XMZ^XMA2 ; call Create Message Module
D EN1^XMD
Q ;
;
RESP(GMRCAC,GMRCMID,GMRCOC,GMRCDA,GMRCERR,GMRCMSG) ;
;
; Send ACK or NAK to Cerner followed by rejection comment. P205 wtc 8/15/24
;
; Input:
; GMRCAC = acknowledgement code (AA or AR)
; GMRCMID = message id from original msg
; GMRCOC = order control from original msg ORC
; GMRCDA = ien of consult being worked on
; GMRCERR = only defined if an error is found
; GMRCMSG = name of array where incoming HL7 stored
;
N HLA S HLA("HLA",1)=$$MSA^GMRCISEG(GMRCAC,GMRCMID,$G(GMRCERR))
;
; Generate PID segment for Cerner orders. Insert EDIPI and patient account number. p184
;
N DFN,PID,EDIPI,ICN,PTACCTNO,FS,CS,REPTTN,SEGNUM,PTACCTNO,GMRCRSLT ;
S SEGNUM=1 ;
I $G(GMRCDA) D ;
. S DFN=$P(^GMR(123,GMRCDA,0),U,2),PTACCTNO=$P($G(^GMR(123,GMRCDA,"CERNER")),U,3) ;
. I PTACCTNO'="" D ;
.. S HLECH=HL("ECH"),PID=$$EN^VAFCPID(DFN,"1,2,3,7,8,19"),PID=$$ADD2PID^GMRCIUTL(PID,DFN,PTACCTNO) ;
.. S SEGNUM=SEGNUM+1,HLA("HLA",SEGNUM)=PID ;
;
I $D(GMRCOC) D
. I GMRCOC="NW" S SEGNUM=SEGNUM+1,HLA("HLA",SEGNUM)=$$ORCRESP^GMRCISG1(GMRCDA,"OK","IP")
;
; Generate OBR segment for Cerner orders. p184
;
I $G(GMRCDA) S SEGNUM=SEGNUM+1,HLA("HLA",SEGNUM)=$$OBR^GMRCISG1(GMRCDA),HLA("HLA",SEGNUM)=$$ADD2OBR^GMRCIUTL(HLA("HLA",SEGNUM),GMRCDA) ;
;
; Send ACK/NAK to Cerner.
;
D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT) ;-(
;
Q:GMRCAC="AA" ;
;
; Send rejection comment along with original order message.
;
N HL,HLL,HLP,ERRTEXT,OBR,IDX,STA,I ;
;
D INIT^HLFNC2("GMRC IFC ORM EVENT",.HL)
;
K ^TMP("GMRCIUT1",$J) M ^TMP("GMRCIUT1",$J)=@GMRCMSG ;
;
K ^TMP("HLS",$J) S SEGNUM=1,^TMP("HLS",$J,SEGNUM)="PID|"_^TMP("GMRCIUT1",$J,"PID") ;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="ORC|"_^TMP("GMRCIUT1",$J,"ORC") ;
;
; Change order control and status to "add comment" (IP/IP). WTC 10/21/24
;
S $P(^TMP("HLS",$J,SEGNUM),"|",2)="IP",$P(^TMP("HLS",$J,SEGNUM),"|",6)="IP" ;
;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBR|"_^TMP("GMRCIUT1",$J,"OBR"),OBR="OBR|"_^TMP("GMRCIUT1",$J,"OBR") ;
;
S IDX=0 F S IDX=$O(^TMP("GMRCIUT1",$J,"OBX",1,IDX)) Q:'IDX S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|"_^TMP("GMRCIUT1",$J,"OBX",1,IDX) ;
;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|1| ||||||P" ;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|2|Activity Type: Order Rejected||||||P" ;
S ERRTEXT="ERR"_GMRCERR_"^GMRCIUTL" ;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|3|Rejection Reason: "_GMRCERR_" - "_$P($T(@ERRTEXT),";",2)_"||||||P" ;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|4|Entered At Location: "_$P($$SITE^VASITE(),U,2)_"||||||P" ;
S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|5|"_$$FMTE^XLFDT($$NOW^XLFDT())_"||||||P" ;
;
S IDX=0 F I=6:1 S IDX=$O(^TMP("GMRCIUT1",$J,"OBX",3,IDX)) Q:'IDX S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|3|TX|^COMMENTS^|"_I_"|"_^TMP("GMRCIUT1",$J,"OBX",3,IDX) ;
;
S IDX=0 F S IDX=$O(^TMP("GMRCIUT1",$J,"OBX",5,IDX)) Q:'IDX S SEGNUM=SEGNUM+1,^TMP("HLS",$J,SEGNUM)="OBX|"_^TMP("GMRCIUT1",$J,"OBX",5,IDX) ;
;
S STA=$P($P(OBR,"|",3),"^",2) ;
S HLL("LINKS",1)="GMRC IFC SUBSC^"_$$GET^XPAR("SYS","GMRC IFC REGIONAL ROUTER",1)_U_STA ;
S HLP("SUBSCRIBER")="^^^^"_$P(HLL("LINKS",1),U,3) ;
D GENERATE^HLMA("GMRC IFC ORM EVENT","GM",1,,,.HLP) ;
;
; Save message in HL7 repository.
;
N ERR ;
K ^TMP("GMRCIUT1",$J) F IDX=1:1 Q:'$D(^TMP("HLS",$J,IDX)) S ^TMP("GMRCIUT1",$J,IDX,0)=^TMP("HLS",$J,IDX) ;
S ERR=$$SAVEHL7X^EHMHL7("GMRCIUT1","IFC","VISTA-"_$$STA^XUAF4($$KSP^XUPARAM("INST")),"CERNER-"_$P($P(OBR,"|",3),"^",2),"|","^",$E(HL("ECH"),2)) ;
;
K ^TMP("GMRCIUT1",$J) ;
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRCIUT1 7867 printed Sep 23, 2025@19:22:14 Page 2
GMRCIUT1 ;SLC/JFR - UTILITIES FOR INTER-FACILITY CONSULTS ; Jan 27, 2025@06:04:10
+1 ;;3.0;CONSULT/REQUEST TRACKING;**189,205**;DEC 27, 1997;Build 3
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 ;
+4 ;don't start at the top
QUIT
+5 ;
CHKPROXY(GMRCDA,GMRCDFN,STA,DONOTLOG) ;
+1 ;
+2 ; GMRCDA = Consult, pointer to #123
+3 ; GMRCDFN = Patient, pointer to #2
+4 ; STA = Routing station number
+5 ; DONOTLOG = Flag to prevent logging in IFC Message Log (#123.6). 1=DO NOT LOG. [OPTIONAL]
+6 ;
+7 ; Checks success/failure of proxy add. Returns 1 if all is OK and IFC can be sent, 0^REASON if not.
+8 ;
+9 ;pull patient Correlation list
+10 ;
+11 ;
NEW DGKEY,DGOUT,CNT,IDS,CERNERID,CONSULTDFN,RTNCODE,EDIPI
+12 ;
+13 SET DGKEY=GMRCDFN_U_"PI"_U_"USVHA"_U_$PIECE($$SITE^VASITE,"^",3)
+14 DO TFL^VAFCTFU2(.DGOUT,DGKEY)
+15 ;
+16 ;
SET CONSULTDFN=""
SET CERNERID=""
+17 ;
SET CNT=0
FOR
SET CNT=$ORDER(DGOUT(CNT))
if 'CNT
QUIT
SET IDS=$GET(DGOUT(CNT))
Begin DoDot:1
+18 ;
IF $PIECE(IDS,"^",4)="200CRNR"
IF $PIECE(IDS,"^",2)="PI"
SET CERNERID=IDS
+19 ;
IF $PIECE(IDS,"^",4)=STA
IF $PIECE(IDS,"^",2)="PI"
IF $PIECE(IDS,"^",5)="A"!($PIECE(IDS,"^",5)="C")
SET CONSULTDFN=IDS
End DoDot:1
+20 ;
+21 ; Destination site is converted.
+22 ;
+23 ;
IF $$CRNRSITE^VAFCCRNR(STA)=1
Begin DoDot:1
+24 ;
IF CERNERID'=""
IF CONSULTDFN'=""
SET RTNCODE=1
QUIT
+25 ;
+26 ;
IF CERNERID=""
SET RTNCODE="0^CERNER INCOMPLETE"
QUIT
+27 ;
+28 ;
IF CONSULTDFN=""
Begin DoDot:2
+29 ;
+30 ; Call proxy add for converted VistA.
+31 ;
+32 ;
SET EDIPI=$$EDIPI^GMRCIUTL(GMRCDFN)
+33 ; ICR 7421
SET RTNCODE=$$ADD^DGPROSAD(EDIPI_"~USDOD~NI~200DOD",STA)
+34 ; Proxy add failed.
IF RTNCODE<0
Begin DoDot:3
+35 ;
IF '$GET(DONOTLOG)
DO LOGMSG^GMRCIUTL(GMRCDA,1,"",205)
+36 ; P189 WTC 6/24/24
DO FAILPRXY("",EDIPI,GMRCDA,"","","",STA,$PIECE(RTNCODE,U,2))
+37 ;
SET RTNCODE="0^CONVERTED VISTA INCOMPLETE"
End DoDot:3
+38 ;
if $GET(DONOTLOG)
QUIT
+39 ;
+40 ; Suppress 201 error if IFC already has a 203 error in the message log. wtc 11.22.23 p189
+41 ;
+42 ;
NEW ACTIEN,SUPPRESS,LOGIEN
SET SUPPRESS=0
SET ACTIEN=0
FOR
SET ACTIEN=$ORDER(^GMR(123.6,"AC",GMRCDA,ACTIEN))
if 'ACTIEN
QUIT
Begin DoDot:3
+43 ;
SET LOGIEN=0
FOR
SET LOGIEN=$ORDER(^GMR(123.6,"AC",GMRCDA,ACTIEN,1,LOGIEN))
if 'LOGIEN
QUIT
IF $PIECE($GET(^GMR(123.6,LOGIEN,0)),U,8)=203
SET SUPPRESS=1
QUIT
End DoDot:3
if SUPPRESS
QUIT
+44 ;
+45 ;
IF 'SUPPRESS
DO LOGMSG^GMRCIUTL(GMRCDA,1,"",201)
End DoDot:2
QUIT
End DoDot:1
QUIT RTNCODE
+46 ;
+47 ; Destination site is non-converted.
+48 ;
+49 ;
IF $$CRNRSITE^VAFCCRNR(STA)'=1
Begin DoDot:1
+50 ;
IF CONSULTDFN'=""
SET RTNCODE=1
QUIT
+51 ;
+52 ;
SET RTNCODE="0^NON-CONVERTED VISTA INCOMPLETE"
+53 ;
DO LOGMSG^GMRCIUTL(GMRCDA,1,"",201)
End DoDot:1
QUIT RTNCODE
+54 ;
+55 ;
QUIT "0^UNKNOWN"
+56 ;
FAILPRXY(MSGID,EDIPI,GMRCDA,CRNRORDR,ORDRDESC,ORDRDATE,STA,REASON) ;
+1 ;
+2 ; Send MailMan message when proxy add fails.
+3 ;
+4 ; MSGID = HL7 Message ID (MSH-10) [OPTIONAL]
+5 ; EDIPI = Patient's EDIPI [OPTIONAL]
+6 ; GMRCDA = Consult IEN (pointer to #123) [OPTIONAL]
+7 ; CRNRORDR = Cerner order number [OPTIONAL]
+8 ; ORDRDESC = Ordering description [OPTIONAL]
+9 ; ORDRDATE = Ordering date in HL7 format [OPTIONAL]
+10 ; STA = Station where proxy add attempted [OPTIONAL]
+11 ; REASON = Proxy add failure reason [REQUIRED]
+12 ;
+13 ;
if $GET(REASON)=""
QUIT
+14 ;
+15 ;
NEW XMSUB,XMDUZ,XMTEXT,XMY,GRPIEN,MEM,GRP,N
+16 ;
SET GRP="IFC PATIENT ERROR MESSAGES"
+17 ;
SET XMSUB="Failed IFC transaction: Proxy Add Failed"
SET XMTEXT="XMTEXT("
+18 ;
SET N=0
+19 ;
IF $GET(MSGID)'=""
SET N=N+1
SET XMTEXT(N)="Message ID: "_MSGID
+20 ;
IF $GET(EDIPI)'=""
SET N=N+1
SET XMTEXT(N)="EDIPI: "_EDIPI
+21 ;
IF $GET(GMRCDA)'=""
SET N=N+1
SET XMTEXT(N)="Consult Number: "_GMRCDA
+22 ;
IF $GET(CRNRORDR)'=""
SET N=N+1
SET XMTEXT(N)="Cerner Order Number: "_CRNRORDR
+23 ;
IF $GET(ORDRDESC)'=""
SET N=N+1
SET XMTEXT(N)="Order Description: "_ORDRDESC
+24 ;
IF $GET(ORDRDATE)'=""
SET N=N+1
SET XMTEXT(N)="Order Date: "_$$FMTE^XLFDT($$HL7TFM^XLFDT(ORDRDATE))
+25 ;
IF $GET(STA)'=""
SET N=N+1
SET XMTEXT(N)="Station where proxy add attempted: "_STA
+26 ;
SET N=N+1
SET XMTEXT(N)="Failure Reason: "_REASON
+27 SET GRPIEN=$ORDER(^XMB(3.8,"B",GRP,""))
if 'GRPIEN
QUIT
+28 ;Set up XMY for MEMBERS
+29 SET MEM=0
FOR
SET MEM=$ORDER(^XMB(3.8,GRPIEN,1,MEM))
if 'MEM
QUIT
SET XMY($PIECE(^XMB(3.8,GRPIEN,1,MEM,0),U))=""
+30 ;Set up XMY for MEMBERS REMOTE
+31 SET MEM=0
FOR
SET MEM=$ORDER(^XMB(3.8,GRPIEN,6,MEM))
if 'MEM
QUIT
SET XMY($PIECE(^XMB(3.8,GRPIEN,6,MEM,0),U))=""
+32 if '$DATA(XMY)
QUIT
+33 SET XMDUZ=GRP
+34 ; call Create Message Module
DO XMZ^XMA2
+35 DO EN1^XMD
+36 ;
QUIT
+37 ;
RESP(GMRCAC,GMRCMID,GMRCOC,GMRCDA,GMRCERR,GMRCMSG) ;
+1 ;
+2 ; Send ACK or NAK to Cerner followed by rejection comment. P205 wtc 8/15/24
+3 ;
+4 ; Input:
+5 ; GMRCAC = acknowledgement code (AA or AR)
+6 ; GMRCMID = message id from original msg
+7 ; GMRCOC = order control from original msg ORC
+8 ; GMRCDA = ien of consult being worked on
+9 ; GMRCERR = only defined if an error is found
+10 ; GMRCMSG = name of array where incoming HL7 stored
+11 ;
+12 NEW HLA
SET HLA("HLA",1)=$$MSA^GMRCISEG(GMRCAC,GMRCMID,$GET(GMRCERR))
+13 ;
+14 ; Generate PID segment for Cerner orders. Insert EDIPI and patient account number. p184
+15 ;
+16 ;
NEW DFN,PID,EDIPI,ICN,PTACCTNO,FS,CS,REPTTN,SEGNUM,PTACCTNO,GMRCRSLT
+17 ;
SET SEGNUM=1
+18 ;
IF $GET(GMRCDA)
Begin DoDot:1
+19 ;
SET DFN=$PIECE(^GMR(123,GMRCDA,0),U,2)
SET PTACCTNO=$PIECE($GET(^GMR(123,GMRCDA,"CERNER")),U,3)
+20 ;
IF PTACCTNO'=""
Begin DoDot:2
+21 ;
SET HLECH=HL("ECH")
SET PID=$$EN^VAFCPID(DFN,"1,2,3,7,8,19")
SET PID=$$ADD2PID^GMRCIUTL(PID,DFN,PTACCTNO)
+22 ;
SET SEGNUM=SEGNUM+1
SET HLA("HLA",SEGNUM)=PID
End DoDot:2
End DoDot:1
+23 ;
+24 IF $DATA(GMRCOC)
Begin DoDot:1
+25 IF GMRCOC="NW"
SET SEGNUM=SEGNUM+1
SET HLA("HLA",SEGNUM)=$$ORCRESP^GMRCISG1(GMRCDA,"OK","IP")
End DoDot:1
+26 ;
+27 ; Generate OBR segment for Cerner orders. p184
+28 ;
+29 ;
IF $GET(GMRCDA)
SET SEGNUM=SEGNUM+1
SET HLA("HLA",SEGNUM)=$$OBR^GMRCISG1(GMRCDA)
SET HLA("HLA",SEGNUM)=$$ADD2OBR^GMRCIUTL(HLA("HLA",SEGNUM),GMRCDA)
+30 ;
+31 ; Send ACK/NAK to Cerner.
+32 ;
+33 ;-(
DO GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.GMRCRSLT)
+34 ;
+35 ;
if GMRCAC="AA"
QUIT
+36 ;
+37 ; Send rejection comment along with original order message.
+38 ;
+39 ;
NEW HL,HLL,HLP,ERRTEXT,OBR,IDX,STA,I
+40 ;
+41 DO INIT^HLFNC2("GMRC IFC ORM EVENT",.HL)
+42 ;
+43 ;
KILL ^TMP("GMRCIUT1",$JOB)
MERGE ^TMP("GMRCIUT1",$JOB)=@GMRCMSG
+44 ;
+45 ;
KILL ^TMP("HLS",$JOB)
SET SEGNUM=1
SET ^TMP("HLS",$JOB,SEGNUM)="PID|"_^TMP("GMRCIUT1",$JOB,"PID")
+46 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="ORC|"_^TMP("GMRCIUT1",$JOB,"ORC")
+47 ;
+48 ; Change order control and status to "add comment" (IP/IP). WTC 10/21/24
+49 ;
+50 ;
SET $PIECE(^TMP("HLS",$JOB,SEGNUM),"|",2)="IP"
SET $PIECE(^TMP("HLS",$JOB,SEGNUM),"|",6)="IP"
+51 ;
+52 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBR|"_^TMP("GMRCIUT1",$JOB,"OBR")
SET OBR="OBR|"_^TMP("GMRCIUT1",$JOB,"OBR")
+53 ;
+54 ;
SET IDX=0
FOR
SET IDX=$ORDER(^TMP("GMRCIUT1",$JOB,"OBX",1,IDX))
if 'IDX
QUIT
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|"_^TMP("GMRCIUT1",$JOB,"OBX",1,IDX)
+55 ;
+56 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|1| ||||||P"
+57 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|2|Activity Type: Order Rejected||||||P"
+58 ;
SET ERRTEXT="ERR"_GMRCERR_"^GMRCIUTL"
+59 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|3|Rejection Reason: "_GMRCERR_" - "_$PIECE($TEXT(@ERRTEXT),";",2)_"||||||P"
+60 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|4|Entered At Location: "_$PIECE($$SITE^VASITE(),U,2)_"||||||P"
+61 ;
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|5|"_$$FMTE^XLFDT($$NOW^XLFDT())_"||||||P"
+62 ;
+63 ;
SET IDX=0
FOR I=6:1
SET IDX=$ORDER(^TMP("GMRCIUT1",$JOB,"OBX",3,IDX))
if 'IDX
QUIT
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|3|TX|^COMMENTS^|"_I_"|"_^TMP("GMRCIUT1",$JOB,"OBX",3,IDX)
+64 ;
+65 ;
SET IDX=0
FOR
SET IDX=$ORDER(^TMP("GMRCIUT1",$JOB,"OBX",5,IDX))
if 'IDX
QUIT
SET SEGNUM=SEGNUM+1
SET ^TMP("HLS",$JOB,SEGNUM)="OBX|"_^TMP("GMRCIUT1",$JOB,"OBX",5,IDX)
+66 ;
+67 ;
SET STA=$PIECE($PIECE(OBR,"|",3),"^",2)
+68 ;
SET HLL("LINKS",1)="GMRC IFC SUBSC^"_$$GET^XPAR("SYS","GMRC IFC REGIONAL ROUTER",1)_U_STA
+69 ;
SET HLP("SUBSCRIBER")="^^^^"_$PIECE(HLL("LINKS",1),U,3)
+70 ;
DO GENERATE^HLMA("GMRC IFC ORM EVENT","GM",1,,,.HLP)
+71 ;
+72 ; Save message in HL7 repository.
+73 ;
+74 ;
NEW ERR
+75 ;
KILL ^TMP("GMRCIUT1",$JOB)
FOR IDX=1:1
if '$DATA(^TMP("HLS",$JOB,IDX))
QUIT
SET ^TMP("GMRCIUT1",$JOB,IDX,0)=^TMP("HLS",$JOB,IDX)
+76 ;
SET ERR=$$SAVEHL7X^EHMHL7("GMRCIUT1","IFC","VISTA-"_$$STA^XUAF4($$KSP^XUPARAM("INST")),"CERNER-"_$PIECE($PIECE(OBR,"|",3),"^",2),"|","^",$EXTRACT(HL("ECH"),2))
+77 ;
+78 ;
KILL ^TMP("GMRCIUT1",$JOB)
+79 QUIT
+80 ;