To convert the given problem description into a symbolic representation and then into Gurobi code, we first need to identify the variables, objective function, and constraints.

Let's denote:
- $x_1$ as the milligrams of vitamin B6,
- $x_2$ as the milligrams of vitamin B2, and
- $x_3$ as the milligrams of calcium.

The objective function is given as: 
\[3.09 \cdot x_1^2 + 8.41 \cdot x_1 \cdot x_3 + 2.01 \cdot x_3^2 + 8.39 \cdot x_3\]

Constraints are:
1. The immune support index of milligrams of vitamin B6 is 16: $x_1 = 16$
2. Milligrams of vitamin B2 have an immune support index of 20: $x_2 = 20$
3. The immune support index of milligrams of calcium is 22: This constraint seems to be about the properties of calcium but does not directly translate into a specific equation without more context on how these indices interact in the problem. However, based on the provided information, it's likely meant to inform the total combined immune support index constraints.
4. The total combined immune support index from milligrams of vitamin B2 and milligrams of calcium has to be greater than or equal to 52: $20 \cdot x_2 + 22 \cdot x_3 \geq 52$
5. The total combined immune support index from milligrams of vitamin B6 plus milligrams of vitamin B2 plus milligrams of calcium has to be at minimum 52: $16 \cdot x_1 + 20 \cdot x_2 + 22 \cdot x_3 \geq 52$
6. The total combined immune support index from milligrams of vitamin B6 plus milligrams of calcium must be equal to or less than 101: $16 \cdot x_1 + 22 \cdot x_3 \leq 101$

Given these constraints and the objective function, we can represent the problem symbolically as:
```json
{
    'sym_variables': [('x1', 'milligrams of vitamin B6'), ('x2', 'milligrams of vitamin B2'), ('x3', 'milligrams of calcium')],
    'objective_function': '3.09 * x1^2 + 8.41 * x1 * x3 + 2.01 * x3^2 + 8.39 * x3',
    'constraints': [
        'x1 = 16',
        'x2 = 20',
        '20*x2 + 22*x3 >= 52',
        '16*x1 + 20*x2 + 22*x3 >= 52',
        '16*x1 + 22*x3 <= 101'
    ]
}
```

Now, let's implement this problem in Gurobi Python:
```python
from gurobipy import *

# Create a new model
m = Model("Optimization_Problem")

# Define variables
x1 = m.addVar(vtype=GRB.CONTINUOUS, name="milligrams_of_vitamin_B6")
x2 = m.addVar(vtype=GRB.INTEGER, name="milligrams_of_vitamin_B2")  # Must be a whole number
x3 = m.addVar(vtype=GRB.CONTINUOUS, name="milligrams_of_calcium")

# Objective function
m.setObjective(3.09 * x1**2 + 8.41 * x1 * x3 + 2.01 * x3**2 + 8.39 * x3, GRB.MINIMIZE)

# Constraints
m.addConstr(x1 == 16)
m.addConstr(x2 == 20)
m.addConstr(20*x2 + 22*x3 >= 52)
m.addConstr(16*x1 + 20*x2 + 22*x3 >= 52)
m.addConstr(16*x1 + 22*x3 <= 101)

# Optimize model
m.optimize()

# Print solution
for v in m.getVars():
    print('%s %g' % (v.varName, v.x))

print('Obj: %g' % m.objVal)
```