Any field is available globally. I think the solution to your problem is to use the tiddler widget to set the currentTiddler variable.
Putting {{!!smoking_status}} in a tiddler will always reference the smoking_status field of the containing tiddler. So I think it is what you are describing. If you want to reference other tiddlers than you can transclude the form in another tiddler, or use the tiddler widget like this:
<$tiddler tiddler=TiddlerToModify>
<$transclude tiddler=FormTiddler/>
</$tiddler>
Then if form tiddler has the code you have in your example it will affect the field smoking_status field of TiddlerToModify, not the form tiddler. You can also do this in lists.
I have some stuff about how lists work with this written up
here, now that I have moved I will hopefully get around to expanding the learning tiddlywiki section of the site.