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