- HLCSHDR3 ;SFIRMFO/LJA - Reset MSH Segment Fields ;03/24/04 11:19
- ;;1.6;HEALTH LEVEL SEVEN;**93,108**;Oct 13, 1995
- ;
- ; Reset RECEIVING APPLICATION and RECEIVING SITE of MSH segment - HL*1.6*93
- ;
- RESET ; Called from HEADER^HLCSHDR1 & BHSHDR^HLCSHDR1, which is called by
- ; GENERATE^HLMA & GENACK^HLMA1.
- N MTIEN
- ;
- ; Even if set already, set 772 IEN again...
- S MTIEN=+$G(^HLMA(+$G(IEN),0)) QUIT:$G(^HL(772,+MTIEN,0))']"" ;->
- ;
- ; Different variables used for Event Protocol
- D MSHCHG($G(HLEID),$S($G(EIDS)>0:+EIDS,1:+$G(HLEIDS)),$G(MTIEN),$G(IEN),.SERAPP,.SERFAC,.CLNTAPP,.CLNTFAC,.HLP)
- ;
- QUIT
- ;
- MSHCHG(HLEID,EIDS,MTIEN,IEN,SERAPP,SERFAC,CLNTAPP,CLNTFAC,HLPARR) ; The parameters
- ; are the required input variables. Call here "by reference".
- ;
- ; HLEID=Event driver protocol IEN
- ; EIDS=Subscriber protocol IEN
- ; MTIEN=772 IEN
- ; IEN=773 IEN
- ; SERAPP=Sending App text
- ; SERFAC=Sending Fac text
- ;CLNTAPP=Rec (client) app text
- ;CLNTFAC=Rec (client) fac text
- ; HLP()=HLP("SUBSCRIBER") array
- ;
- ; The MSH segment is built (usually) in HLCSHDR1. Immediately before
- ; using the existing local variables to concatenate them together into
- ; the MSH segment, HLCSHDR1 calls here to see if some of the local
- ; variables should be reset.
- ;
- ; Resetting the local variables used in creating the MSH segment
- ; gives those creating HL7 messages control over the local variables
- ; that can be changed below.
- ;
- ; There are rules that govern what the creator of the MSH segment
- ; can change:
- ;
- ; Rule #1: The SENDING APPLICATION can be changed. Var=HLMSHSAN
- ; Rule #2: The SENDING FACILITY can be changed. Var=HLMSHSFN
- ; Rule #3: The RECEIVING APPLICATION can be changed. Var=HLMSHRAN
- ; Rule #4: The RECEIVING FACILITY can be changed. Var=HLMSHRFN
- ; Rule #5: No other fields in the MSH segment can be changed.
- ;
- ; If the passed in HLP() array entry used to reset the above four
- ; fields holds the text used, the variables above will be reset.
- ; If M code is used, the M code itself is responsible for setting
- ; these specific local variables.
- ;
- ; The following local variables are created and made available for
- ; use by M code:
- ;
- ; Protocol, Event: HLMSHPRE (IEN^NAME)
- ; Protocol, Subscriber: HLMSHPRS (IEN^NAME)
- ;
- ; HL Message Text file (#772) IEN: HLMSH772 (IEN)
- ; HL Message Admin file (#773) IEN: HLMSH773 (IEN)
- ;
- ; Sending Application, Original: HLMSHSAO (SERAPP)
- ; Sending Application, New: HLMSHSAN
- ; Sending Facility, Original: HLMSHSFO (SERFAC)
- ; Sending Facility, New: HLMSHSFN
- ; Receiving Application, Original: HLMSHRAO (CLNTAPP)
- ; Receiving Application, New: HLMSHRAN
- ; Receiving Facility, Original: HLMSHRFO (CLNTFAC)
- ; Receiving Facility, New: HLMSHRFN
- ;
- ; M Code SUBROUTINE: HLMSHTAG
- ; M Code ROUTINE: HLMSHRTN
- ;
- ; See the documentation in patch HL*1.6*93 in the Forum patch module
- ; for additional information.
- ;
- ; CLIENT -- req
- ;
- ; HLMSH-namespaced variables created below
- N HLDEBUG,HLMSH101,HLMSH31,HLMSH31C,HLMSH32,HLMSH32C
- N HLMSH33,HLMSH33C,HLMSH34,HLMSH34C,HLMSH772,HLMSH773,HLMSH91
- N HLMSHAN,HLMSHFN,HLMSHPRE,HLMSHPRS
- N HLMSHRTN,HLMSHRAN,HLMSHRAO,HLMSHRFN
- N HLMSHRFO,HLMSHSAN,HLMSHSAO,HLMSHSFN,HLMSHSFO
- N HLMSHPRO,HLMSHREF,HLMSHSUB,HLMSHTAG
- ;
- ; Non-HLMSH-namespaced variables created below
- N HLPWAY,HLRAN,HLRFN,HLSAN,HLSFN,HLTYPE
- ;
- ;
- ; Set up variables pass #1...
- S (HLMSH31,HLMSH32,HLMSH33,HLMSH34)=""
- S (HLMSH31C,HLMSH32C,HLMSH33C,HLMSH34C)=""
- S HLMSHPRE=$G(HLEID)_U_$P($G(^ORD(101,+$G(HLEID),0)),U) ; Event 101
- S HLMSHPRS=$G(EIDS)_U_$P($G(^ORD(101,+$G(EIDS),0)),U) ; Sub 101
- S HLMSH772=$G(MTIEN)
- S HLMSH773=$G(IEN) QUIT:'$D(^HLMA(+HLMSH773,0)) ;->
- ;
- ; Get passed-in-by-reference HLP("SUBSCRIBER") data into variable...
- S HLMSHPRO=$$HLMSHPRO QUIT:HLMSHPRO']"" ;->
- ;
- ; Should DEBUG data be stored? (This can be overwritten in $$HLMSHPRO)
- I $G(HLDEBUG)']"" S HLDEBUG=$P($P(HLMSHPRO,"~",2),U,8)
- ; HLDEBUG might be already set in $$HLMSHPRO
- S HLDEBUG=$TR(HLDEBUG,"- /",U) ; Change delimiters to ^
- ;
- ; HLDEBUG (#1-#2-#3) Explanation...
- ; -- #1 can be 0 (NO) or 1 (YES) for whether ^HLMA(#,90) data stored
- ; -- #2 can be 0 or 1 for whether ^HLMA(#,91) data should be stored
- ; -- #3 can be 0 or 1 or 2 for what type of ^XTMP data should be stored
- ; -- Data is stored in ^XTMP("HLCSHDR3 "_IEN773)
- ; -- 0 = No XTMP data should be stored
- ; -- 1 = Store only SOME of the data
- ; -- 2 = Store ALL variable data
- ;
- ; Store HLP("SUBSCRIBER"[,#]) in ^HLMA(#,90)
- I $P(HLDEBUG,U)=1 D
- . S X=$P(HLMSHPRO,"~",2) I X]"" S ^HLMA(+HLMSH773,90)=X
- ;
- ; Found by general HLP("SUBSCRIBER") or specific HLP("SUBSCRIBER",#) entry?
- ; patch HL*1.6*108 start
- S HLPWAY=$P(HLMSHPRO,"~"),X=$L(HLMSHPRO,"~"),HLMSHREF=$P(HLMSHPRO,"~",+X),HLMSHPRO=$P(HLMSHPRO,"~",+2,+X-1)
- ; Above line modified by LJA - 3/18/04 Original line shown below.
- ; S HLPWAY=$P(HLMSHPRO,"~"),HLMSHREF=$P(HLMSHPRO,"~",3),HLMSHPRO=$P(HLMSHPRO,"~",2)
- ; patch HL*1.6*108 end
- ;
- ; Set up variables pass #2...
- S HLMSHSAO=$G(SERAPP),(HLSAN,HLMSHSAN)=$P(HLMSHPRO,U,2) ; Send App
- S HLMSHSFO=$G(SERFAC),(HLSFN,HLMSHSFN)=$P(HLMSHPRO,U,3) ; Send Fac
- S HLMSHRAO=$G(CLNTAPP),(HLRAN,HLMSHRAN)=$P(HLMSHPRO,U,4) ; Rec App
- S HLMSHRFO=$G(CLNTFAC),(HLRFN,HLMSHRFN)=$P(HLMSHPRO,U,5) ; Rec Fac
- ;
- ; If there's an Xecution routine, do now...
- S HLMSHTAG=$P(HLMSHPRO,U,6),HLMSHRTN=$P(HLMSHPRO,U,7)
- I HLMSHTAG]"",HLMSHRTN]"" D @HLMSHTAG^@HLMSHRTN
- I HLMSHTAG']"",HLMSHRTN]"" D ^@HLMSHRTN
- ;
- ; Start work for ^HLMA(#,91) node...
- S HLMSH91="" ; HLMSH91 is the data that will be stored in ^(91)
- I SERAPP'=HLMSHSAN D SET91M(1,SERAPP,HLSAN,HLMSHSAN) ; Reset by M code?
- I SERFAC'=HLMSHSFN D SET91M(3,SERFAC,HLSFN,HLMSHSFN)
- I CLNTAPP'=HLMSHRAN D SET91M(5,CLNTAPP,HLRAN,HLMSHRAN)
- I CLNTFAC'=HLMSHRFN D SET91M(7,CLNTFAC,HLRFN,HLMSHRFN)
- ;
- ; The real resetting of MSH segment variables work is done here...
- D SET^HLCSHDR4(HLMSHSAN,"SERAPP",1) ; Update SERAPP if different, and DATA too...
- D SET^HLCSHDR4(HLMSHSFN,"SERFAC",3) ; Etc
- D SET^HLCSHDR4(HLMSHRAN,"CLNTAPP",5) ; Etc
- D SET^HLCSHDR4(HLMSHRFN,"CLNTFAC",7) ; Etc
- ;
- ; Set ^HLMA(#,91) node if overwrites occurred...
- I HLMSH91]"" S ^HLMA(+HLMSH773,91)=HLMSH91
- ;
- ; If debugging, record pre variable view...
- D DEBUG^HLCSHDR4($P(HLDEBUG,U,3))
- ;
- QUIT
- ;
- SET91M(PCE,MSH,PREM,POSTM) ; If M code re/set the MSH field, record...
- QUIT:PREM=POSTM ;-> M code did not change anything...
- S $P(HLMSH91,U,PCE)=MSH ; original (pre-overwrite) value
- S $P(HLMSH91,U,PCE+1)="M" ; Overwrite source (A/M)
- QUIT
- ;
- HLMSHPRO() ; Determines whether to use the generic HLP("SUBSCRIBER") data,
- ; or instead - if existent - the HLP("SUBSCRIBER",#)=SUB PROTOCOL^... data
- ;CLIENT -- req
- N HLD,HLFIND,HLI,HLMSHREF,HLMSHSUB,HLX
- ;
- ; Get the default information...
- S HLMSHSUB=$G(HLP("SUBSCRIBER")),HLMSHREF=999
- ;
- ; Overwrite HLMSHSUB if found...
- S HLI=0,HLFIND=""
- F S HLI=$O(HLP("SUBSCRIBER",HLI)) Q:HLI'>0!(HLFIND]"") D
- . S HLD=$G(HLP("SUBSCRIBER",+HLI)) QUIT:HLD']"" ;->
- . S HLD=$P(HLD,U) QUIT:HLD']"" ;->
- . ; If passed name..
- . I HLD'=+HLD S HLD=$$FIND101(HLD)
- . ; Must have IEN by now...
- . QUIT:+HLD'=+HLMSHPRS ;-> Not for right subscriber protocol
- . S HLFIND=HLP("SUBSCRIBER",+HLI),HLMSHREF=+HLI
- ;
- ; Backdoor overwrite of HLDEBUG value...
- ; - This is a very important back door!! Even if applications
- ; - aren't logging debug data, it can be turned on by setting
- ; - ^XTMP("HLCSHDR3 DEBUG","DEBUG") or ^XTMP("HLCSHDR3 DEBUG","DEBUG",SUB-101)
- ; If the GENERAL entry exists, set HLDEBUG. Might be written next line though
- S HLX=$G(^XTMP("HLCSHDR3 DEBUG","DEBUG")) I HLX]"" S HLDEBUG=HLX
- ; If a SPECIFIC entry found, reset HLDEBUG to it...
- S HLX=$G(^XTMP("HLCSHDR3 DEBUG","DEBUG",+HLFIND)) I HLX]"" S HLDEBUG=HLX
- ;
- QUIT $S(HLFIND]"":"S~"_HLFIND_"~"_HLMSHREF,HLMSHSUB]"":"G~"_HLMSHSUB_"~"_HLMSHREF,1:"")
- ;
- FIND101(PROTNM) ; Find 101 entry...
- N D,DIC,X,Y
- S DIC="^ORD(101,",DIC(0)="MQ",D="B",X=PROTNM
- D MIX^DIC1
- QUIT $S(Y>0:+Y,1:"")
- ;
- SHOW773(IEN773) ; Show reset info from 773 entry...
- QUIT
- ;
- EOR ;HLCSHDR3 - Reset MSH Segment Fields ;9/12/02 11:50
- HLCSHDR3 ;SFIRMFO/LJA - Reset MSH Segment Fields ;03/24/04 11:19
- +1 ;;1.6;HEALTH LEVEL SEVEN;**93,108**;Oct 13, 1995
- +2 ;
- +3 ; Reset RECEIVING APPLICATION and RECEIVING SITE of MSH segment - HL*1.6*93
- +4 ;
- RESET ; Called from HEADER^HLCSHDR1 & BHSHDR^HLCSHDR1, which is called by
- +1 ; GENERATE^HLMA & GENACK^HLMA1.
- +2 NEW MTIEN
- +3 ;
- +4 ; Even if set already, set 772 IEN again...
- +5 ;->
- SET MTIEN=+$GET(^HLMA(+$GET(IEN),0))
- IF $GET(^HL(772,+MTIEN,0))']""
- QUIT
- +6 ;
- +7 ; Different variables used for Event Protocol
- +8 DO MSHCHG($GET(HLEID),$SELECT($GET(EIDS)>0:+EIDS,1:+$GET(HLEIDS)),$GET(MTIEN),$GET(IEN),.SERAPP,.SERFAC,.CLNTAPP,.CLNTFAC,.HLP)
- +9 ;
- +10 QUIT
- +11 ;
- MSHCHG(HLEID,EIDS,MTIEN,IEN,SERAPP,SERFAC,CLNTAPP,CLNTFAC,HLPARR) ; The parameters
- +1 ; are the required input variables. Call here "by reference".
- +2 ;
- +3 ; HLEID=Event driver protocol IEN
- +4 ; EIDS=Subscriber protocol IEN
- +5 ; MTIEN=772 IEN
- +6 ; IEN=773 IEN
- +7 ; SERAPP=Sending App text
- +8 ; SERFAC=Sending Fac text
- +9 ;CLNTAPP=Rec (client) app text
- +10 ;CLNTFAC=Rec (client) fac text
- +11 ; HLP()=HLP("SUBSCRIBER") array
- +12 ;
- +13 ; The MSH segment is built (usually) in HLCSHDR1. Immediately before
- +14 ; using the existing local variables to concatenate them together into
- +15 ; the MSH segment, HLCSHDR1 calls here to see if some of the local
- +16 ; variables should be reset.
- +17 ;
- +18 ; Resetting the local variables used in creating the MSH segment
- +19 ; gives those creating HL7 messages control over the local variables
- +20 ; that can be changed below.
- +21 ;
- +22 ; There are rules that govern what the creator of the MSH segment
- +23 ; can change:
- +24 ;
- +25 ; Rule #1: The SENDING APPLICATION can be changed. Var=HLMSHSAN
- +26 ; Rule #2: The SENDING FACILITY can be changed. Var=HLMSHSFN
- +27 ; Rule #3: The RECEIVING APPLICATION can be changed. Var=HLMSHRAN
- +28 ; Rule #4: The RECEIVING FACILITY can be changed. Var=HLMSHRFN
- +29 ; Rule #5: No other fields in the MSH segment can be changed.
- +30 ;
- +31 ; If the passed in HLP() array entry used to reset the above four
- +32 ; fields holds the text used, the variables above will be reset.
- +33 ; If M code is used, the M code itself is responsible for setting
- +34 ; these specific local variables.
- +35 ;
- +36 ; The following local variables are created and made available for
- +37 ; use by M code:
- +38 ;
- +39 ; Protocol, Event: HLMSHPRE (IEN^NAME)
- +40 ; Protocol, Subscriber: HLMSHPRS (IEN^NAME)
- +41 ;
- +42 ; HL Message Text file (#772) IEN: HLMSH772 (IEN)
- +43 ; HL Message Admin file (#773) IEN: HLMSH773 (IEN)
- +44 ;
- +45 ; Sending Application, Original: HLMSHSAO (SERAPP)
- +46 ; Sending Application, New: HLMSHSAN
- +47 ; Sending Facility, Original: HLMSHSFO (SERFAC)
- +48 ; Sending Facility, New: HLMSHSFN
- +49 ; Receiving Application, Original: HLMSHRAO (CLNTAPP)
- +50 ; Receiving Application, New: HLMSHRAN
- +51 ; Receiving Facility, Original: HLMSHRFO (CLNTFAC)
- +52 ; Receiving Facility, New: HLMSHRFN
- +53 ;
- +54 ; M Code SUBROUTINE: HLMSHTAG
- +55 ; M Code ROUTINE: HLMSHRTN
- +56 ;
- +57 ; See the documentation in patch HL*1.6*93 in the Forum patch module
- +58 ; for additional information.
- +59 ;
- +60 ; CLIENT -- req
- +61 ;
- +62 ; HLMSH-namespaced variables created below
- +63 NEW HLDEBUG,HLMSH101,HLMSH31,HLMSH31C,HLMSH32,HLMSH32C
- +64 NEW HLMSH33,HLMSH33C,HLMSH34,HLMSH34C,HLMSH772,HLMSH773,HLMSH91
- +65 NEW HLMSHAN,HLMSHFN,HLMSHPRE,HLMSHPRS
- +66 NEW HLMSHRTN,HLMSHRAN,HLMSHRAO,HLMSHRFN
- +67 NEW HLMSHRFO,HLMSHSAN,HLMSHSAO,HLMSHSFN,HLMSHSFO
- +68 NEW HLMSHPRO,HLMSHREF,HLMSHSUB,HLMSHTAG
- +69 ;
- +70 ; Non-HLMSH-namespaced variables created below
- +71 NEW HLPWAY,HLRAN,HLRFN,HLSAN,HLSFN,HLTYPE
- +72 ;
- +73 ;
- +74 ; Set up variables pass #1...
- +75 SET (HLMSH31,HLMSH32,HLMSH33,HLMSH34)=""
- +76 SET (HLMSH31C,HLMSH32C,HLMSH33C,HLMSH34C)=""
- +77 ; Event 101
- SET HLMSHPRE=$GET(HLEID)_U_$PIECE($GET(^ORD(101,+$GET(HLEID),0)),U)
- +78 ; Sub 101
- SET HLMSHPRS=$GET(EIDS)_U_$PIECE($GET(^ORD(101,+$GET(EIDS),0)),U)
- +79 SET HLMSH772=$GET(MTIEN)
- +80 ;->
- SET HLMSH773=$GET(IEN)
- IF '$DATA(^HLMA(+HLMSH773,0))
- QUIT
- +81 ;
- +82 ; Get passed-in-by-reference HLP("SUBSCRIBER") data into variable...
- +83 ;->
- SET HLMSHPRO=$$HLMSHPRO
- IF HLMSHPRO']""
- QUIT
- +84 ;
- +85 ; Should DEBUG data be stored? (This can be overwritten in $$HLMSHPRO)
- +86 IF $GET(HLDEBUG)']""
- SET HLDEBUG=$PIECE($PIECE(HLMSHPRO,"~",2),U,8)
- +87 ; HLDEBUG might be already set in $$HLMSHPRO
- +88 ; Change delimiters to ^
- SET HLDEBUG=$TRANSLATE(HLDEBUG,"- /",U)
- +89 ;
- +90 ; HLDEBUG (#1-#2-#3) Explanation...
- +91 ; -- #1 can be 0 (NO) or 1 (YES) for whether ^HLMA(#,90) data stored
- +92 ; -- #2 can be 0 or 1 for whether ^HLMA(#,91) data should be stored
- +93 ; -- #3 can be 0 or 1 or 2 for what type of ^XTMP data should be stored
- +94 ; -- Data is stored in ^XTMP("HLCSHDR3 "_IEN773)
- +95 ; -- 0 = No XTMP data should be stored
- +96 ; -- 1 = Store only SOME of the data
- +97 ; -- 2 = Store ALL variable data
- +98 ;
- +99 ; Store HLP("SUBSCRIBER"[,#]) in ^HLMA(#,90)
- +100 IF $PIECE(HLDEBUG,U)=1
- Begin DoDot:1
- +101 SET X=$PIECE(HLMSHPRO,"~",2)
- IF X]""
- SET ^HLMA(+HLMSH773,90)=X
- End DoDot:1
- +102 ;
- +103 ; Found by general HLP("SUBSCRIBER") or specific HLP("SUBSCRIBER",#) entry?
- +104 ; patch HL*1.6*108 start
- +105 SET HLPWAY=$PIECE(HLMSHPRO,"~")
- SET X=$LENGTH(HLMSHPRO,"~")
- SET HLMSHREF=$PIECE(HLMSHPRO,"~",+X)
- SET HLMSHPRO=$PIECE(HLMSHPRO,"~",+2,+X-1)
- +106 ; Above line modified by LJA - 3/18/04 Original line shown below.
- +107 ; S HLPWAY=$P(HLMSHPRO,"~"),HLMSHREF=$P(HLMSHPRO,"~",3),HLMSHPRO=$P(HLMSHPRO,"~",2)
- +108 ; patch HL*1.6*108 end
- +109 ;
- +110 ; Set up variables pass #2...
- +111 ; Send App
- SET HLMSHSAO=$GET(SERAPP)
- SET (HLSAN,HLMSHSAN)=$PIECE(HLMSHPRO,U,2)
- +112 ; Send Fac
- SET HLMSHSFO=$GET(SERFAC)
- SET (HLSFN,HLMSHSFN)=$PIECE(HLMSHPRO,U,3)
- +113 ; Rec App
- SET HLMSHRAO=$GET(CLNTAPP)
- SET (HLRAN,HLMSHRAN)=$PIECE(HLMSHPRO,U,4)
- +114 ; Rec Fac
- SET HLMSHRFO=$GET(CLNTFAC)
- SET (HLRFN,HLMSHRFN)=$PIECE(HLMSHPRO,U,5)
- +115 ;
- +116 ; If there's an Xecution routine, do now...
- +117 SET HLMSHTAG=$PIECE(HLMSHPRO,U,6)
- SET HLMSHRTN=$PIECE(HLMSHPRO,U,7)
- +118 IF HLMSHTAG]""
- IF HLMSHRTN]""
- DO @HLMSHTAG^@HLMSHRTN
- +119 IF HLMSHTAG']""
- IF HLMSHRTN]""
- DO ^@HLMSHRTN
- +120 ;
- +121 ; Start work for ^HLMA(#,91) node...
- +122 ; HLMSH91 is the data that will be stored in ^(91)
- SET HLMSH91=""
- +123 ; Reset by M code?
- IF SERAPP'=HLMSHSAN
- DO SET91M(1,SERAPP,HLSAN,HLMSHSAN)
- +124 IF SERFAC'=HLMSHSFN
- DO SET91M(3,SERFAC,HLSFN,HLMSHSFN)
- +125 IF CLNTAPP'=HLMSHRAN
- DO SET91M(5,CLNTAPP,HLRAN,HLMSHRAN)
- +126 IF CLNTFAC'=HLMSHRFN
- DO SET91M(7,CLNTFAC,HLRFN,HLMSHRFN)
- +127 ;
- +128 ; The real resetting of MSH segment variables work is done here...
- +129 ; Update SERAPP if different, and DATA too...
- DO SET^HLCSHDR4(HLMSHSAN,"SERAPP",1)
- +130 ; Etc
- DO SET^HLCSHDR4(HLMSHSFN,"SERFAC",3)
- +131 ; Etc
- DO SET^HLCSHDR4(HLMSHRAN,"CLNTAPP",5)
- +132 ; Etc
- DO SET^HLCSHDR4(HLMSHRFN,"CLNTFAC",7)
- +133 ;
- +134 ; Set ^HLMA(#,91) node if overwrites occurred...
- +135 IF HLMSH91]""
- SET ^HLMA(+HLMSH773,91)=HLMSH91
- +136 ;
- +137 ; If debugging, record pre variable view...
- +138 DO DEBUG^HLCSHDR4($PIECE(HLDEBUG,U,3))
- +139 ;
- +140 QUIT
- +141 ;
- SET91M(PCE,MSH,PREM,POSTM) ; If M code re/set the MSH field, record...
- +1 ;-> M code did not change anything...
- IF PREM=POSTM
- QUIT
- +2 ; original (pre-overwrite) value
- SET $PIECE(HLMSH91,U,PCE)=MSH
- +3 ; Overwrite source (A/M)
- SET $PIECE(HLMSH91,U,PCE+1)="M"
- +4 QUIT
- +5 ;
- HLMSHPRO() ; Determines whether to use the generic HLP("SUBSCRIBER") data,
- +1 ; or instead - if existent - the HLP("SUBSCRIBER",#)=SUB PROTOCOL^... data
- +2 ;CLIENT -- req
- +3 NEW HLD,HLFIND,HLI,HLMSHREF,HLMSHSUB,HLX
- +4 ;
- +5 ; Get the default information...
- +6 SET HLMSHSUB=$GET(HLP("SUBSCRIBER"))
- SET HLMSHREF=999
- +7 ;
- +8 ; Overwrite HLMSHSUB if found...
- +9 SET HLI=0
- SET HLFIND=""
- +10 FOR
- SET HLI=$ORDER(HLP("SUBSCRIBER",HLI))
- IF HLI'>0!(HLFIND]"")
- QUIT
- Begin DoDot:1
- +11 ;->
- SET HLD=$GET(HLP("SUBSCRIBER",+HLI))
- IF HLD']""
- QUIT
- +12 ;->
- SET HLD=$PIECE(HLD,U)
- IF HLD']""
- QUIT
- +13 ; If passed name..
- +14 IF HLD'=+HLD
- SET HLD=$$FIND101(HLD)
- +15 ; Must have IEN by now...
- +16 ;-> Not for right subscriber protocol
- IF +HLD'=+HLMSHPRS
- QUIT
- +17 SET HLFIND=HLP("SUBSCRIBER",+HLI)
- SET HLMSHREF=+HLI
- End DoDot:1
- +18 ;
- +19 ; Backdoor overwrite of HLDEBUG value...
- +20 ; - This is a very important back door!! Even if applications
- +21 ; - aren't logging debug data, it can be turned on by setting
- +22 ; - ^XTMP("HLCSHDR3 DEBUG","DEBUG") or ^XTMP("HLCSHDR3 DEBUG","DEBUG",SUB-101)
- +23 ; If the GENERAL entry exists, set HLDEBUG. Might be written next line though
- +24 SET HLX=$GET(^XTMP("HLCSHDR3 DEBUG","DEBUG"))
- IF HLX]""
- SET HLDEBUG=HLX
- +25 ; If a SPECIFIC entry found, reset HLDEBUG to it...
- +26 SET HLX=$GET(^XTMP("HLCSHDR3 DEBUG","DEBUG",+HLFIND))
- IF HLX]""
- SET HLDEBUG=HLX
- +27 ;
- +28 QUIT $SELECT(HLFIND]"":"S~"_HLFIND_"~"_HLMSHREF,HLMSHSUB]"":"G~"_HLMSHSUB_"~"_HLMSHREF,1:"")
- +29 ;
- FIND101(PROTNM) ; Find 101 entry...
- +1 NEW D,DIC,X,Y
- +2 SET DIC="^ORD(101,"
- SET DIC(0)="MQ"
- SET D="B"
- SET X=PROTNM
- +3 DO MIX^DIC1
- +4 QUIT $SELECT(Y>0:+Y,1:"")
- +5 ;
- SHOW773(IEN773) ; Show reset info from 773 entry...
- +1 QUIT
- +2 ;
- EOR ;HLCSHDR3 - Reset MSH Segment Fields ;9/12/02 11:50