Predicting three related scores with one joint model
Do you have a labeled set? Any algorithm can do it in a supervised manner, as long as you have enough labeled data to train it on.

A tree-based model (Random Forests Classifier for instance) could do really well on this task, especially since you have categorical data. All you need to do is encode the data as numbers (for instance 0: male, 1: female, 2: transgender) and feed it into your model (applying random splits and cross-validation and all that). 

In case you don't, then the best you can do without collecting new data is to find clusters of related patients in your dataset. The same rules for encoding variables apply, although you may have to pay some attention to how you scale your variables since clustering algorithms are sensitive to relative scaling of features. This happens because most clustering algorithms cluster data using distance metrics which lose meaning when you are dealing with categories. See this for more info on clustering categorical data: