MHV7RU ;WAS/GPM - HL7 RECEIVER UTILITIES ; [12/13/07 10:26pm] ;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22 ;;Per VHA Directive 2004-038, this routine should not be modified. ; Q ; VALIDDT(DT) ; Validate and convert date ; ; Integration Agreements: ; 10103 : HL7TFM^XLFDT ; I DT="" Q 1 I DT'?8.16N Q 0 S DT=$$HL7TFM^XLFDT(DT)\1 I DT'?7N Q 0 Q 1 ; VALRTYPE(TYPE,REQ,ERR) ; Validate request type ; ; Input: ; TYPE - Request type string ; ; Output: ; REQ - Request parameter array ; REQ("TYPE") ; REQ("REQNAME") ; REQ("BLOCKED") ; REQ("REALTIME") ; REQ("EXECUTE") ; REQ("BUILDER") ; ; ERR - Caret delimited error string ; segment^sequence^field^code^ACK type^error text ; N REQTIEN,REQT0 S REQTIEN=$O(^MHV(2275.3,"D",TYPE,0)) I 'REQTIEN S ERR="103^AE^Request Type Not Found" Q 0 S REQT0=$G(^MHV(2275.3,REQTIEN,0)) ; S REQ("REQNAME")=$P(REQT0,"^",1) S REQ("TYPE")=$P(REQT0,"^",2) S REQ("BLOCKED")=$P(REQT0,"^",3) S REQ("REALTIME")=$P(REQT0,"^",4) S REQ("EXECUTE")=$TR($P(REQT0,"^",5),"~","^") S REQ("BUILDER")=$TR($P(REQT0,"^",6),"~","^") Q 1 ; VALIDID(ICN,DFN,SSN,ERR) ;Validate patient identifiers ; Will accept ICN, SSN, or DFN, but must have at least one. ; Validate one, in order of preference: ICN, SSN, DFN. ; If more than once sent, all must resolve to the same patient. ; Those not sent will be resolved and returned. ; ; Integration Agreements: ; 2701 : GETDFN^MPIF001, GETICN^MPIF001 ; 10035 : Direct reference of ^DPT(DFN,0);9 ; and reference of ^DPT("SSN") x-ref ; ; Input: ; ICN, DFN, SSN - Identifiers ; ; Output: Function value True if IDs are valid, False otherwise ; ICN, DFN, SSN - Identifiers ; ERR - Caret delimited error string ; segment^sequence^field^code^ACK type^error text ; N XSSN,XDFN S ERR="" I ICN="",SSN="",DFN="" S ERR="101^AE^Missing Patient ID" Q 0 ; I ICN'="" D Q:ERR'="" 0 Q 1 . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG") . I ICN'?9.10N1"V"6N S ERR="102^AE^Invalid ICN" Q . S XDFN=$$GETDFN^MPIF001(+ICN) . I XDFN<1 S ERR="204^AR^Patient Not Found" Q . I '$D(^DPT(XDFN,0)) S ERR="204^AR^Patient Not Found" Q . S XSSN=$P($G(^DPT(XDFN,0)),"^",9) . I SSN'="" D Q:ERR'="" .. I SSN'?9N S ERR="102^AE^Invalid SSN" Q .. I SSN'=XSSN S ERR="204^AE^Patient SSN Mismatch" Q .. Q . I DFN'="" D Q:ERR'="" .. I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q .. I DFN<1 S ERR="102^AE^Invalid DFN" Q .. I DFN'=XDFN S ERR="204^AE^Patient DFN Mismatch" Q .. Q . S DFN=XDFN,SSN=XSSN . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG") . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG") . Q ; I SSN'="" D Q:ERR'="" 0 Q 1 . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG") . I SSN'?9N S ERR="102^AE^Invalid SSN" Q . S XDFN=$O(^DPT("SSN",SSN,"")) . I XDFN<1 S ERR="204^AR^Patient Not Found" Q . I '$D(^DPT(XDFN,0)) S ERR="204^AR^Patient Not Found" Q . S ICN=$$GETICN^MPIF001(XDFN) . I ICN<1 S ICN="" . I DFN'="" D Q:ERR'="" .. I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q .. I DFN<1 S ERR="102^AE^Invalid DFN" Q .. I DFN'=XDFN S ERR="204^AE^Patient DFN Mismatch" Q .. Q . S DFN=XDFN . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG") . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG") . Q ; I DFN'="" D Q:ERR'="" 0 Q 1 . D LOG^MHVUL2("VALIDID","DFN="_DFN,"S","DEBUG") . I DFN'?1N.N S ERR="102^AE^Invalid DFN" Q . I DFN<1 S ERR="102^AE^Invalid DFN" Q . I '$D(^DPT(DFN,0)) S ERR="204^AR^Patient Not Found" Q . S ICN=$$GETICN^MPIF001(DFN) . I ICN<1 S ICN="" . S SSN=$P($G(^DPT(DFN,0)),"^",9) . D LOG^MHVUL2("VALIDID","ICN="_ICN,"S","DEBUG") . D LOG^MHVUL2("VALIDID","SSN="_SSN,"S","DEBUG") . Q ; S ERR="101^AE^Missing Patient ID" Q 0 ;