| 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 | 
|---|