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.
Since Twine is based in HTML, you can do just about anything in it that you can do on a web page. The SugarCube documentation should help you out with the basics, if you want to display text, images, or even play sounds (such as how the patient's breathing sounds). If you want to do anything fancier, the the MDN web docs and the W3Schools sites can help with HTML, CSS, and JavaScript coding.
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:
__''Appendicitis''__
[img[AppendicitisPatient.jpg]]
Patient is undergoing an appendix removal. They present with these symptoms:
* Symptom 1
* Symptom 2
* Symptom 3
* Symptom 4
__What do you choose?__
''A.'' [[Observe|Append-Obs]]
''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.
Also, if you want to disable the "Back" button so that they can't undo their decisions, you can put "Config.history.controls = false;" in your story's JavaScript section (accessible through the bottom pop-up menu). (Documentation here)
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! :-)