| 1 | HLUTIL3 ;ALB/MTC - VARIOUS HL7 UTILITIES ;11/19/2003  15:37
 | 
|---|
| 2 |  ;;1.6;HEALTH LEVEL SEVEN;**2,41,109**;Oct 13, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | FNDSTAT(IEN) ;- This function will return the appropriate status based
 | 
|---|
| 7 |  ; on the Accept Ack, Application Ack and version of the protocol
 | 
|---|
| 8 |  ; being utilized.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; INPUT : IEN of the HL7 Message File (#772)
 | 
|---|
| 11 |  ; OUTPUT: Pointer to HL7 Message Status File (#771.6) OR NULL if
 | 
|---|
| 12 |  ;         Not valid IEN or No parent.
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  N PROTOCOL,PARENTP,PARENT,PROT
 | 
|---|
| 15 |  N CHILD,RESULT
 | 
|---|
| 16 |  N HLCA,HLAA
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  S RESULT=""
 | 
|---|
| 19 |  G:'IEN EXIT
 | 
|---|
| 20 |  ;--  Find Parent
 | 
|---|
| 21 |  S CHILD=$G(^HL(772,IEN,0))
 | 
|---|
| 22 |  I CHILD="" G EXIT
 | 
|---|
| 23 |  S PARENTP=$P(CHILD,"^",8)
 | 
|---|
| 24 |  I (PARENTP="") G EXIT
 | 
|---|
| 25 |  S PARENT=$G(^HL(772,PARENTP,0))
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  S PROT=$P(PARENT,"^",10)
 | 
|---|
| 28 |  S PROTOCOL=$$TYPE^HLUTIL2(PROT)
 | 
|---|
| 29 |  S HLCA=$P(PROTOCOL,U,7)
 | 
|---|
| 30 |  S HLAA=$P(PROTOCOL,U,8)
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ;-- if this is a responce (ack) message set to "sucessful"
 | 
|---|
| 33 |  I $P(PARENT,U,7) S RESULT=3 G EXIT
 | 
|---|
| 34 |  ;-- HLCA and HLAA assume original ack rules set to "awaiting ack"
 | 
|---|
| 35 |  I HLCA="",HLAA="" S RESULT=2 G EXIT
 | 
|---|
| 36 |  ;-- if HLCA=NE and HLAA=NE set to "sucessful"
 | 
|---|
| 37 |  I HLCA="NE",HLAA="NE" S RESULT=3 G EXIT
 | 
|---|
| 38 |  ;-- else set to "awaiting ack"
 | 
|---|
| 39 |  S RESULT=2
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | EXIT ;
 | 
|---|
| 42 |  Q RESULT
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | DOMAIL(HLLINK) ; This function will determine if the MailMan LLP should
 | 
|---|
| 45 |  ; be used to x-mit the outgoing message.
 | 
|---|
| 46 |  ;  INPUT  - IEN of HL LOGICAL LINK (#870)
 | 
|---|
| 47 |  ;  OUTPUT - 1=Yes, 0=N
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  N X
 | 
|---|
| 50 |  S X=$P($G(^HLCS(870,+HLLINK,0)),U,22)
 | 
|---|
| 51 |  Q $S(X:1,1:0)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | LINK(HLINST,HLI,HLFLG) ;Return Logical Link(s) from Institution or Domain
 | 
|---|
| 54 |  ; INPUT - HLINST=Institution name or VISN name or ien
 | 
|---|
| 55 |  ;                If HLFLG="I", institution number is passed
 | 
|---|
| 56 |  ;                If HLFLG="D", HLINST=DOMAIN name or DOMAIN ien
 | 
|---|
| 57 |  ; If HLFLG="", Institution name or ien is assumed
 | 
|---|
| 58 |  ; OUTPUT - HLI(LINK IEN)=LINK NAME passed by reference
 | 
|---|
| 59 |  S HLFLG=$G(HLFLG)
 | 
|---|
| 60 |  Q:$G(HLINST)']""
 | 
|---|
| 61 |  N HLP S HLI=0
 | 
|---|
| 62 |  ;Domain passed
 | 
|---|
| 63 |  I HLFLG="D" D DOM Q
 | 
|---|
| 64 |  ;Institution name or number
 | 
|---|
| 65 |  I HLFLG="I"!('HLINST) D
 | 
|---|
| 66 |  . ;patch HL*1.6*109
 | 
|---|
| 67 |  . N X ;to protect the variable from calling routine
 | 
|---|
| 68 |  . S DIC=4,DIC(0)="MXZ",X=HLINST D ^DIC S HLINST=+Y
 | 
|---|
| 69 |  . ;patch HL*1.6*109 end
 | 
|---|
| 70 |  Q:HLINST<1
 | 
|---|
| 71 |  ;pass institution ien
 | 
|---|
| 72 |  D CHILDREN^XUAF4("HLP","`"_HLINST) I $D(HLP) D  Q
 | 
|---|
| 73 |  .S HLINST=0 F  S HLINST=$O(HLP("C",HLINST)) Q:HLINST<1  D L1
 | 
|---|
| 74 | L1 F  S HLI=$O(^HLCS(870,"C",HLINST,HLI)) Q:HLI<1  D
 | 
|---|
| 75 |  .S HLI(HLI)=$P(^HLCS(870,HLI,0),"^")
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 | DOM ;Domain
 | 
|---|
| 78 |  ;patch HL*1.6*109 start
 | 
|---|
| 79 |  ;to protect the variable from calling routine
 | 
|---|
| 80 |  N X
 | 
|---|
| 81 |  I 'HLINST S DIC=4.2,DIC(0)="MXZ",X=HLINST D ^DIC S HLINST=+Y
 | 
|---|
| 82 |  ;patch HL*1.6*109 end
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  Q:HLINST<1
 | 
|---|
| 85 |  F  S HLI=$O(^HLCS(870,"D",HLINST,HLI)) Q:HLI<1  D
 | 
|---|
| 86 |  .S HLI(HLI)=$P(^HLCS(870,HLI,0),"^")
 | 
|---|
| 87 |  Q   ; patch HL*1.6*109: add "Q" to quit DOM
 | 
|---|