This routine formats phone numbers nicely with the area code in brackets:
-- following best practice by putting local -- functions first before main() local function CleanPhoneNumber(PN) local Result if PN then local NumAsString = PN:nodeValue() -- Remove all non-numeric characters from the phone number. local N = NumAsString:gsub('[^%d]', '') if #N == 10 then Result = '('..N:sub(1,3)..')'..N:sub(4,6)..'-'..N:sub(7,10) elseif #N == 7 then Result = N:sub(1,3)..'-'..N:sub(4,7) end else Result = nil end return Result end function main(Data) local msg = hl7.parse{vmd = 'example/demo.vmd', data = Data} local cleanHmPhone = CleanPhoneNumber(msg.PID[13][1][1]) -- home phone local cleanWkPhone = CleanPhoneNumber(msg.PID[14][1][1]) -- business end