[613] | 1 | DGENUPLA ;ALB/CKN,TDM,PJR,RGL,EG,TMK,CKN - PROCESS INCOMING (Z11 EVENT TYPE) HL7 MESSAGES ; 9/19/06 10:45am
|
---|
| 2 | ;;5.3;REGISTRATION;**397,379,497,451,564,672,659,583,653**;Aug 13,1993;Build 2
|
---|
| 3 | ;
|
---|
| 4 | ;***************************************************************
|
---|
| 5 | ; This routine was created because DGENUPL2 had reached it's
|
---|
| 6 | ; maximum size, therefore no new code could not be added. All
|
---|
| 7 | ; code that existed in the ZEL and OBX tags of DGENUPL2 has
|
---|
| 8 | ; been moved to the ZEL and OBX tags of DGENUPLA. A line of code
|
---|
| 9 | ; was placed in ZEL^DGENUPL2 to call ZEL^DGENUPLA. A line of
|
---|
| 10 | ; code was placed in OBX^DGENUPL2 to call OBX^DGENUPLA.
|
---|
| 11 | ; Any routine that calls ZEL^DGENUPL2 or OBX^DGENUPL2 will not
|
---|
| 12 | ; be affected by this change.
|
---|
| 13 | ;***************************************************************
|
---|
| 14 | ;
|
---|
| 15 | ;***************************************************************
|
---|
| 16 | ;The following procedures parse particular segment types.
|
---|
| 17 | ;Input:SEG(),MSGID
|
---|
| 18 | ;Output:DGPAT(),DGELG(),DGENR(),DGNTR(),DGMST(),ERROR
|
---|
| 19 | ;***************************************************************
|
---|
| 20 | ;
|
---|
| 21 | ;
|
---|
| 22 | ZEL(COUNT) ;
|
---|
| 23 | N CODE
|
---|
| 24 | S CODE=$$CONVERT^DGENUPL1(SEG(2),"ELIGIBILITY",.ERROR)
|
---|
| 25 | I ERROR D Q
|
---|
| 26 | .D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"ELIGIBILITY CODE "_SEG(2)_" NOT FOUND IN ELIGIBILTIY CODE FILE",.ERRCOUNT)
|
---|
| 27 | I COUNT=1 D
|
---|
| 28 | .S DGELG("ELIG","CODE")=CODE
|
---|
| 29 | .;S DGELG("DISRET")=$$CONVERT^DGENUPL1(SEG(5))
|
---|
| 30 | .S DGELG("DISRET")=$$DISCONV(SEG(5)) ;DG*5.3*672
|
---|
| 31 | .I ERROR D Q
|
---|
| 32 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 5",.ERRCOUNT)
|
---|
| 33 | .S DGELG("CLAIMNUM")=$$CONVERT^DGENUPL1(SEG(6))
|
---|
| 34 | .S DGELG("CLAIMLOC")=$$SITECNV(SEG(7))
|
---|
| 35 | .;
|
---|
| 36 | .S DGPAT("VETERAN")=$$CONVERT^DGENUPL1(SEG(8),"Y/N",.ERROR)
|
---|
| 37 | .I ERROR D Q
|
---|
| 38 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 8",.ERRCOUNT)
|
---|
| 39 | .S DGELG("ELIGSTA")=$$CONVERT^DGENUPL1(SEG(10))
|
---|
| 40 | .S DGELG("ELIGSTADATE")=$$CONVERT^DGENUPL1(SEG(11),"DATE",.ERROR)
|
---|
| 41 | .I ERROR D Q
|
---|
| 42 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 11",.ERRCOUNT)
|
---|
| 43 | .S DGELG("ELIGVERIF")=$$CONVERT^DGENUPL1(SEG(13))
|
---|
| 44 | .S DGELG("A&A")=$$CONVERT^DGENUPL1(SEG(14),"Y/N",.ERROR)
|
---|
| 45 | .I ERROR D Q
|
---|
| 46 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 14",.ERRCOUNT)
|
---|
| 47 | .S DGELG("HB")=$$CONVERT^DGENUPL1(SEG(15),"Y/N",.ERROR)
|
---|
| 48 | .I ERROR D Q
|
---|
| 49 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 15",.ERRCOUNT)
|
---|
| 50 | .S DGELG("VAPEN")=$$CONVERT^DGENUPL1(SEG(16),"Y/N",.ERROR)
|
---|
| 51 | .I ERROR D Q
|
---|
| 52 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 16",.ERRCOUNT)
|
---|
| 53 | .S DGELG("VADISAB")=$$CONVERT^DGENUPL1(SEG(17),"Y/N",.ERROR)
|
---|
| 54 | .I ERROR D Q
|
---|
| 55 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 17",.ERRCOUNT)
|
---|
| 56 | .S DGELG("AO")=$$CONVERT^DGENUPL1(SEG(18),"Y/N",.ERROR)
|
---|
| 57 | .N AOERR S AOERR=ERROR ; See SEG(29) below.
|
---|
| 58 | .I ERROR D Q
|
---|
| 59 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 18",.ERRCOUNT)
|
---|
| 60 | .S (DGPAT("IR"),DGELG("IR"))=$$CONVERT^DGENUPL1(SEG(19),"Y/N",.ERROR)
|
---|
| 61 | .I ERROR D Q
|
---|
| 62 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 19",.ERRCOUNT)
|
---|
| 63 | .S DGELG("EC")=$$CONVERT^DGENUPL1(SEG(20),"Y/N",.ERROR)
|
---|
| 64 | .I ERROR D Q
|
---|
| 65 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 20",.ERRCOUNT)
|
---|
| 66 | .S (DGPAT("RADEXPM"),DGELG("RADEXPM"))=$G(SEG(22))
|
---|
| 67 | .S ERROR=$S(DGELG("RADEXPM")="":0,",2,3,4,5,6,7,"[(","_DGELG("RADEXPM")_","):0,1:1)
|
---|
| 68 | .I ERROR D Q
|
---|
| 69 | ..D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 22",.ERRCOUNT)
|
---|
| 70 | .;
|
---|
| 71 | .S DGELG("VACKAMT")=$$CONVERT^DGENUPL1(SEG(21))
|
---|
| 72 | .;
|
---|
| 73 | .;Parse MST data into DGMST array from sequences 23, 24, 25 of ZEL segment
|
---|
| 74 | . S DGMST("MSTSTAT")=SEG(23)
|
---|
| 75 | . S DGMST("MSTDT")=$$CONVERT^DGENUPL1(SEG(24),"TS",.ERROR)
|
---|
| 76 | . I ERROR D Q
|
---|
| 77 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 24",.ERRCOUNT)
|
---|
| 78 | . S DGMST("MSTST")=$$CONVERT^DGENUPL1(SEG(25),"INSTITUTION",.ERROR)
|
---|
| 79 | . I ERROR D Q
|
---|
| 80 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 25",.ERRCOUNT)
|
---|
| 81 | .;
|
---|
| 82 | . S DGELG("AOEXPLOC")=SEG(29)
|
---|
| 83 | .; Logic enhanced during SQA of patch 451. AOERR from SEG(18) above.
|
---|
| 84 | . I 'AOERR,DGELG("AO")'="Y",DGELG("AOEXPLOC")="" S DGELG("AOEXPLOC")="@"
|
---|
| 85 | . S DGELG("UEYEAR")=$$CONVERT^DGENUPL1(SEG(34),"DATE",.ERROR)
|
---|
| 86 | . I ERROR D Q
|
---|
| 87 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 34",.ERRCOUNT)
|
---|
| 88 | . S DGELG("UESITE")=$$CONVERT^DGENUPL1(SEG(35),"INSTITUTION",.ERROR)
|
---|
| 89 | . I ERROR D Q
|
---|
| 90 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 35",.ERRCOUNT)
|
---|
| 91 | . S DGELG("CVELEDT")=$$CONVERT^DGENUPL1(SEG(38),"DATE",.ERROR)
|
---|
| 92 | . I ERROR D Q
|
---|
| 93 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 38",.ERRCOUNT)
|
---|
| 94 | . I $G(DGELG("DISLOD"))="" S DGELG("DISLOD")=$$CONVERT^DGENUPL1(SEG(39),"1/0",.ERROR) ;Discharge due to Disability - DG*5.3*672
|
---|
| 95 | . I ERROR D Q
|
---|
| 96 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 39",.ERRCOUNT)
|
---|
| 97 | . S DGELG("SHAD")=$$CONVERT^DGENUPL1(SEG(40),"1/0",.ERROR) ;Proj 112/SHAD - DG*5.3*653
|
---|
| 98 | . I ERROR D Q
|
---|
| 99 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZEL SEGMENT, SEQ 40 - SHAD Indicator",.ERRCOUNT)
|
---|
| 100 | ;
|
---|
| 101 | I COUNT>1 D
|
---|
| 102 | .S DGELG("ELIG","CODE",CODE)=""
|
---|
| 103 | Q
|
---|
| 104 | ;
|
---|
| 105 | OBX N OBXPCE,OBXVAL,OBXTBL,I,CS,SS,RS
|
---|
| 106 | I $G(HLECH)'="~|\&" N HLECH S HLECH="~|\&"
|
---|
| 107 | I $G(HLFS)="" N HLFS S HLFS="^"
|
---|
| 108 | S CS=$E(HLECH,1),SS=$E(HLECH,4),RS=$E(HLECH,2)
|
---|
| 109 | I $G(SEG(3))=("38.1"_$E(HLECH)_"SECURITY LOG") D
|
---|
| 110 | . N LEVEL
|
---|
| 111 | . S LEVEL=$P(SEG(5),$E(HLECH))
|
---|
| 112 | . S DGSEC("LEVEL")=$$CONVERT^DGENUPL1(LEVEL,"1/0",.ERROR)
|
---|
| 113 | . I ERROR D Q
|
---|
| 114 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, OBX SEGMENT, SEQ 5",.ERRCOUNT)
|
---|
| 115 | . S DGSEC("DATETIME")=$$CONVERT^DGENUPL1(SEG(14),"TS",.ERROR)
|
---|
| 116 | . I ERROR D Q
|
---|
| 117 | . . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, OBX SEGMENT, SEQ 14, Patient Sensitivity Date/Time",.ERRCOUNT) ;DG*5.3*653
|
---|
| 118 | . S DGSEC("SOURCE")=$$CONVERT^DGENUPL1(SEG(16))
|
---|
| 119 | ;
|
---|
| 120 | I $G(SEG(3))=("VISTA"_CS_"28.11") D
|
---|
| 121 | . S OBXTBL(1)="NTR^Y",OBXTBL(2)="AVI^Y",OBXTBL(3)="SUB^Y"
|
---|
| 122 | . S OBXTBL(4)="HNC^Y",OBXTBL(5)="NTR^N",OBXTBL(6)="AVI^N"
|
---|
| 123 | . S OBXTBL(7)="SUB^N",OBXTBL(8)="HNC^N",OBXTBL(9)="NTR^U"
|
---|
| 124 | . F I=1:1:$L($G(SEG(5)),RS) D
|
---|
| 125 | . . S OBXPCE=$P($G(SEG(5)),RS,I),OBXVAL=$P($G(OBXPCE),CS)
|
---|
| 126 | . . S DGNTR($P($G(OBXTBL(OBXVAL)),"^"))=$P($G(OBXTBL(OBXVAL)),"^",2)
|
---|
| 127 | . I $G(SEG(12))'="" S DGNTR("HDT")=$$CONVERT^DGENUPL1(SEG(12),"TS",.ERROR)
|
---|
| 128 | . S DGNTR("VDT")=$$CONVERT^DGENUPL1(SEG(14),"TS",.ERROR)
|
---|
| 129 | . S DGNTR("VSIT")=$$CONVERT^DGENUPL1(SEG(15),"INSTITUTION",.ERROR)
|
---|
| 130 | . S DGNTR("HSIT")=$P($P($G(SEG(16)),CS,14),SS,2)
|
---|
| 131 | . I DGNTR("HSIT")'="" S DGNTR("HSIT")=$$CONVERT^DGENUPL1($G(DGNTR("HSIT")),"INSTITUTION",.ERROR)
|
---|
| 132 | . S DGNTR("VER")=$P($G(SEG(17)),CS)
|
---|
| 133 | Q
|
---|
| 134 | ;
|
---|
| 135 | ZIO ;New segment - DG*5.3*653
|
---|
| 136 | S DGPAT("APPREQ")=$$CONVERT^DGENUPL1(SEG(5),"1/0",.ERROR)
|
---|
| 137 | I ERROR D Q
|
---|
| 138 | . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZIO SEGMENT, SEQ 5, APPOINTMENT REQUEST ON 1010EZ",.ERRCOUNT)
|
---|
| 139 | S DGPAT("APPREQDT")=$$CONVERT^DGENUPL1(SEG(6),"DATE",.ERROR)
|
---|
| 140 | I ERROR D Q
|
---|
| 141 | . D ADDERROR^DGENUPL(MSGID,$G(DGPAT("SSN")),"BAD VALUE, ZIO SEGMENT, SEQ 6, APPOINTMENT REQUEST DATE",.ERRCOUNT)
|
---|
| 142 | Q
|
---|
| 143 | ;
|
---|
| 144 | DISCONV(VAL,ERROR) ;
|
---|
| 145 | ;DG*5.3*672 - Military Disability conversion to new values
|
---|
| 146 | N DISRET
|
---|
| 147 | S ERROR=0
|
---|
| 148 | I VAL="" Q VAL
|
---|
| 149 | I VAL="""""" S VAL="@" Q VAL
|
---|
| 150 | I ((VAL="Y")!(VAL="N")) D Q DISRET
|
---|
| 151 | . S DISRET=$$CONVERT^DGENUPL1(VAL,"1/0",.ERROR)
|
---|
| 152 | S (DISRET,DGELG("DISLOD"))=$S(VAL=0:0,VAL=1:1,VAL=2:1,VAL=3:0,1:"")
|
---|
| 153 | I DISRET="" S ERROR=1 Q VAL
|
---|
| 154 | Q DISRET
|
---|
| 155 | ;
|
---|
| 156 | SITECNV(STRING) ; Convert claim folder loc (site # or site # and name) to
|
---|
| 157 | ; ptr to file 4
|
---|
| 158 | N SITE
|
---|
| 159 | S SITE=""
|
---|
| 160 | I STRING'="" D
|
---|
| 161 | . N SUB,START,END
|
---|
| 162 | . ; Find site ien if only site # is returned
|
---|
| 163 | . I $O(^DIC(4,"D",STRING,0)) S SITE=$O(^DIC(4,"D",STRING,0)) Q
|
---|
| 164 | . ; Check if name is concatenated onto site # to find site ien
|
---|
| 165 | . S SUB=""
|
---|
| 166 | . F S SUB=$O(^DIC(4,"D",SUB)) Q:SUB="" I $E(SUB,1,3)=$E(STRING,1,3),$$CHK(SUB,STRING) S SITE=$O(^DIC(4,"D",SUB,0)) Q
|
---|
| 167 | ; SITE is the pointer to file 4 or null for site not found
|
---|
| 168 | Q SITE
|
---|
| 169 | ;
|
---|
| 170 | CHK(SUB,STRING) ;
|
---|
| 171 | N IEN,X,STN,RET
|
---|
| 172 | I SUB=STRING Q 1
|
---|
| 173 | S RET=0
|
---|
| 174 | S IEN=+$O(^DIC(4,"D",SUB,""))
|
---|
| 175 | I IEN D
|
---|
| 176 | . S X=$P($G(^DIC(4,IEN,0)),U),STN=$P($G(^(99)),U)
|
---|
| 177 | . ; assume institution file names will be the same on HEC and VistA
|
---|
| 178 | . I STN=SUB,X'="",$E($P(STRING,SUB,2,999),1,40)=X S RET=1
|
---|
| 179 | Q RET
|
---|
| 180 | ;
|
---|