1 | SCMSVZPD ;ALB/ESD,JLU HL7 ZPD Segment Validation ;05/08/95
|
---|
2 | ;;5.3;Scheduling;**44,66,142,459,472**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | EN(ZPDSEG,HLQ,HLFS,VALERR,ENCDT,NODE) ;
|
---|
6 | ; Entry point to return the HL7 ZPD (Patient Data) validation segment
|
---|
7 | ;
|
---|
8 | ; Input: ZPDSEG - ZPD Segment
|
---|
9 | ; HLQ - HL7 null variable
|
---|
10 | ; HLFS - HL7 field separator
|
---|
11 | ; VALERR - Contains the array in which to put the errors
|
---|
12 | ; ENCDT - The date/time of the encounter being processed
|
---|
13 | ; NODE - The zero node of the entry from the Outpatient
|
---|
14 | ; Encounter file.
|
---|
15 | ;
|
---|
16 | ; Output: 1 if ZPD passed validity check
|
---|
17 | ; Error message if ZPD failed validity check in form of:
|
---|
18 | ; -1^"xxx failed validity check" (xxx=element in ZPD segment)
|
---|
19 | ;
|
---|
20 | ;
|
---|
21 | N I,MSG,DATA,X,CNT,SEG,DSS,DFN,SEGLINE,OFFSET,ZPDSEGSV
|
---|
22 | S MSG="-1^element in ZPD segment failed validity check",CNT=1,SEG="ZPD"
|
---|
23 | S ZPDSEG=$G(ZPDSEG)
|
---|
24 | M ZPDSEGSV=ZPDSEG
|
---|
25 | D VALIDATE^SCMSVUT0(SEG,ZPDSEG,"0007",VALERR,.CNT)
|
---|
26 | I $D(@VALERR@(SEG)) G ENQ
|
---|
27 | ;
|
---|
28 | ;- Convert HLQ to null
|
---|
29 | S ZPDSEG=$$CONVERT^SCMSVUT0(ZPDSEG,HLFS,HLQ)
|
---|
30 | S I=0
|
---|
31 | F S I=$O(ZPDSEG(I)) Q:'I S ZPDSEG(I)=$$CONVERT^SCMSVUT0(ZPDSEG(I),HLFS,HLQ)
|
---|
32 | ;
|
---|
33 | ;Getting the DSS identifier to check for a LAB
|
---|
34 | S DSS=$P(NODE,U,3)
|
---|
35 | S DSS=$G(^DIC(40.7,DSS,0))
|
---|
36 | I DSS]"" S DSS=$P(DSS,U,2)
|
---|
37 | ;
|
---|
38 | ;Get pointer to PATIENT file
|
---|
39 | S DFN=$P(NODE,U,2)
|
---|
40 | ;
|
---|
41 | ;- Validate data elements
|
---|
42 | N NODE
|
---|
43 | S OFFSET=0,NODE=0,SEGLINE=ZPDSEG
|
---|
44 | F I=1,1010,1011,1012,17,18,19,21,41 D
|
---|
45 | . I $L(SEGLINE,HLFS)<($E(I,1,2)-OFFSET) D
|
---|
46 | . . ;Segment wrapped
|
---|
47 | . . S OFFSET=OFFSET+$L(SEGLINE,HLFS)-1
|
---|
48 | . . S NODE=+$O(ZPDSEG(NODE))
|
---|
49 | . . I NODE=0 S SEGLINE="",NODE=+$O(ZPDSEG(NODE),-1) Q
|
---|
50 | . . S SEGLINE=$G(ZPDSEG(NODE))
|
---|
51 | . S DATA=$P(SEGLINE,HLFS,(+$E(I,1,2)-OFFSET))
|
---|
52 | . I I=1011,DSS=108 Q
|
---|
53 | . I I=1012,DSS'=108 Q
|
---|
54 | . I +$E(I,1,2)=10,+DATA S DATA=$$FMDATE^HLFNC(DATA)
|
---|
55 | . D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(I)),";",3),VALERR,.CNT)
|
---|
56 | .Q
|
---|
57 | ;
|
---|
58 | ENQ M ZPDSEG=ZPDSEGSV
|
---|
59 | Q $S($D(@VALERR@(SEG)):MSG,1:1)
|
---|
60 | ;
|
---|
61 | ;
|
---|
62 | ERR ;;Invalid or missing patient ID data for encounter (HL7 ZPD data segment)
|
---|
63 | ;
|
---|
64 | ;
|
---|
65 | ;- ZPD data elements validated
|
---|
66 | ;
|
---|
67 | 1 ;;0035;HL7 SEGMENT NAME
|
---|
68 | 1010 ;;3000;DATE OF DEATH INVALID
|
---|
69 | 1011 ;;2370;DATE OF DEATH BEFORE ENCOUNTER DATE
|
---|
70 | 1012 ;;3030;ENCOUNTER 14 DAYS AFTER THE ENCOUNTER DATE
|
---|
71 | 17 ;;3100;HOMELESS INDICATOR
|
---|
72 | 18 ;;3150;POW STATUS INDICATED?
|
---|
73 | 19 ;;3200;TYPE OF INSURANCE
|
---|
74 | 21 ;;3250;INVALID/INCONSISTENT POW LOCATION
|
---|
75 | 41 ;;3400;INVALID EMERGENCY RESPONSE INDICATOR
|
---|