[613] | 1 | MHV7RU ;WAS/GPM - HL7 RECEIVER UTILITIES ; [12/13/07 10:26pm]
|
---|
| 2 | ;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | Q
|
---|
| 6 | ;
|
---|
| 7 | VALIDDT(DT) ; Validate and convert date
|
---|
| 8 | ;
|
---|
| 9 | ; Integration Agreements:
|
---|
| 10 | ; 10103 : HL7TFM^XLFDT
|
---|
| 11 | ;
|
---|
| 12 | I DT="" Q 1
|
---|
| 13 | I DT'?8.16N Q 0
|
---|
| 14 | S DT=$$HL7TFM^XLFDT(DT)\1
|
---|
| 15 | I DT'?7N Q 0
|
---|
| 16 | Q 1
|
---|
| 17 | ;
|
---|
| 18 | VALRTYPE(TYPE,REQ,ERR) ; Validate request type
|
---|
| 19 | ;
|
---|
| 20 | ; Input:
|
---|
| 21 | ; TYPE - Request type string
|
---|
| 22 | ;
|
---|
| 23 | ; Output:
|
---|
| 24 | ; REQ - Request parameter array
|
---|
| 25 | ; REQ("TYPE")
|
---|
| 26 | ; REQ("REQNAME")
|
---|
| 27 | ; REQ("BLOCKED")
|
---|
| 28 | ; REQ("REALTIME")
|
---|
| 29 | ; REQ("EXECUTE")
|
---|
| 30 | ; REQ("BUILDER")
|
---|
| 31 | ;
|
---|
| 32 | ; ERR - Caret delimited error string
|
---|
| 33 | ; segment^sequence^field^code^ACK type^error text
|
---|
| 34 | ;
|
---|
| 35 | N REQTIEN,REQT0
|
---|
| 36 | S REQTIEN=$O(^MHV(2275.3,"D",TYPE,0))
|
---|
| 37 | I 'REQTIEN S ERR="103^AE^Request Type Not Found" Q 0
|
---|
| 38 | S REQT0=$G(^MHV(2275.3,REQTIEN,0))
|
---|
| 39 | ;
|
---|
| 40 | S REQ("REQNAME")=$P(REQT0,"^",1)
|
---|
| 41 | S REQ("TYPE")=$P(REQT0,"^",2)
|
---|
| 42 | S REQ("BLOCKED")=$P(REQT0,"^",3)
|
---|
| 43 | S REQ("REALTIME")=$P(REQT0,"^",4)
|
---|
| 44 | S REQ("EXECUTE")=$TR($P(REQT0,"^",5),"~","^")
|
---|
| 45 | S REQ("BUILDER")=$TR($P(REQT0,"^",6),"~","^")
|
---|
| 46 | Q 1
|
---|
| 47 | ;
|
---|
| 48 | VALIDID(ICN,DFN,SSN,ERR) ;Validate patient identifiers
|
---|
| 49 | ; Will accept ICN, SSN, or DFN, but must have at least one.
|
---|
| 50 | ; Validate one, in order of preference: ICN, SSN, DFN.
|
---|
| 51 | ; If more than once sent, all must resolve to the same patient.
|
---|
| 52 | ; Those not sent will be resolved and returned.
|
---|
| 53 | ;
|
---|
| 54 | ; Integration Agreements:
|
---|
| 55 | ; 2701 : GETDFN^MPIF001, GETICN^MPIF001
|
---|
| 56 | ; 10035 : Direct reference of ^DPT(DFN,0);9
|
---|
| 57 | ; and reference of ^DPT("SSN") x-ref
|
---|
| 58 | ;
|
---|
| 59 | ; Input:
|
---|
| 60 | ; ICN, DFN, SSN - Identifiers
|
---|
| 61 | ;
|
---|
| 62 | ; Output: Function value True if IDs are valid, False otherwise
|
---|
| 63 | ; ICN, DFN, SSN - Identifiers
|
---|
| 64 | ; ERR - Caret delimited error string
|
---|
| 65 | ; segment^sequence^field^code^ACK type^error text
|
---|
| 66 | ;
|
---|
| 67 | N XSSN,XDFN
|
---|
| 68 | S ERR=""
|
---|
| 69 | I ICN="",SSN="",DFN="" S ERR="101^AE^Missing Patient ID" Q 0
|
---|
| 70 | ;
|
---|
| 71 | I ICN'="" D Q:ERR'="" 0 Q 1
|
---|
| 72 | . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG")
|
---|
| 73 | . I ICN'?9.10N1"V"6N S ERR="102^AE^Invalid ICN" Q
|
---|
| 74 | . S XDFN=$$GETDFN^MPIF001(+ICN)
|
---|
| 75 | . I XDFN<1 S ERR="204^AR^Patient Not Found" Q
|
---|
| 76 | . I '$D(^DPT(XDFN,0)) S ERR="204^AR^Patient Not Found" Q
|
---|
| 77 | . S XSSN=$P($G(^DPT(XDFN,0)),"^",9)
|
---|
| 78 | . I SSN'="" D Q:ERR'=""
|
---|
| 79 | .. I SSN'?9N S ERR="102^AE^Invalid SSN" Q
|
---|
| 80 | .. I SSN'=XSSN S ERR="204^AE^Patient SSN Mismatch" Q
|
---|
| 81 | .. Q
|
---|
| 82 | . I DFN'="" D Q:ERR'=""
|
---|
| 83 | .. I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q
|
---|
| 84 | .. I DFN<1 S ERR="102^AE^Invalid DFN" Q
|
---|
| 85 | .. I DFN'=XDFN S ERR="204^AE^Patient DFN Mismatch" Q
|
---|
| 86 | .. Q
|
---|
| 87 | . S DFN=XDFN,SSN=XSSN
|
---|
| 88 | . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG")
|
---|
| 89 | . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG")
|
---|
| 90 | . Q
|
---|
| 91 | ;
|
---|
| 92 | I SSN'="" D Q:ERR'="" 0 Q 1
|
---|
| 93 | . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG")
|
---|
| 94 | . I SSN'?9N S ERR="102^AE^Invalid SSN" Q
|
---|
| 95 | . S XDFN=$O(^DPT("SSN",SSN,""))
|
---|
| 96 | . I XDFN<1 S ERR="204^AR^Patient Not Found" Q
|
---|
| 97 | . I '$D(^DPT(XDFN,0)) S ERR="204^AR^Patient Not Found" Q
|
---|
| 98 | . S ICN=$$GETICN^MPIF001(XDFN)
|
---|
| 99 | . I ICN<1 S ICN=""
|
---|
| 100 | . I DFN'="" D Q:ERR'=""
|
---|
| 101 | .. I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q
|
---|
| 102 | .. I DFN<1 S ERR="102^AE^Invalid DFN" Q
|
---|
| 103 | .. I DFN'=XDFN S ERR="204^AE^Patient DFN Mismatch" Q
|
---|
| 104 | .. Q
|
---|
| 105 | . S DFN=XDFN
|
---|
| 106 | . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG")
|
---|
| 107 | . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG")
|
---|
| 108 | . Q
|
---|
| 109 | ;
|
---|
| 110 | I DFN'="" D Q:ERR'="" 0 Q 1
|
---|
| 111 | . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG")
|
---|
| 112 | . I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q
|
---|
| 113 | . I DFN<1 S ERR="102^AE^Invalid DFN" Q
|
---|
| 114 | . I '$D(^DPT(DFN,0)) S ERR="204^AR^Patient Not Found" Q
|
---|
| 115 | . S ICN=$$GETICN^MPIF001(DFN)
|
---|
| 116 | . I ICN<1 S ICN=""
|
---|
| 117 | . S SSN=$P($G(^DPT(DFN,0)),"^",9)
|
---|
| 118 | . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG")
|
---|
| 119 | . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG")
|
---|
| 120 | . Q
|
---|
| 121 | ;
|
---|
| 122 | S ERR="101^AE^Missing Patient ID"
|
---|
| 123 | Q 0
|
---|
| 124 | ;
|
---|