[613] | 1 | HLERCHK ;SFCIOFO/JC - Interface Debugger ;02/25/2004 14:25
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**57,96,108**;Oct 13, 1995
|
---|
| 3 | ;This routine requires the following to work:
|
---|
| 4 | ;EVENT DRIVER PROTOCOL TYPE
|
---|
| 5 | ;It will report inconsistencies with the event driver, susbscribers,
|
---|
| 6 | ;applications and logical links (if defined)
|
---|
| 7 | W !,"This routine searches for HL7 protocols with possible errors."
|
---|
| 8 | S DIR(0)="FAOU"
|
---|
| 9 | S DIR("A")="Select an EVENT DRIVER Protocol: "
|
---|
| 10 | S DIR("B")="All"
|
---|
| 11 | S DIR("?")="^D DICQ^HLERCHK"
|
---|
| 12 | D ^DIR
|
---|
| 13 | K DIC,DA,DR I Y="All" S HLANS=0 G ASKDEV
|
---|
| 14 | S X=Y S DIC="^ORD(101,",DIC(0)="EMQZ"
|
---|
| 15 | S DIC("S")="I $P(^(0),U,4)=""E"""
|
---|
| 16 | D ^DIC
|
---|
| 17 | Q:$D(DTOUT)!($D(DUOUT))
|
---|
| 18 | Q:+Y=-1
|
---|
| 19 | S HLANS=+Y
|
---|
| 20 | ASKDEV ;
|
---|
| 21 | S %ZIS="MQ"
|
---|
| 22 | D ^%ZIS
|
---|
| 23 | G:POP EXIT
|
---|
| 24 | I $D(IO("Q")) D G EXIT
|
---|
| 25 | .S ZTDESC="HL7 Interface Debugger",ZTRTN="EN^HLERCHK",ZTSAVE("*")=""
|
---|
| 26 | .S ZTDTH=$H D ^%ZTLOAD
|
---|
| 27 | .D HOME^%ZIS
|
---|
| 28 | .W !,$S($D(ZTSK):"Queued to task number: "_ZTSK,1:"NOT QUEUED")
|
---|
| 29 | EN ;
|
---|
| 30 | U IO
|
---|
| 31 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
| 32 | W !," ** HL7 INTERFACE DEBUGGER **"
|
---|
| 33 | S HL57=0 I $D(^ORD(101,"AHL21")) S HL57=1
|
---|
| 34 | ;patch HL*1.6*96 start: add application ack for HL7 v2.4, and others.
|
---|
| 35 | S HLACK="ACK,ADR,ARD,EDR,ERP,MCF,MFK,MFR,ORF,ORG,ORR,OSR,RAR,RCI,RCL,"
|
---|
| 36 | S HLACK=HLACK_"RDR,RDY,RER,RGR,ROR,RRA,RRD,RRE,RRG,RRI,RSP,RTB,SQR,"
|
---|
| 37 | S HLACK=HLACK_"TBR,VXR,VXX"
|
---|
| 38 | ;patch HL*1.6*96 end
|
---|
| 39 | ;patch HL*1.6*108 start: add application ack for HL7 v2.5.
|
---|
| 40 | S HLACK=HLACK_",BRP,BRT,ORB,ORI"
|
---|
| 41 | ;patch HL*1.6*108 end
|
---|
| 42 | I 'HLANS S HLPIEN=0 F S HLPIEN=$O(^ORD(101,HLPIEN)) Q:HLPIEN<1 D
|
---|
| 43 | .Q:$P(^ORD(101,HLPIEN,0),U,4)'="E"
|
---|
| 44 | .D CHKED(HLPIEN)
|
---|
| 45 | I +HLANS D CHKED(+HLANS)
|
---|
| 46 | D EXIT
|
---|
| 47 | Q
|
---|
| 48 | DICQ ;
|
---|
| 49 | N X,Y,DIC
|
---|
| 50 | S X="??"
|
---|
| 51 | S DIC="^ORD(101,",DIC(0)="EQ"
|
---|
| 52 | S DIC("S")="I $P(^(0),U,4)=""E"""
|
---|
| 53 | D ^DIC
|
---|
| 54 | Q
|
---|
| 55 | CHKED(PP) ;Check Event Driver Protocols
|
---|
| 56 | K ERR,HLPN,HL770,HLVSP,HLVSN,HLSAPP,HLSAPN,HLMTPP,HLMTPN,HLETPP,HLETPN S ERR=0
|
---|
| 57 | S HLPN=$P($G(^ORD(101,PP,0)),U)
|
---|
| 58 | I HLPN="" S ERR=ERR+1,ERR(ERR)="Protocol is UNDEFINED." Q
|
---|
| 59 | I $P(^ORD(101,PP,0),U,3)]"" S ERR=ERR+1,ERR(ERR)="**PROTOCOL DISABLED**" Q
|
---|
| 60 | S HL770=$G(^ORD(101,PP,770))
|
---|
| 61 | I HL770="" S ERR=ERR+1,ERR(ERR)="Missing data for all key fields." Q
|
---|
| 62 | VSN ;Version
|
---|
| 63 | S HLVSP=$P(HL770,U,10)
|
---|
| 64 | I HLVSP<1 S ERR=ERR+1,ERR(ERR)="Version ID is required."
|
---|
| 65 | S HLVSN="" I HLVSP S HLVSN=$P($G(^HL(771.5,HLVSP,0)),U)
|
---|
| 66 | APP ;Sending App
|
---|
| 67 | S HLSAPP=$P(HL770,U),HLSAPN=""
|
---|
| 68 | I 'HLSAPP S ERR=ERR+1,ERR(ERR)="Missing Required Sending Application."
|
---|
| 69 | I HLSAPP S HLSAPN=$P($G(^HL(771,HLSAPP,0)),U)
|
---|
| 70 | I HLSAPP,HLSAPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to App Param (file 771)."
|
---|
| 71 | I HLSAPP D CHKAPP(HLSAPP)
|
---|
| 72 | MT ;Message Type
|
---|
| 73 | S HLMTPP=$P(HL770,U,3),HLMTPN=""
|
---|
| 74 | I 'HLMTPP S ERR=ERR+1,ERR(ERR)="Missing required Message Type."
|
---|
| 75 | I HLMTPP S HLMTPN=$P($G(^HL(771.2,HLMTPP,0)),U)
|
---|
| 76 | I HLMTPP,HLMTPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to Msg Type (file 771.2)."
|
---|
| 77 | I HLMTPN]"",HLACK[HLMTPN S ERR=ERR+1,ERR(ERR)="For Event Driver-Message Type cannot be an acknowledgement."
|
---|
| 78 | ET ;Event Type
|
---|
| 79 | S HLETPP=$P(HL770,U,4),HLETPN=""
|
---|
| 80 | S HLETPN="" I HLETPP S HLETPN=$P($G(^HL(779.001,HLETPP,0)),U)
|
---|
| 81 | I HLETPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to Event Type (file 779.001)."
|
---|
| 82 | I 'HLETPP,$G(HLVSN)>2.1 S ERR=ERR+1,ERR(ERR)="Event type is required for versions greater than 2.1."
|
---|
| 83 | OUT1 S $P(LINE,"_",75)=""
|
---|
| 84 | W !,LINE
|
---|
| 85 | W !,"Event Driver: ",HLPN
|
---|
| 86 | W !!,"Sending Application: ",HLSAPN
|
---|
| 87 | W !,"Version: ",$G(HLVSN)," ","Message Type(770.3): ",$G(HLMTPN)," ","Event Type: ",$G(HLETPN)
|
---|
| 88 | W !!,"Event Driver Error Summary:",!
|
---|
| 89 | I $G(ERR)<1 W !,"No Event Driver Errors Found."
|
---|
| 90 | I $G(ERR) S N=0 F S N=$O(ERR(N)) Q:N<1 W !,N,". ",ERR(N)
|
---|
| 91 | SUB ;Check Subscribers
|
---|
| 92 | S HL770=$G(^ORD(101,PP,770))
|
---|
| 93 | I HL770="" S ERR=ERR+1,ERR(ERR)="Missing data for all key fields." Q
|
---|
| 94 | S HLNODE="^ORD(101,PP,10)"
|
---|
| 95 | I HL57 S HLNODE="^ORD(101,PP,775)"
|
---|
| 96 | I '$D(@HLNODE) W !,"No Subscribers Found."
|
---|
| 97 | S HLX=0 F S HLX=$O(@HLNODE@(HLX)) Q:HLX<1 S HLSUBP=$P(@HLNODE@(HLX,0),U) D CHKSUB(HLSUBP)
|
---|
| 98 | Q
|
---|
| 99 | CHKSUB(PP) ;Scan Subscribers
|
---|
| 100 | K ERR,HLPN,HL770,HLVSP,HLVSN,HLRAPP,HLRAPN,HLMTPP,HLMTPN,HLETPP,HLETPN S ERR=0
|
---|
| 101 | S HLPN=$P($G(^ORD(101,PP,0)),U)
|
---|
| 102 | I HLPN="" S ERR=ERR+1,ERR(ERR)="Subscriber Protocol is UNDEFINED." Q
|
---|
| 103 | I $P(^ORD(101,PP,0),U,3)]"" S ERR=ERR+1,ERR(ERR)="**SUBSCRIBER PROTOCOL DISABLED**" Q
|
---|
| 104 | S HL770=$G(^ORD(101,PP,770))
|
---|
| 105 | I HL770="" S ERR=ERR+1,ERR(ERR)="Missing data for all key fields." Q
|
---|
| 106 | S HLRAPP=$P(HL770,U,2),HLRAPN=""
|
---|
| 107 | I 'HLRAPP S ERR=ERR+1,ERR(ERR)="Missing Required Receiving Application."
|
---|
| 108 | I HLRAPP S HLRAPN=$P($G(^HL(771,HLRAPP,0)),U)
|
---|
| 109 | I HLRAPP,HLRAPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to App Param (file 771)."
|
---|
| 110 | I HLRAPP D CHKAPP(HLRAPP)
|
---|
| 111 | S HLMTPN="",HLMTPP=$P(HL770,U,11) I HLMTPP D ;Response Message Type
|
---|
| 112 | .I HLMTPP S HLMTPN=$P($G(^HL(771.2,HLMTPP,0)),U)
|
---|
| 113 | .I HLMTPP,HLMTPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to Msg Type (file 771.2)."
|
---|
| 114 | .I HLMTPN]"",HLACK'[HLMTPN S ERR=ERR+1,ERR(ERR)="Message Type must be an appropriate response/acknowledgement."
|
---|
| 115 | S HLETPP=$P(HL770,U,4),HLETPN=""
|
---|
| 116 | I HLETPP S HLETPN=$P($G(^HL(779.001,HLETPP,0)),U)
|
---|
| 117 | I HLETPP,HLETPN="" S ERR=ERR+1,ERR(ERR)="Broken pointer to Event Type (file 779.001)."
|
---|
| 118 | I $G(^ORD(101,PP,774))=""&($G(^ORD(101,PP,771)))="" S ERR=ERR+1,ERR(ERR)="Missing Processing Routine and Routing Logic."
|
---|
| 119 | I $G(^ORD(101,PP,774))=""&($P(HL770,U,7))="" S ERR=ERR+1,ERR(ERR)="WARNING-Missing both Logical Link and Routing Logic. Will be local only."
|
---|
| 120 | OUT2 ;Print Subscriber Errors
|
---|
| 121 | S $P(STAR,"*",40)=""
|
---|
| 122 | W !,?10,STAR
|
---|
| 123 | W !,?10,"For Subscriber: ",$G(HLPN)
|
---|
| 124 | W !!,?10,"Receiving Application: ",$G(HLRAPN)
|
---|
| 125 | W !,?10,"Message Type (770.11): ",$G(HLMTPN)," ","Event Type: ",$G(HLETPN),!
|
---|
| 126 | I 'ERR W !,?10,"No Subscriber Errors Found."
|
---|
| 127 | F ERR=1:1:ERR W !,?10,ERR,". ",ERR(ERR)
|
---|
| 128 | Q
|
---|
| 129 | CHKAPP(APP) ;Check Application parameters
|
---|
| 130 | Q:'$D(^HL(771,APP))
|
---|
| 131 | I $P(^HL(771,APP,0),U,2)="I" S ERR=ERR+1,ERR(ERR)="Application is INACTIVE."
|
---|
| 132 | Q
|
---|
| 133 | EXIT ;
|
---|
| 134 | K ZTSK,HL57,HL770,HLACK,HLETPN,HLETPP,HLMTPN,HLMTPP,HLNODE,HLPIEN,HLPN,HLRAPP,HLSAPN,HLSAPP,HLSUBP,HLVSN,HLVSP,HLX,LINE,STAR,SAPP,ERR
|
---|
| 135 | Q
|
---|