Problem with two layers: how to predict?
This problem is best addressed with discrete-event, stochastic simulation modeling.  The prediction you get from such a model is a probability distribution on the surgery being canceled.  

It's easy to code up such a model given your problem statement.  You need:


A boolean function for each kind of surgery, which, given the cast of characters and skill sets as input, determines True/False if the surgery can proceed.
A probability distribution for the appearance of each kind of character, when scheduled.
An object which is initialized with the schedule.


The idea is to do this check (surgery/surgery canceled) many times, thereby growing a set of outcomes for each policy you wish to explore.

If you don't want to roll your own, there are packages for many languages such as SimPy for Python and Simmer for R.

The nice thing about discrete event simulation is that you don't need to make any simplifying assumptions about probabilities, and the business logic can be arbitrarily complex.  For example, if the surgeon and one of the nurses are having an affair, the chance that one cancels on the same day as the other can be increased.