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