| [613] | 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 
 | 
|---|