The fork expression evaluation is done through a javascript eval() call, so you must use a proper javascript syntax. Equality operator in javascript is "==", so you should go with {fork:{#hasappointment}==1,12,11}. If you ever tried to do equality comparison with strings, things would be a bit more complicated, but still feasible : {fork:'{#hasappointment}'=='yes',12,11}. Notice the quotes around the variable expression and around the "yes", they are mandatory otherwise the eval() function will think those strings are javascript variables, and crash. Note that double quotes would work too.
I thought about adding a command like "goto sequence 2", but somehow never went with it. It's fairly simple though, it's basically the fork command all over again but with no evaluation, and only one possible "path". You can even do it with the fork command as it is. Something like {fork:1,2} would jump back to sequence 2. Or {fork:1,"dialogue2"} would start the "dialogue2" dialogue from the dictionary. The "1" there is basically an "always true" condition, thus no "else" part is necessary.
Hopefully my answers will help you continue your awesome game!