medical software engineer job description