1 | MDHL7B ; HOIFO/WAA -Bi-directional interface routine ;7/23/01 11:41
|
---|
2 | ;;1.0;CLINICAL PROCEDURES;;Apr 01, 2004
|
---|
3 | ;
|
---|
4 | ; This routine will take an entry from 702 and submit that data
|
---|
5 | ; to the instrument that was indicated by the user
|
---|
6 | ; SUB is a submit function
|
---|
7 | ; MDD702 is the IEN for the Entry from 702 that
|
---|
8 | ; needs to be sent.
|
---|
9 | ; The function will return -1^Submission failed and why
|
---|
10 | ; 0^Device not Bi-Directional
|
---|
11 | ; 1^Study submitted
|
---|
12 | TMPSUB(MDD702) ; Process a submitted entry from user.
|
---|
13 | ; drp 16-JUL-2002 13:30:32
|
---|
14 | N DEVICE
|
---|
15 | S DEVICE=+$P(^MDD(702,MDD702,0),U,11) Q:'DEVICE "0^No Device - TEST"
|
---|
16 | I +$P($G(^MDS(702.09,DEVICE,.1)),U,3) Q "1^Study Submitted - TEST"
|
---|
17 | Q "0^No Bi Di Cap - TEST"
|
---|
18 | ;
|
---|
19 | SUB(MDD702) ; Change to SUB when working
|
---|
20 | N MDORFLG,RESULT,MSG,MDERROR
|
---|
21 | S MDORFLG=1
|
---|
22 | D EN1
|
---|
23 | Q RESULT_U_MSG
|
---|
24 | ;
|
---|
25 | CANCEL(MDD702) ; Cancel Orders
|
---|
26 | N MDORFLG,RESULT,MSG,MDERROR
|
---|
27 | S MDORFLG=0
|
---|
28 | D EN1
|
---|
29 | Q RESULT_U_MSG
|
---|
30 | ;
|
---|
31 | EN1 ; The main entry point for the order to be processed.
|
---|
32 | N DEVIEN,WORKING,MDIORD
|
---|
33 | ; Get the device that will process this study
|
---|
34 | ; Build an HL7 Message based in the device.
|
---|
35 | ; After the device has processed the message this routine will
|
---|
36 | ; update the status with in 702.
|
---|
37 | S RESULT=1,MSG=$S(MDORFLG=1:"Study Submitted.",1:"Study Cancelled")
|
---|
38 | I '$D(^MDD(702,MDD702,0)) S MSG="There is no study in 702 for entry "_MDD702_".",RESULT=-1
|
---|
39 | I RESULT'=-1 D ;Get the device based on the CP def
|
---|
40 | . S DEF=$P(^MDD(702,MDD702,0),U,4) I DEF<1 S RESULT=-1,MSG="No CP DEFINITION for this entry in file 702.01."
|
---|
41 | . Q
|
---|
42 | I RESULT'=-1 D ; Check to see that there is a device entered for this procedure
|
---|
43 | . S DEVIEN=$P(^MDD(702,MDD702,0),U,11) I DEVIEN>0 Q
|
---|
44 | . S RESULT=0,MSG="No DEVICE is defined." Q
|
---|
45 | . Q
|
---|
46 | ;
|
---|
47 | ; DRP/16-MAY-2003 14:44:36 - Check for Loopback IP
|
---|
48 | I $$GET1^DIQ(702.09,DEVIEN_",",.14)="127.0.0.1" D Q
|
---|
49 | . D LOOPBACK^MDHL7XXX(MDD702,DEVIEN)
|
---|
50 | . S RESULT=+$$GET1^DIQ(702.09,DEVIEN_",",.13,"I"),MSG="OK"
|
---|
51 | . Q
|
---|
52 | ;
|
---|
53 | I RESULT>0 D ; Check to see that the device is a active and working
|
---|
54 | . S WORKING="" D INST^MDHL7U2(DEVIEN,.WORKING)
|
---|
55 | . Q:WORKING
|
---|
56 | . S RESULT=-1,MSG="There is a problem with the device entry in file 702.09."
|
---|
57 | . Q
|
---|
58 | I RESULT>0 D ; Check to see if the device is bi-directional
|
---|
59 | . N LINE
|
---|
60 | . S LINE=$G(^MDS(702.09,DEVIEN,.1))
|
---|
61 | . I $P(LINE,U,3)'=1 D Q ; The Device is not Bi-Directional
|
---|
62 | . . S RESULT=0,MSG="Device not Bi-Directional."
|
---|
63 | . . Q
|
---|
64 | . ; The device is Bi-Directional and we are getting an MDIORD number.
|
---|
65 | . S MDIORD=$$GETIORD^MDRPCOT1(MDD702) I MDIORD=-1 D
|
---|
66 | . . S RESULT=-1,MSG="Unable to create Instrument Order Number."
|
---|
67 | . . Q
|
---|
68 | . Q
|
---|
69 | I RESULT=1 D ; Process the message to be sent
|
---|
70 | . D EN1^MDHL7BH ; Build HL7 Message
|
---|
71 | . I $P(MDERROR,U,2) S RESULT="-1",MSG=$P(MDERROR,U,3)
|
---|
72 | . Q
|
---|
73 | Q
|
---|