BHLFO ; cmi/flag/maw - BHL Get Inbound Filing Order ;
;;3.01;BHL IHS Interfaces with GIS;**12**;JUL 01, 2001
;
;
;this routine will look at the message and get the inbound filing
;order
;
MAIN ;-- this is the main routine driver
D FO,PRS
Q
;
FO ;-- get the inbound filing order
S BHLCNT=0
S BHLMDA=0 F S BHLMDA=$O(^INTHL7M(BHLMIEN,1,"AS",BHLMDA)) Q:'BHLMDA D
. S BHLMFN=$O(^INTHL7M(BHLMIEN,1,"AS",BHLMDA,0))
. S BHLSEG=$P($G(^INTHL7S(+$P($G(^INTHL7M(BHLMIEN,1,BHLMFN,0)),U),0)),U,2)
. S BHLCNT=BHLCNT+1
. S BHLFO(BHLCNT)=BHLSEG
Q
;
PRS ;-- reparse INV for filer
S BHLINV=0 F S BHLINV=$O(INV(BHLINV)) Q:BHLINV="" D
. S BHLSEG=$E(BHLINV,1,3)
. S BHLSEQ=+$E(BHLINV,4,6)
. S BHLML=$O(INV(BHLINV,0))
. I BHLML="" S BHL(BHLSEG,1,BHLSEQ)=$G(INV(BHLINV)) Q
. S BHLML=0 F S BHLML=$O(INV(BHLINV,BHLML)) Q:'BHLML D
.. I $O(INV(BHLINV,BHLML,0)) D PAR Q
.. S BHL(BHLSEG,BHLML,BHLSEQ)=$G(INV(BHLINV,BHLML)) Q
Q
;
PAR ;-- break down array into lower level
S BHLPR=0 F S BHLPR=$O(INV(BHLINV,BHLML,BHLPR)) Q:'BHLPR D
. I $O(INV(BHLINV,BHLML,BHLPR,0)) D SUBPAR Q
. S BHL(BHLSEG,BHLML,BHLPR,BHLSEQ)=$G(INV(BHLINV,BHLML,BHLPR))
Q
;
SUBPAR ;-- break down the relationship to the next level
S BHLSPR=0 F S BHLSPR=$O(INV(BHLINV,BHLML,BHLPR,BHLSPR)) Q:'BHLSPR D
. S BHL(BHLSEG,BHLML,BHLPR,BHLSPR,BHLSEQ)=$G(INV(BHLINV,BHLML,BHLPR,BHLSPR))
Q
;
BHLFO ; cmi/flag/maw - BHL Get Inbound Filing Order ;
+1 ;;3.01;BHL IHS Interfaces with GIS;**12**;JUL 01, 2001
+2 ;
+3 ;
+4 ;this routine will look at the message and get the inbound filing
+5 ;order
+6 ;
MAIN ;-- this is the main routine driver
+1 DO FO
DO PRS
+2 QUIT
+3 ;
FO ;-- get the inbound filing order
+1 SET BHLCNT=0
+2 SET BHLMDA=0
FOR
SET BHLMDA=$ORDER(^INTHL7M(BHLMIEN,1,"AS",BHLMDA))
IF 'BHLMDA
QUIT
Begin DoDot:1
+3 SET BHLMFN=$ORDER(^INTHL7M(BHLMIEN,1,"AS",BHLMDA,0))
+4 SET BHLSEG=$PIECE($GET(^INTHL7S(+$PIECE($GET(^INTHL7M(BHLMIEN,1,BHLMFN,0)),U),0)),U,2)
+5 SET BHLCNT=BHLCNT+1
+6 SET BHLFO(BHLCNT)=BHLSEG
End DoDot:1
+7 QUIT
+8 ;
PRS ;-- reparse INV for filer
+1 SET BHLINV=0
FOR
SET BHLINV=$ORDER(INV(BHLINV))
IF BHLINV=""
QUIT
Begin DoDot:1
+2 SET BHLSEG=$EXTRACT(BHLINV,1,3)
+3 SET BHLSEQ=+$EXTRACT(BHLINV,4,6)
+4 SET BHLML=$ORDER(INV(BHLINV,0))
+5 IF BHLML=""
SET BHL(BHLSEG,1,BHLSEQ)=$GET(INV(BHLINV))
QUIT
+6 SET BHLML=0
FOR
SET BHLML=$ORDER(INV(BHLINV,BHLML))
IF 'BHLML
QUIT
Begin DoDot:2
+7 IF $ORDER(INV(BHLINV,BHLML,0))
DO PAR
QUIT
+8 SET BHL(BHLSEG,BHLML,BHLSEQ)=$GET(INV(BHLINV,BHLML))
QUIT
End DoDot:2
End DoDot:1
+9 QUIT
+10 ;
PAR ;-- break down array into lower level
+1 SET BHLPR=0
FOR
SET BHLPR=$ORDER(INV(BHLINV,BHLML,BHLPR))
IF 'BHLPR
QUIT
Begin DoDot:1
+2 IF $ORDER(INV(BHLINV,BHLML,BHLPR,0))
DO SUBPAR
QUIT
+3 SET BHL(BHLSEG,BHLML,BHLPR,BHLSEQ)=$GET(INV(BHLINV,BHLML,BHLPR))
End DoDot:1
+4 QUIT
+5 ;
SUBPAR ;-- break down the relationship to the next level
+1 SET BHLSPR=0
FOR
SET BHLSPR=$ORDER(INV(BHLINV,BHLML,BHLPR,BHLSPR))
IF 'BHLSPR
QUIT
Begin DoDot:1
+2 SET BHL(BHLSEG,BHLML,BHLPR,BHLSPR,BHLSEQ)=$GET(INV(BHLINV,BHLML,BHLPR,BHLSPR))
End DoDot:1
+3 QUIT
+4 ;