Changeset 636 for FOIAVistA/tag/r/HEALTH_LEVEL_SEVEN-HL/HLOSRVR1.m
- Timestamp:
- Dec 4, 2009, 8:26:01 PM (14 years ago)
- Location:
- FOIAVistA/tag/r
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
FOIAVistA/tag/r/HEALTH_LEVEL_SEVEN-HL/HLOSRVR1.m
r628 r636 1 HLOSRVR1 ;IRMFO-ALB/CJM - Reading messages, sending acks;03/24/2004 14:43 ;0 7/17/20072 ;;1.6;HEALTH LEVEL SEVEN;**126,130,131,133,134 ,137**;Oct 13, 1995;Build 211 HLOSRVR1 ;IRMFO-ALB/CJM - Reading messages, sending acks;03/24/2004 14:43 ;03/26/2007 2 ;;1.6;HEALTH LEVEL SEVEN;**126,130,131,133,134**;Oct 13, 1995;Build 30 3 3 ;Per VHA Directive 2004-038, this routine should not be modified. 4 4 ; … … 52 52 ....S HLMSTATE("ACK TO")=OLDMSGID 53 53 ....S HLMSTATE("ACK TO","ACK BY")=HLMSTATE("ID") 54 ....S HLMSTATE("ACK TO","STATUS")=$S(CODE="AA":"SU",1:"ER") 55 ....I $G(IEN) D 56 .....S HLMSTATE("ACK TO","IEN")=IEN 57 .....S HLMSTATE("ACK TO","SEQUENCE QUEUE")=$P($G(^HLB(+IEN,5)),"^") 54 ....S HLMSTATE("ACK TO","STATUS")=$S(CODE="AA":"SU",1:"AE") 55 ....S:$D(IEN) HLMSTATE("ACK TO","IEN")=IEN 58 56 ....S HLMSTATE("ACK TO","ERROR TEXT")=TEXT 59 57 ...D ADDSEG^HLOMSG(.HLMSTATE,.SEG) … … 68 66 .....S HLMSTATE("BATCH","ACK TO",SUBIEN)=OLDMSGID 69 67 .....S HLMSTATE("BATCH","ACK TO",SUBIEN,"ACK BY")=NEWMSGID 70 .....S HLMSTATE("BATCH","ACK TO",SUBIEN,"STATUS")=$S(CODE="AA":"SU",1:" ER")68 .....S HLMSTATE("BATCH","ACK TO",SUBIEN,"STATUS")=$S(CODE="AA":"SU",1:"AE") 71 69 .....S:$D(IEN) HLMSTATE("BATCH","ACK TO",SUBIEN,"IEN")=IEN 72 70 ....D ADDSEG^HLOMSG(.HLMSTATE,.SEG) … … 127 125 ; HLMSTATE("HDR") - the parsed header segment 128 126 ;Output: 129 ; HLMSTATE("STATUS")=" ER" if an error is detected127 ; HLMSTATE("STATUS")="SE" if an error is detected 130 128 ; HLMSTATE("STATUS","QUEUE") queue to put the message on 131 129 ; HLMSTATE("STATUS","ACTION") <tag^rtn> that is the processing routine for the receiving application … … 139 137 E D 140 138 .S WANTACK=1 141 I HLMSTATE("ORIGINAL MODE") S HLMSTATE("MSA",1)="AE",HLMSTATE("MSA",3)="THIS INTERFACE DOES NOT IMPLEMENT ORIGINAL MODE APPLICATION ACKOWLEDGMENTS",HLMSTATE("STATUS")=" ER" Q139 I HLMSTATE("ORIGINAL MODE") S HLMSTATE("MSA",1)="AE",HLMSTATE("MSA",3)="THIS INTERFACE DOES NOT IMPLEMENT ORIGINAL MODE APPLICATION ACKOWLEDGMENTS",HLMSTATE("STATUS")="SE" Q 142 140 I $G(HLMSTATE("ACK TO"))="" D Q:ERROR 143 .I '$$ACTION^HLOAPP(.HDR,.ACTION,.QUEUE) S ERROR=1 S:WANTACK HLMSTATE("MSA",1)="CR" S HLMSTATE("MSA",3)="RECEIVING APPLICATION NOT DEFINED",HLMSTATE("STATUS")=" ER" Q141 .I '$$ACTION^HLOAPP(.HDR,.ACTION,.QUEUE) S ERROR=1 S:WANTACK HLMSTATE("MSA",1)="CR" S HLMSTATE("MSA",3)="RECEIVING APPLICATION NOT DEFINED",HLMSTATE("STATUS")="SE" Q 144 142 .S HLMSTATE("STATUS","ACTION")=$G(ACTION),HLMSTATE("STATUS","QUEUE")=$G(QUEUE) 145 143 E D Q:ERROR ;this is an app ack … … 147 145 .N NODE 148 146 .S:+$G(HLMSTATE("ACK TO","IEN")) NODE=$G(^HLB(+HLMSTATE("ACK TO","IEN"),0)) 149 .I $G(NODE)="" S ERROR=1,HLMSTATE("STATUS")=" ER",HLMSTATE("ACK TO","IEN")="" S:WANTACK HLMSTATE("MSA",1)="CE" S HLMSTATE("MSA",3)="INITIAL MESSAGE TO APPLICATION ACKNOWLEDGMENT NOT FOUND" Q150 .I $P(NODE,"^",7)'="",$P(NODE,"^",7)'=HLMSTATE("ID") S ERROR=1,HLMSTATE("STATUS")=" ER",HLMSTATE("ACK TO","IEN")="" S:WANTACK HLMSTATE("MSA",1)="CE" S HLMSTATE("MSA",3)="INITIAL MESSAGE WAS ALREADY ACKED" Q147 .I $G(NODE)="" S ERROR=1,HLMSTATE("STATUS")="SE",HLMSTATE("ACK TO","IEN")="" S:WANTACK HLMSTATE("MSA",1)="CE" S HLMSTATE("MSA",3)="INITIAL MESSAGE TO APPLICATION ACKNOWLEDGMENT NOT FOUND" Q 148 .I $P(NODE,"^",7)'="",$P(NODE,"^",7)'=HLMSTATE("ID") S ERROR=1,HLMSTATE("STATUS")="SE",HLMSTATE("ACK TO","IEN")="" S:WANTACK HLMSTATE("MSA",1)="CE" S HLMSTATE("MSA",3)="INITIAL MESSAGE WAS ALREADY ACKED" Q 151 149 .I ($P(NODE,"^",11)]"") S HLMSTATE("STATUS","ACTION")=$P(NODE,"^",10,11),HLMSTATE("STATUS","QUEUE")=$S($P(NODE,"^",6)]"":$P(NODE,"^",6),1:"DEFAULT") Q 152 150 .;processing routine for the app ack wasn't found with the original message, look in the HLO Application Registry … … 154 152 .I $$ACTION^HLOAPP(.HDR,.ACTION,.QUEUE) S HLMSTATE("STATUS","ACTION")=$G(ACTION),HLMSTATE("STATUS","QUEUE")=$G(QUEUE) 155 153 ; 156 I HDR("PROCESSING ID")'=HLCSTATE("SYSTEM","PROCESSING ID") S:WANTACK HLMSTATE("MSA",1)="CR" S HLMSTATE("STATUS")=" ER",HLMSTATE("MSA",3)="SYSTEM PROCESSING ID="_HLCSTATE("SYSTEM","PROCESSING ID") Q154 I HDR("PROCESSING ID")'=HLCSTATE("SYSTEM","PROCESSING ID") S:WANTACK HLMSTATE("MSA",1)="CR" S HLMSTATE("STATUS")="SE",HLMSTATE("MSA",3)="SYSTEM PROCESSING ID="_HLCSTATE("SYSTEM","PROCESSING ID") Q 157 155 ; 158 156 ;wrong receiving facility? This is hard to check if the sender is not VistA, because the HL7 standard permits different coding systems to be used. This check is only for DNS or station number. … … 166 164 .I $P(HDR("RECEIVING FACILITY",2),":")[HLCSTATE("SYSTEM","DOMAIN") S PASS=1 Q 167 165 .I HLCSTATE("SYSTEM","DOMAIN")[$P(HDR("RECEIVING FACILITY",2),":") S PASS=1 Q 168 I 'PASS S HLMSTATE("STATUS")=" ER",HLMSTATE("MSA",3)="RECEIVING FACILITY IS "_HLCSTATE("SYSTEM","DOMAIN") S:WANTACK HLMSTATE("MSA",1)="CE"166 I 'PASS S HLMSTATE("STATUS")="SE",HLMSTATE("MSA",3)="RECEIVING FACILITY IS "_HLCSTATE("SYSTEM","DOMAIN") S:WANTACK HLMSTATE("MSA",1)="CE" 169 167 I PASS,WANTACK S HLMSTATE("MSA",1)="CA" 170 168 Q … … 215 213 D END^HLOSRVR 216 214 ; 217 ; multi-listenershould stop execution, only a single server may continue215 ;concurrent server connections (multi-listener) should stop execution, only a single server may continue 218 216 I $P($G(HLCSTATE("LINK","SERVER")),"^",2)'="S" D Q:$QUIT "" Q 219 .;don't log these errors217 .;don't log these common errors 220 218 .I ($ECODE["READ")!($ECODE["NOTOPEN")!($ECODE["DEVNOTOPN")!($ECODE["WRITE")!($ECODE["OPENERR") D 221 219 ..; … … 223 221 ..D ^%ZTER 224 222 ; 225 ; debugging?223 ;while debugging quit on all errors 226 224 I $G(^HLTMP("LOG ALL ERRORS"))!($ECODE["EDITED") Q:$QUIT "" Q 227 225 ; 228 ; possibly an endless loop?226 ;a lot of errors of the same time may indicate an endless loop, so keep a count and quit if large count 229 227 N HOUR 230 228 S HOUR=$E($$NOW^XLFDT,1,10) 229 ; 231 230 I ($G(^TMP("HL7 ERRORS",$J,HOUR,$P($ECODE,",",2)))>30) Q:$QUIT "" Q 232 231 ;
Note:
See TracChangeset
for help on using the changeset viewer.