1 | SCMSVDG1 ;ALB/ESD HL7 DG1 Segment Validation ;05/08/95
|
---|
2 | ;;5.3;Scheduling;**44,57,68,77,85,95,66**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | EN(DG1ARRY,HLQ,HLFS,ENCPTR,VALERR,ENCDT) ;
|
---|
6 | ; Entry point to return the HL7 DG1 (Outpatient Diagnosis) validation segment
|
---|
7 | ;
|
---|
8 | ; Input: DG1ARRY - Array of DG1 Segments
|
---|
9 | ; HLQ - HL7 null variable
|
---|
10 | ; HLFS - HL7 field separator
|
---|
11 | ; ENCPTR - Outpatient Encounter IEN (file #409.68)
|
---|
12 | ; VALERR - The array name to put error messages in
|
---|
13 | ; ENCDT - The date of the encounter
|
---|
14 | ;
|
---|
15 | ; Output: 1 if DG1 passed validity check
|
---|
16 | ; Error message if DG1 failed validity check in form of:
|
---|
17 | ; -1^"xxx failed validity check" (xxx=element in DG1 segment)
|
---|
18 | ;
|
---|
19 | ; NOTE: This validity check will pass if at least ONE DG1 segment in
|
---|
20 | ; the DG1 array passes the validity checks.
|
---|
21 | ;
|
---|
22 | ; A check for occasion of service (procedure which does not
|
---|
23 | ; require a diagnosis) is contained in this routine.
|
---|
24 | ;
|
---|
25 | ;
|
---|
26 | N DG1SEG,I,J,MSG,PROCARRY,VALID,X,Z,DATA,CNT,SCSETID,SEG,PRIOR
|
---|
27 | S MSG="-1^Element in DG1 segment failed validity check"
|
---|
28 | S (I,PRIOR)=0,X="",PROCARRY="PROCS",DG1ARRY=$G(DG1ARRY),SEG="DG1",(CNT,SCSETID)=1
|
---|
29 | S:(DG1ARRY="") DG1ARRY="^TMP(""VAFHL"",$J,""DIAGNOSIS"")"
|
---|
30 | ;
|
---|
31 | ;- Check for occasion of service and number od DX's found greater then zero.
|
---|
32 | ; If 00s and NO DX's, kill DG1 array. If 00S and there are DX's, continue
|
---|
33 | ; processing DG1 segment.
|
---|
34 | N SDCNT,SDDXY,QUIT
|
---|
35 | I ($$CHKOCC(ENCPTR)) D SET^SDCO4(ENCPTR) I 'SDCNT D G ENQ
|
---|
36 | . K @DG1ARRY
|
---|
37 | . Q
|
---|
38 | ;
|
---|
39 | F S I=+$O(@DG1ARRY@(I)) Q:'I D Q:$D(QUIT)
|
---|
40 | . S J="",VALID=1
|
---|
41 | . F S J=$O(@DG1ARRY@(I,J)) Q:J="" D Q:$D(QUIT)
|
---|
42 | .. S DG1SEG=$G(@DG1ARRY@(I,J)),DG1SEG=$$CONVERT^SCMSVUT0(DG1SEG,HLFS,HLQ)
|
---|
43 | .. D VALIDATE^SCMSVUT0(SEG,DG1SEG,"0036",VALERR,.CNT)
|
---|
44 | .. I $G(@VALERR@(SEG,CNT-1))="0036" S QUIT=1 Q
|
---|
45 | .. F Z=1,2,3,4,16 DO ;;;*** SWITCHED THIS FROM 6 TO 16 NEED TO TEST
|
---|
46 | ... S DATA=$P(DG1SEG,HLFS,Z)
|
---|
47 | ... I Z=16,DATA=1 S PRIOR=PRIOR+1
|
---|
48 | ... D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
|
---|
49 | ... Q
|
---|
50 | .. Q
|
---|
51 | . Q
|
---|
52 | ;
|
---|
53 | I $D(QUIT) G ENQ
|
---|
54 | D VALIDATE^SCMSVUT0(SEG,PRIOR,"5100",VALERR,.CNT)
|
---|
55 | I '$D(VALID) D VALIDATE^SCMSVUT0(SEG,"","0036",VALERR,.CNT)
|
---|
56 | ;
|
---|
57 | ENQ Q $S($D(@VALERR@(SEG)):MSG,1:1)
|
---|
58 | ;
|
---|
59 | ;
|
---|
60 | CHKOCC(ENCPTR) ; Occasion of Service Check
|
---|
61 | ;
|
---|
62 | ; Input: ENCPTR - Ptr to outpatient encounter file
|
---|
63 | ;
|
---|
64 | ; Output: 0 if location is not an occasion of service clinic
|
---|
65 | ; 1 if location is an occasion of service clinic
|
---|
66 | ;
|
---|
67 | ;
|
---|
68 | N ENC,LOC,STOP
|
---|
69 | S ENC=$G(^SCE(+ENCPTR,0))
|
---|
70 | S LOC=$P(ENC,"^",4),STOP=$P($G(^SC(+LOC,0)),"^",7)
|
---|
71 | Q $$EX^SDCOU2(STOP,+ENC)
|
---|
72 | ;
|
---|
73 | ;
|
---|
74 | ;- DG1 data elements validated
|
---|
75 | ;
|
---|
76 | 1 ;;0035;HL7 SEGMENT NAME
|
---|
77 | 2 ;;5150;HL7 SEQUENTIAL NUMBER (SET ID)
|
---|
78 | 3 ;;5030;DIAGNOSIS CODING METHOD
|
---|
79 | 4 ;;5000;DIAGNOSIS CODE (ICD 9)
|
---|
80 | 16 ;;5100;DIAGNOSIS PRIORITY
|
---|