Yeah, what you're describing is exactly the kind of thing that Twine was made for. I'd recommend using the SugarCube story format, since it has some nice built-in features, such as an easy to use save and load system. You can find the latest version of SugarCube and its documentation at that link.
That said, with just the basics, the code is pretty simple. For your above example you might make a passage named "Appendicitis" and have something like the following code in it:
Patient is undergoing an appendix removal. They present with these symptoms:
* Symptom 1
* Symptom 2
* Symptom 3
* Symptom 4
__What do you choose?__
''B.'' [[Request Imaging|Append-Image]]
''C.'' [[Transfer to ICU|Append-ICU]]
Most of the marks above are just style formatting. The asterisk on the left of the symptoms causes them to appear as a dotted list. The "[img[AppendicitisPatient.jpg]]" would display your "AppendicitisPatient.jpg" image there (if you need help with images see this sample code; click "Jump to Start" in the UI bar to see other sample code there). And finally, the the "[[Link text|Passage name]]" lines would display a clickable link to another passage.
If you wanted to track their score, then you could add a StoryInit passage where you use the <<set>> macro to set the initial score (e.g. <<set $score = 0>>), and then just use the <<set>> macro again to adjust their scores in the passage that they go to (e.g. <<set $score += 1>> would add 1 to the $score variable). You can display the value of a variable simply by putting the variable in the passage where you want it to appear.
Unless you're doing something more complicated than that, that should cover just about everything you need to know to make what you described.
Hope that helps! :-)