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

SCMSVPR1.m

Go to the documentation of this file.
  1. SCMSVPR1 ;ALB/ESD HL7 PR1 Segment Validation ;06/24/99
  1. ;;5.3;Scheduling;**44,66,142,180,1015**;Aug 13, 1993;Build 21
  1. ;06/24/99 ACS - Added CPT modifier to the validation process
  1. ;
  1. EN(PR1ARRY,HLQ,HLFS,HLECH,VALERR,ENCDT) ;
  1. ; Entry point to return the HL7 PR1 (Procedure) validation segment
  1. ;
  1. ; Input: PR1ARRY - Array of PR1 Segments
  1. ; HLQ - HL7 null variable
  1. ; HLFS - HL7 field separator
  1. ; HLECH - HL7 encoding characters
  1. ; VALERR - Array to put errors in
  1. ; ENCDT - Date of encounter
  1. ;
  1. ; Output: 1 if PR1 passed validity check
  1. ; Error message if PR1 failed validity check in form of:
  1. ; -1^"xxx failed validity check" (xxx=element in PR1 segment)
  1. ;
  1. ; NOTE: This validity check will pass if at least ONE PR1 segment in
  1. ; the PR1 array passes the validity checks.
  1. ;
  1. N I,J,MSG,OUT,PR1SEG,PR1ASEG,PRTYPE,VALID,X,CNT,SCSETID,SEG,OLD
  1. S X="",(I,OUT)=0,MSG="-1^Element in PR1 segment failed validity check",(SCSETID,CNT)=1,SEG="PR1"
  1. S PR1ARRY=$G(PR1ARRY)
  1. S:(PR1ARRY="") PR1ARRY="^TMP(""VAFHL"",$J,""PROCEDURE"")"
  1. F S I=+$O(@PR1ARRY@(I)) Q:'I D
  1. . S VALID(I)=1
  1. . S J="",J=$O(@PR1ARRY@(I,J)) Q:J=""
  1. . ;S PR1SEG=$G(@PR1ARRY@(I,J))
  1. . ;-----------------------------------------------------------
  1. . ; After the merge, PR1SEG looks like this:
  1. . ; PR1SEG=PR1^n^...^cpt^...
  1. . ; PR1SEG(1)=|mod~desc~meth|mod~desc~meth|...
  1. . ; PR1SEG(2)=|mod~desc~meth|mod~desc~meth|...
  1. . ;-----------------------------------------------------------
  1. . M PR1SEG=@PR1ARRY@(I,J)
  1. . S OLD=CNT
  1. . D VALIDATE^SCMSVUT0(SEG,PR1SEG,"0009",VALERR,.CNT)
  1. . I $G(@VALERR@(SEG,OLD))="0009" Q
  1. . S PR1SEG=$$CONVERT^SCMSVUT0(PR1SEG,HLFS,HLQ)
  1. . ;
  1. . ;- Validate procedure fields
  1. . ;D PROCVAL(PR1SEG)
  1. . D PROCVAL(.PR1SEG)
  1. . Q
  1. ;
  1. I '$D(VALID) D VALIDATE^SCMSVUT0(SEG,"","0009",VALERR,.CNT)
  1. ENQ Q $S($D(@VALERR@(SEG)):MSG,1:1)
  1. ;
  1. PROCVAL(PR1SEG) ; -Validate procedure fields
  1. ;
  1. ;N Z,DATA,CMPSEP
  1. N Z,DATA,CMPSEP,REPSEP
  1. S CMPSEP=$E(HLECH,1)
  1. S REPSEP=$E(HLECH,2)
  1. F Z="0101","0201","0401","0403" D
  1. . S DATA=$P(PR1SEG,HLFS,+$E(Z,1,2))
  1. . S DATA=$P(DATA,CMPSEP,+$E(Z,3,4))
  1. . D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
  1. ;
  1. ;--------------------------------------------------------------
  1. ; VALIDATE PROCEDURE MODIFIER FIELDS
  1. ;
  1. ; The modifier, cpt+modifier, and modifier coding method are
  1. ; validated
  1. ;
  1. ; MODDATA = mod seq, piece 17: mod~desc~code meth|mod~desc~...
  1. ; CTR = continuation segment counter
  1. ; PROC = CPT procedure code
  1. ;--------------------------------------------------------------
  1. ;
  1. ;- validate modifier components in the first PR1 array seg
  1. N MODDATA,PROC
  1. S PROC=$P($P(PR1SEG,HLFS,4),CMPSEP,1)
  1. S MODDATA=$P(PR1SEG,HLFS,17)
  1. Q:'MODDATA
  1. D SETUP(MODDATA,PROC)
  1. ;
  1. ;- validate modifier components in the PR1 continuation segments
  1. N CTR,MODDATA
  1. S CTR=1,MODDATA=""
  1. F S MODDATA=$E($G(PR1SEG(CTR)),2,245) Q:'MODDATA D
  1. . D SETUP(MODDATA,PROC)
  1. . S CTR=CTR+1
  1. . Q
  1. Q
  1. ;
  1. SETUP(MODDATA,PROC) ;
  1. ;
  1. ;---------------------------------------------------------------
  1. ; SET UP AND VALIDATE MODIFIER COMPONENTS
  1. ;
  1. ; INPUT: MODDATA = modifier components
  1. ; format: mod~desc~meth|mod~desc~meth|...
  1. ; PROC = CPT procedure
  1. ;
  1. ; OTHER:
  1. ; REPSEP = repetition separator ("|")
  1. ; SEG = PR1
  1. ; CNT = 1
  1. ; VALERR = error message array
  1. ; MCOMPNUM = modifier component number to validate
  1. ; REPCTR = modifier repetition counter
  1. ; MODDATA1 = each repetition of modifier info
  1. ; format: mod~desc~meth
  1. ; DATA = modifier data to validate (i.e. mod or meth)
  1. ;---------------------------------------------------------------
  1. ;
  1. N MCOMPNUM,REPCTR,MODDATA1,DATA
  1. S REPCTR=1
  1. ; add repetition separator to end of input data
  1. S MODDATA=MODDATA_REPSEP
  1. ;
  1. ; validate the modifier and coding method for each repetition
  1. F S MODDATA1=$P(MODDATA,REPSEP,REPCTR) Q:'MODDATA1 D
  1. . F Z="1701","1703" D
  1. .. S MCOMPNUM=$E(Z,3,4)
  1. .. S DATA=$P(MODDATA1,"~",MCOMPNUM)
  1. .. ;
  1. .. ;- pass procedure AND modifier if validating modifier
  1. .. S:MCOMPNUM="01" DATA=PROC_"~"_DATA
  1. .. D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
  1. .. Q
  1. . S REPCTR=REPCTR+1
  1. . Q
  1. Q
  1. ;
  1. ;
  1. ;
  1. ;- PR1 data elements validated
  1. ;
  1. ;
  1. 0101 ;;0035;HL7 SEGMENT NAME
  1. 0201 ;;6250;HL7 SEQUENTIAL NUMBER (SET ID)
  1. 0401 ;;6050;PROCEDURE CODE (CPT)
  1. 0403 ;;6000;PROCEDURE CODING METHOD
  1. 1701 ;;6300;PROCEDURE MODIFIER AND PROC+MOD COMBINATION
  1. 1703 ;;6370;PROCEDURE MODIFIER CODING METHOD