[613] | 1 | SCMSVPR1 ;ALB/ESD HL7 PR1 Segment Validation ;06/24/99
|
---|
| 2 | ;;5.3;Scheduling;**44,66,142,180**;Aug 13, 1993
|
---|
| 3 | ;06/24/99 ACS - Added CPT modifier to the validation process
|
---|
| 4 | ;
|
---|
| 5 | EN(PR1ARRY,HLQ,HLFS,HLECH,VALERR,ENCDT) ;
|
---|
| 6 | ; Entry point to return the HL7 PR1 (Procedure) validation segment
|
---|
| 7 | ;
|
---|
| 8 | ; Input: PR1ARRY - Array of PR1 Segments
|
---|
| 9 | ; HLQ - HL7 null variable
|
---|
| 10 | ; HLFS - HL7 field separator
|
---|
| 11 | ; HLECH - HL7 encoding characters
|
---|
| 12 | ; VALERR - Array to put errors in
|
---|
| 13 | ; ENCDT - Date of encounter
|
---|
| 14 | ;
|
---|
| 15 | ; Output: 1 if PR1 passed validity check
|
---|
| 16 | ; Error message if PR1 failed validity check in form of:
|
---|
| 17 | ; -1^"xxx failed validity check" (xxx=element in PR1 segment)
|
---|
| 18 | ;
|
---|
| 19 | ; NOTE: This validity check will pass if at least ONE PR1 segment in
|
---|
| 20 | ; the PR1 array passes the validity checks.
|
---|
| 21 | ;
|
---|
| 22 | N I,J,MSG,OUT,PR1SEG,PR1ASEG,PRTYPE,VALID,X,CNT,SCSETID,SEG,OLD
|
---|
| 23 | S X="",(I,OUT)=0,MSG="-1^Element in PR1 segment failed validity check",(SCSETID,CNT)=1,SEG="PR1"
|
---|
| 24 | S PR1ARRY=$G(PR1ARRY)
|
---|
| 25 | S:(PR1ARRY="") PR1ARRY="^TMP(""VAFHL"",$J,""PROCEDURE"")"
|
---|
| 26 | F S I=+$O(@PR1ARRY@(I)) Q:'I D
|
---|
| 27 | . S VALID(I)=1
|
---|
| 28 | . S J="",J=$O(@PR1ARRY@(I,J)) Q:J=""
|
---|
| 29 | . ;S PR1SEG=$G(@PR1ARRY@(I,J))
|
---|
| 30 | . ;-----------------------------------------------------------
|
---|
| 31 | . ; After the merge, PR1SEG looks like this:
|
---|
| 32 | . ; PR1SEG=PR1^n^...^cpt^...
|
---|
| 33 | . ; PR1SEG(1)=|mod~desc~meth|mod~desc~meth|...
|
---|
| 34 | . ; PR1SEG(2)=|mod~desc~meth|mod~desc~meth|...
|
---|
| 35 | . ;-----------------------------------------------------------
|
---|
| 36 | . M PR1SEG=@PR1ARRY@(I,J)
|
---|
| 37 | . S OLD=CNT
|
---|
| 38 | . D VALIDATE^SCMSVUT0(SEG,PR1SEG,"0009",VALERR,.CNT)
|
---|
| 39 | . I $G(@VALERR@(SEG,OLD))="0009" Q
|
---|
| 40 | . S PR1SEG=$$CONVERT^SCMSVUT0(PR1SEG,HLFS,HLQ)
|
---|
| 41 | . ;
|
---|
| 42 | . ;- Validate procedure fields
|
---|
| 43 | . ;D PROCVAL(PR1SEG)
|
---|
| 44 | . D PROCVAL(.PR1SEG)
|
---|
| 45 | . Q
|
---|
| 46 | ;
|
---|
| 47 | I '$D(VALID) D VALIDATE^SCMSVUT0(SEG,"","0009",VALERR,.CNT)
|
---|
| 48 | ENQ Q $S($D(@VALERR@(SEG)):MSG,1:1)
|
---|
| 49 | ;
|
---|
| 50 | PROCVAL(PR1SEG) ; -Validate procedure fields
|
---|
| 51 | ;
|
---|
| 52 | ;N Z,DATA,CMPSEP
|
---|
| 53 | N Z,DATA,CMPSEP,REPSEP
|
---|
| 54 | S CMPSEP=$E(HLECH,1)
|
---|
| 55 | S REPSEP=$E(HLECH,2)
|
---|
| 56 | F Z="0101","0201","0401","0403" D
|
---|
| 57 | . S DATA=$P(PR1SEG,HLFS,+$E(Z,1,2))
|
---|
| 58 | . S DATA=$P(DATA,CMPSEP,+$E(Z,3,4))
|
---|
| 59 | . D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
|
---|
| 60 | ;
|
---|
| 61 | ;--------------------------------------------------------------
|
---|
| 62 | ; VALIDATE PROCEDURE MODIFIER FIELDS
|
---|
| 63 | ;
|
---|
| 64 | ; The modifier, cpt+modifier, and modifier coding method are
|
---|
| 65 | ; validated
|
---|
| 66 | ;
|
---|
| 67 | ; MODDATA = mod seq, piece 17: mod~desc~code meth|mod~desc~...
|
---|
| 68 | ; CTR = continuation segment counter
|
---|
| 69 | ; PROC = CPT procedure code
|
---|
| 70 | ;--------------------------------------------------------------
|
---|
| 71 | ;
|
---|
| 72 | ;- validate modifier components in the first PR1 array seg
|
---|
| 73 | N MODDATA,PROC
|
---|
| 74 | S PROC=$P($P(PR1SEG,HLFS,4),CMPSEP,1)
|
---|
| 75 | S MODDATA=$P(PR1SEG,HLFS,17)
|
---|
| 76 | Q:'MODDATA
|
---|
| 77 | D SETUP(MODDATA,PROC)
|
---|
| 78 | ;
|
---|
| 79 | ;- validate modifier components in the PR1 continuation segments
|
---|
| 80 | N CTR,MODDATA
|
---|
| 81 | S CTR=1,MODDATA=""
|
---|
| 82 | F S MODDATA=$E($G(PR1SEG(CTR)),2,245) Q:'MODDATA D
|
---|
| 83 | . D SETUP(MODDATA,PROC)
|
---|
| 84 | . S CTR=CTR+1
|
---|
| 85 | . Q
|
---|
| 86 | Q
|
---|
| 87 | ;
|
---|
| 88 | SETUP(MODDATA,PROC) ;
|
---|
| 89 | ;
|
---|
| 90 | ;---------------------------------------------------------------
|
---|
| 91 | ; SET UP AND VALIDATE MODIFIER COMPONENTS
|
---|
| 92 | ;
|
---|
| 93 | ; INPUT: MODDATA = modifier components
|
---|
| 94 | ; format: mod~desc~meth|mod~desc~meth|...
|
---|
| 95 | ; PROC = CPT procedure
|
---|
| 96 | ;
|
---|
| 97 | ; OTHER:
|
---|
| 98 | ; REPSEP = repetition separator ("|")
|
---|
| 99 | ; SEG = PR1
|
---|
| 100 | ; CNT = 1
|
---|
| 101 | ; VALERR = error message array
|
---|
| 102 | ; MCOMPNUM = modifier component number to validate
|
---|
| 103 | ; REPCTR = modifier repetition counter
|
---|
| 104 | ; MODDATA1 = each repetition of modifier info
|
---|
| 105 | ; format: mod~desc~meth
|
---|
| 106 | ; DATA = modifier data to validate (i.e. mod or meth)
|
---|
| 107 | ;---------------------------------------------------------------
|
---|
| 108 | ;
|
---|
| 109 | N MCOMPNUM,REPCTR,MODDATA1,DATA
|
---|
| 110 | S REPCTR=1
|
---|
| 111 | ; add repetition separator to end of input data
|
---|
| 112 | S MODDATA=MODDATA_REPSEP
|
---|
| 113 | ;
|
---|
| 114 | ; validate the modifier and coding method for each repetition
|
---|
| 115 | F S MODDATA1=$P(MODDATA,REPSEP,REPCTR) Q:'MODDATA1 D
|
---|
| 116 | . F Z="1701","1703" D
|
---|
| 117 | .. S MCOMPNUM=$E(Z,3,4)
|
---|
| 118 | .. S DATA=$P(MODDATA1,"~",MCOMPNUM)
|
---|
| 119 | .. ;
|
---|
| 120 | .. ;- pass procedure AND modifier if validating modifier
|
---|
| 121 | .. S:MCOMPNUM="01" DATA=PROC_"~"_DATA
|
---|
| 122 | .. D VALIDATE^SCMSVUT0(SEG,DATA,$P($T(@(Z)),";",3),VALERR,.CNT)
|
---|
| 123 | .. Q
|
---|
| 124 | . S REPCTR=REPCTR+1
|
---|
| 125 | . Q
|
---|
| 126 | Q
|
---|
| 127 | ;
|
---|
| 128 | ;
|
---|
| 129 | ;
|
---|
| 130 | ;- PR1 data elements validated
|
---|
| 131 | ;
|
---|
| 132 | ;
|
---|
| 133 | 0101 ;;0035;HL7 SEGMENT NAME
|
---|
| 134 | 0201 ;;6250;HL7 SEQUENTIAL NUMBER (SET ID)
|
---|
| 135 | 0401 ;;6050;PROCEDURE CODE (CPT)
|
---|
| 136 | 0403 ;;6000;PROCEDURE CODING METHOD
|
---|
| 137 | 1701 ;;6300;PROCEDURE MODIFIER AND PROC+MOD COMBINATION
|
---|
| 138 | 1703 ;;6370;PROCEDURE MODIFIER CODING METHOD
|
---|