94 lines
2.6 KiB
Mathematica
94 lines
2.6 KiB
Mathematica
MHV7RUS ;WAS/GPM - HL7 RECEIVER UTILITIES - SEGMENT ; [12/8/07 6:18pm]
|
|
;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22
|
|
;;Per VHA Directive 2004-038, this routine should not be modified.
|
|
;
|
|
; Segment validators common to multiple messages.
|
|
; Message receivers with message specific segments will contain
|
|
; those message specific segment builders. Examples would be the
|
|
; QRD/QRF for QRY^R02 message, or the ORC/RXE for OMP^O09.
|
|
;
|
|
Q
|
|
;
|
|
VALIDPID(PID,REQ,ERR) ; Validate PID segment
|
|
;
|
|
; Input:
|
|
; PID - PID array containing parsed PID segment
|
|
;
|
|
; Output:
|
|
; REQ - Request parameter array
|
|
; REQ("ICN")
|
|
; REQ("DFN")
|
|
; REQ("SSN")
|
|
; ERR - Caret delimited error string
|
|
; segment^sequence^field^code^ACK type^error text
|
|
;
|
|
N ICN,DFN,SSN,ID,TYPE,FAMILY,GIVEN,MIDDLE,SUFFIX,I
|
|
S ICN="",DFN="",SSN=""
|
|
F I=1:1:3 Q:'$D(PID(3,I)) D Q:ERR'=""
|
|
. S ID=$G(PID(3,I,1))
|
|
. S TYPE=$G(PID(3,I,5))
|
|
. I ID="" S ERR="PID^1^3^101^AE^Missing Patient ID" Q
|
|
. I TYPE="" S ERR="PID^1^3^101^AE^Missing Patient ID Type" Q
|
|
. I TYPE="NI" S ICN=ID
|
|
. I TYPE="PI" S DFN=ID
|
|
. I TYPE="SS" S SSN=ID
|
|
. Q
|
|
Q:ERR'="" 0
|
|
;
|
|
S FAMILY=$G(PID(5,1,1))
|
|
S GIVEN=$G(PID(5,1,2))
|
|
S MIDDLE=$G(PID(5,1,3))
|
|
S SUFFIX=$G(PID(5,1,4))
|
|
;
|
|
I '$$VALIDID^MHV7RU(.ICN,.DFN,.SSN,.ERR) S ERR="PID^1^3^"_ERR Q 0
|
|
;
|
|
; Name components required by HL7 but not used by MHV
|
|
;I FAMILY="" S ERR="PID^1^5^101^AE^Missing Patient Family Name" Q 0
|
|
;I GIVEN="" S ERR="PID^1^5^101^AE^Missing Patient Given Name" Q 0
|
|
;
|
|
S REQ("ICN")=ICN
|
|
S REQ("DFN")=DFN
|
|
S REQ("SSN")=SSN
|
|
Q 1
|
|
;
|
|
VALIDWHO(QRD,REQ,ERR) ; Validate Who subject filter in QRD segments
|
|
;
|
|
; Input:
|
|
; QRD - QRD array containing parsed QRD segment
|
|
;
|
|
; Output:
|
|
; REQ - Request parameter array
|
|
; REQ("ICN")
|
|
; REQ("DFN")
|
|
; REQ("SSN")
|
|
; ERR - Caret delimited error string
|
|
; segment^sequence^field^code^ACK type^error text
|
|
;
|
|
N ICN,DFN,SSN,ID,TYPE,FAMILY,GIVEN,MIDDLE,SUFFIX,I
|
|
S ICN="",DFN="",SSN=""
|
|
F I=1:1:3 Q:'$D(QRD(8,I)) D Q:ERR'=""
|
|
. S ID=$G(QRD(8,I,1))
|
|
. S FAMILY=$G(QRD(8,I,2))
|
|
. S GIVEN=$G(QRD(8,I,3))
|
|
. S MIDDLE=$G(QRD(8,I,4))
|
|
. S SUFFIX=$G(QRD(8,I,5))
|
|
. S TYPE=$G(QRD(8,I,13))
|
|
. I ID="" S ERR="QRD^1^8^101^AE^Missing ID number" Q
|
|
. I TYPE="" S ERR="QRD^1^8^101^AE^Missing identifier type code" Q
|
|
. I TYPE="NI" S ICN=ID
|
|
. I TYPE="PI" S DFN=ID
|
|
. I TYPE="SS" S SSN=ID
|
|
. Q
|
|
Q:ERR'="" 0
|
|
;
|
|
I '$$VALIDID^MHV7RU(.ICN,.DFN,.SSN,.ERR) S ERR="QRD^1^8^"_ERR Q 0
|
|
;
|
|
;I FAMILY="" S ERR="QRD^1^8^101^AE^Missing Patient Family Name" Q 0
|
|
;I GIVEN="" S ERR="QRD^1^8^101^AE^Missing Patient Given Name" Q 0
|
|
;
|
|
S REQ("ICN")=ICN
|
|
S REQ("DFN")=DFN
|
|
S REQ("SSN")=SSN
|
|
Q 1
|
|
;
|