Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCMSVZPD

SCMSVZPD.m

Go to the documentation of this file.
  1. SCMSVZPD ;ALB/ESD,JLU HL7 ZPD Segment Validation ;05/08/95
  1. ;;5.3;Scheduling;**44,66,142,459,472,1015**;Aug 13, 1993;Build 21
  1. ;
  1. ;
  1. EN(ZPDSEG,HLQ,HLFS,VALERR,ENCDT,NODE) ;
  1. ; Entry point to return the HL7 ZPD (Patient Data) validation segment
  1. ;
  1. ; Input: ZPDSEG - ZPD Segment
  1. ; HLQ - HL7 null variable
  1. ; HLFS - HL7 field separator
  1. ; VALERR - Contains the array in which to put the errors
  1. ; ENCDT - The date/time of the encounter being processed
  1. ; NODE - The zero node of the entry from the Outpatient
  1. ; Encounter file.
  1. ;
  1. ; Output: 1 if ZPD passed validity check
  1. ; Error message if ZPD failed validity check in form of:
  1. ; -1^"xxx failed validity check" (xxx=element in ZPD segment)
  1. ;
  1. ;
  1. N I,MSG,DATA,X,CNT,SEG,DSS,DFN,SEGLINE,OFFSET,ZPDSEGSV
  1. S MSG="-1^element in ZPD segment failed validity check",CNT=1,SEG="ZPD"
  1. S ZPDSEG=$G(ZPDSEG)
  1. M ZPDSEGSV=ZPDSEG
  1. D VALIDATE^SCMSVUT0(SEG,ZPDSEG,"0007",VALERR,.CNT)
  1. I $D(@VALERR@(SEG)) G ENQ
  1. ;
  1. ;- Convert HLQ to null
  1. S ZPDSEG=$$CONVERT^SCMSVUT0(ZPDSEG,HLFS,HLQ)
  1. S I=0
  1. F S I=$O(ZPDSEG(I)) Q:'I S ZPDSEG(I)=$$CONVERT^SCMSVUT0(ZPDSEG(I),HLFS,HLQ)
  1. ;
  1. ;Getting the DSS identifier to check for a LAB
  1. S DSS=$P(NODE,U,3)
  1. S DSS=$G(^DIC(40.7,DSS,0))
  1. I DSS]"" S DSS=$P(DSS,U,2)
  1. ;
  1. ;Get pointer to PATIENT file
  1. S DFN=$P(NODE,U,2)
  1. ;
  1. ;- Validate data elements
  1. N NODE
  1. S OFFSET=0,NODE=0,SEGLINE=ZPDSEG
  1. F I=1,1010,1011,1012,17,18,19,21,41 D
  1. . I $L(SEGLINE,HLFS)<($E(I,1,2)-OFFSET) D
  1. . . ;Segment wrapped
  1. . . S OFFSET=OFFSET+$L(SEGLINE,HLFS)-1
  1. . . S NODE=+$O(ZPDSEG(NODE))
  1. . . I NODE=0 S SEGLINE="",NODE=+$O(ZPDSEG(NODE),-1) Q
  1. . . S SEGLINE=$G(ZPDSEG(NODE))
  1. . S DATA=$P(SEGLINE,HLFS,(+$E(I,1,2)-OFFSET))
  1. . I I=1011,DSS=108 Q
  1. . I I=1012,DSS'=108 Q
  1. . I +$E(I,1,2)=10,+DATA S DATA=$$FMDATE^HLFNC(DATA)
  1. . D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(I)),";",3),VALERR,.CNT)
  1. .Q
  1. ;
  1. ENQ M ZPDSEG=ZPDSEGSV
  1. Q $S($D(@VALERR@(SEG)):MSG,1:1)
  1. ;
  1. ;
  1. ERR ;;Invalid or missing patient ID data for encounter (HL7 ZPD data segment)
  1. ;
  1. ;
  1. ;- ZPD data elements validated
  1. ;
  1. 1 ;;0035;HL7 SEGMENT NAME
  1. 1010 ;;3000;DATE OF DEATH INVALID
  1. 1011 ;;2370;DATE OF DEATH BEFORE ENCOUNTER DATE
  1. 1012 ;;3030;ENCOUNTER 14 DAYS AFTER THE ENCOUNTER DATE
  1. 17 ;;3100;HOMELESS INDICATOR
  1. 18 ;;3150;POW STATUS INDICATED?
  1. 19 ;;3200;TYPE OF INSURANCE
  1. 21 ;;3250;INVALID/INCONSISTENT POW LOCATION
  1. 41 ;;3400;INVALID EMERGENCY RESPONSE INDICATOR