With that disclaimer out of the way my understanding of the problem for people to understand something so abstract as functions, arrays and iteration is because they have no frame of reference. It's like remembering a word from a very foreign language after a week. My trick to help people absorb these abtract ideas is to use metaphores with things they're familiar with. So a function can become a robot that takes commands (parameters) and outputs an answer (return statement). Since you have the understanding of both a medical professional and a programmer you're in a great position to connect the two worlds. Also leave out the technical jargon; explain it in regular language. Together with a simple hand-made drawing (most people are visual learners) it should help make it stick.
Registered an account here to reply on this, so I hope it helps.