Changeset 636 for FOIAVistA/tag/r/HEALTH_LEVEL_SEVEN-HL/HLTF.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/HLTF.m
r628 r636 1 HLTF ;AISC/SAW,JRP-Create/Process Message Text File Entries ;10/17/2007 09:41 2 ;;1.6;HEALTH LEVEL SEVEN;**1,19,43,55,109,120,122**;Oct 13, 1995;Build 14 3 ;Per VHA Directive 2004-038, this routine should not be modified. 4 ; 5 Q 6 ; 1 HLTF ;AISC/SAW,JRP-Create/Process Message Text File Entries ;01/23/06 12:56 2 ;;1.6;HEALTH LEVEL SEVEN;**1,19,43,55,109,120**;Oct 13, 1995;Build 12 7 3 FILE ;Create Entries in files 772 and 773 for Version 1.5 Interface Only 8 4 D CREATE(,.HLDA,.HLDT,.HLDT1) … … 75 71 MA(X,HLMID) ;X=ien in file 772, HLMID=msg. id (passed by ref.) 76 72 ;return ien in file 773 77 ;78 ; patch HL*1.6*122: MPI-client/server start79 F L +^HL(772,+$G(X)):10 Q:$T H 180 73 Q:'$G(^HL(772,X,0)) 0 81 L -^HL(772,+$G(X))82 ; patch HL*1.6*122: MPI-client/server end83 ;84 74 N DA,DD,DO,DIC,DIE,DR,HLDA,HLCNT,HLJ,Y 85 75 S DIC="^HLMA(",DIC(0)="L" … … 118 108 OUT(HLDA,HLMID,HLMTN) ;File Data in Message Text File for Outgoing Message 119 109 ;Version 1.5 Interface Only 120 ; 121 ; patch HL*1.6*122: HLTF routine splitted, moves sub-routines, 122 ; OUT, IN, and ACK to HLTF2 routine. 123 ; 124 D OUT^HLTF2($G(HLDA),$G(HLMID),$G(HLMTN)) 110 Q:'$D(HLFS) 111 ; 112 I HLMTN="ACK"!(HLMTN="MCF")!(HLMTN="ORR") Q:'$D(HLMSA) D ACK(HLMSA,"I") Q 113 ; 114 ;-- if message contained MSA find inbound message 115 I $D(HLMSA),$D(HLNDAP),$P(HLMSA,HLFS,3)]"" D 116 . N HLDAI 117 . S HLDAI=0 118 . F S HLDAI=$O(^HL(772,"AH",+$P($G(HLNDAP0),U,12),$P(HLMSA,HLFS,3),HLDAI)) Q:'HLDAI!($P($G(^HL(772,+HLDAI,0)),U,4)="I") 119 . I 'HLDAI K HLDAI 120 ; 121 D STUFF^HLTF0("O") 122 ; 123 N HLAC S HLAC=$S($D(HLERR):4,'$P(HLNDAP0,"^",10):1,1:2) D STATUS^HLTF0(HLDA,HLAC,$G(HLMSG)) 124 D:$D(HLCHAR) STATS^HLTF0(HLDA,HLCHAR,$G(HLEVN)) 125 ; 126 ;-- update status if MSA and found inbound message 127 I $D(HLMSA),$D(HLDAI) D 128 .N HLERR,HLMSG I $P(HLMSA,HLFS,4)]"" S HLERR=$P(HLMSA,HLFS,4) 129 .S HLAC=$P(HLMSA,HLFS,2) 130 .I HLAC'="AA" S HLMSG=$S(HLAC="AR":"Application Reject",HLAC="AE":"Application Error",1:"")_" - "_HLERR 131 .S HLAC=$S(HLAC'="AA":4,1:3) D STATUS^HLTF0(HLDAI,HLAC,$G(HLMSG)) 125 132 Q 126 133 ; 127 134 IN(HLMTN,HLMID,HLTIME) ;File Data in Message Text File for Incoming Message 128 135 ;Version 1.5 Interface Only 129 ; 130 ; patch HL*1.6*122: HLTF routine splitted, moves sub-routines, 131 ; OUT, IN, and ACK to HLTF2 routine. 132 ; 133 D IN^HLTF2($G(HLMTN),$G(HLMID),$G(HLTIME)) 136 Q:'$D(HLFS) 137 I HLMTN="ACK"!(HLMTN="MCF")!(HLMTN="ORR") Q:'$D(HLMSA) D ACK(HLMSA,"O",$G(HLDA)) Q 138 ; 139 N HLDAI S HLDA=0 140 I $D(HLNDAP),HLMID]"" D 141 .F S HLDA=+$O(^HL(772,"AH",+$P($G(HLNDAP0),U,12),HLMID,HLDA)) Q:'HLDA!($P($G(^HL(772,+HLDA,0)),U,4)="I") 142 .I HLDA D 143 ..S HLDT=+$P($G(^HL(772,HLDA,0)),"^"),HLDT1=$$HLDATE^HLFNC(HLDT) 144 ..K ^HL(772,HLDA,"IN") 145 .I $D(HLMSA),$P(HLMSA,HLFS,3)]"" D 146 ..S HLDAI=0 147 ..F S HLDAI=$O(^HL(772,"AH",+$P($G(HLNDAP0),U,12),$P(HLMSA,HLFS,3),HLDAI)) Q:'HLDAI!($P($G(^HL(772,+HLDAI,0)),U,4)="O") 148 ..I 'HLDAI K HLDAI 149 ; 150 I 'HLDA D CREATE(.HLMID,.HLDA,.HLDT,.HLDT1) K HLZ 151 ; 152 D STUFF^HLTF0("I") 153 N HLAC S HLAC=$S($D(HLERR):4,1:1) D STATUS^HLTF0(HLDA,HLAC,$G(HLMSG)) 154 ; 155 D MERGE15^HLTF1("G",HLDA,"HLR",HLTIME) 156 ; 157 I '$D(HLERR),$D(HLMSA),$D(HLDAI) D 158 .N HLAC,HLERR,HLMSG I $P(HLMSA,HLFS,4)]"" S HLERR=$P(HLMSA,HLFS,4) 159 .S HLAC=$P(HLMSA,HLFS,2) I HLAC'="AA" S HLMSG=$S(HLAC="AR":"Application Reject",1:"Application Error")_" - "_HLERR 160 .S HLAC=$S(HLAC'="AA":4,1:3) D STATUS^HLTF0(HLDAI,HLAC,$G(HLMSG)) 134 161 Q 135 162 ; 136 163 ACK(HLMSA,HLIO,HLDA) ;Process 'ACK' Message Type - Version 1.5 Interface Only 137 ; 138 ; patch HL*1.6*122: HLTF routine splitted, moves sub-routines, 139 ; OUT, IN, and ACK to HLTF2 routine. 140 ; 141 D ACK^HLTF2($G(HLMSA),$G(HLIO),$G(HLDA)) 164 ; To determine the correct message to link the ACK, HLIO is used. 165 ; For an ack from DHCP (original message from remote system) then 166 ; HLIO should be "I" so that the correct inbound message is ack-ed. For 167 ; an inbound ack (original message outbound from DHCP) HLIO should be 168 ; "O". This distinction must be made due to the possible duplicate 169 ; message ids from a bi-direction interface. 170 ; 171 ; Input : MSA - MSA from ACK message. 172 ; HLIO - Either "I" or "O" : See note above. 173 ;Output : None 174 ; 175 N HLAC,HLMIDI 176 ;-- set up required vars 177 S HLAC=$P(HLMSA,HLFS,2),HLMIDI=$P(HLMSA,HLFS,3) 178 ;-- quit 179 Q:HLMIDI']""!(HLAC']"")!('$D(HLNDAP)) 180 ;-- find message to ack 181 I '$G(HLDA) S HLDA=0 D 182 . F S HLDA=+$O(^HL(772,"AH",+$P($G(HLNDAP0),U,12),HLMIDI,HLDA)) Q:'HLDA!($P($G(^HL(772,+HLDA,0)),U,4)=HLIO) 183 ;-- quit if no message 184 Q:'$D(^HL(772,+HLDA,0)) 185 ;-- check for error 186 I $P(HLMSA,HLFS,4)]"" N HLERR S HLERR=$P(HLMSA,HLFS,4) 187 I $D(HLERR),'$D(HLMSG) N HLMSG S HLMSG="Error During Receipt of Acknowledgement Message"_$S(HLAC="AR":" - Application Reject",HLAC="AE":" - Application Error",1:"")_" - "_HLERR 188 ;-- update status 189 S HLAC=$S(HLMTN="MCF":2,HLAC'="AA":4,1:3) 190 D STATUS^HLTF0(HLDA,HLAC,$G(HLMSG)) 142 191 Q 143 192 ; … … 152 201 I '$L($G(OS)) N OS S OS=$G(^%ZOSF("OS")) 153 202 ; 154 I OS'["DSM",OS'["OpenM" D 203 ; patch HL*1.6*120, protect Else command 204 ; I OS'["DSM",OS'["OpenM" D 205 I OS'["DSM",OS'["OpenM" D I 1 155 206 .F L +^HLCS(869.3,1,772):10 S IEN=+$G(^HLCS(869.3,1,772))+1,^HLCS(869.3,1,772)=IEN S:$D(^HL(772,IEN)) IEN=0,^HLCS(869.3,1,772)=($O(^HL(772,":"),-1)\1) L -^HLCS(869.3,1,772) Q:IEN 156 207 E D 157 208 .F S IEN=$I(^HLCS(869.3,1,772),1) S:$D(^HL(772,IEN)) IEN=0,^HLCS(869.3,1,772)=($O(^HL(772,":"),-1)\1) Q:IEN 158 ;159 ; patch HL*1.6*122: MPI-client/server start160 F L +^HL(772,IEN):10 Q:$T H 1161 209 S ^HL(772,IEN,0)=$G(FLD01)_"^" 162 210 I $L($G(FLD01)) S ^HL(772,"B",FLD01,IEN)="" 163 L -^HL(772,IEN)164 ; patch HL*1.6*122: MPI-client/server end165 ;166 211 Q IEN 167 212 ; … … 176 221 I '$L($G(OS)) N OS S OS=$G(^%ZOSF("OS")) 177 222 ; 178 I OS'["DSM",OS'["OpenM" D 223 ; patch HL*1.6*120, protect Else command 224 ; I OS'["DSM",OS'["OpenM" D 225 I OS'["DSM",OS'["OpenM" D I 1 179 226 .F L +^HLCS(869.3,1,773):10 S IEN=+$G(^HLCS(869.3,1,773))+1,^HLCS(869.3,1,773)=IEN S:$D(^HLMA(IEN)) IEN=0,^HLCS(869.3,1,773)=($O(^HLMA(":"),-1)\1) L -^HLCS(869.3,1,773) Q:IEN 180 227 E D 181 228 .F S IEN=$I(^HLCS(869.3,1,773),1) S:$D(^HLMA(IEN)) IEN=0,^HLCS(869.3,1,773)=($O(^HLMA(":"),-1)\1) Q:IEN 182 ;183 ; patch HL*1.6*122: MPI-client/server184 F L +^HLMA(IEN):10 Q:$T H 1185 229 S ^HLMA(IEN,0)=$G(FLD01)_"^" 186 230 I $L($G(FLD01)) S ^HLMA("B",FLD01,IEN)="" 187 L -^HLMA(IEN)188 ;189 231 Q IEN
Note:
See TracChangeset
for help on using the changeset viewer.