\begin{tikzpicture}[
    font=\footnotesize,
    node distance=12mm,
    box/.style={draw, rounded corners, minimum width=22mm, minimum height=10mm, align=center},
    smallbox/.style={draw, rounded corners, minimum width=18mm, minimum height=8mm, align=center},
    arrow/.style={->, thick}
]

% --- Inputs ---
\node[box, fill=blue!10] (wsi) {Whole Slide\\Image (WSI)};
\node[box, fill=green!10, right=15mm of wsi] (mri) {MRI\\Volume};

% --- Encoders ---
\node[box, fill=blue!20, below=10mm of wsi] (wsi_enc) {WSI Encoder};
\node[box, fill=green!20, below=10mm of mri] (mri_enc) {MRI Encoder};

% --- Feature outputs ---
\node[smallbox, fill=blue!30, below=10mm of wsi_enc] (wsi_feat) {WSI Feature\\Vector};
\node[smallbox, fill=green!30, below=10mm of mri_enc] (mri_feat) {MRI Feature\\Vector};

% --- Fusion (centered under wsi_feat and mri_feat) ---
\node[box, fill=orange!20, below=10mm of $(wsi_feat)!0.5!(mri_feat)$] (fusion) {Fusion Layer};

% --- Survival head ---
\node[box, fill=red!20, below=10mm of fusion] (surv) {Survival Prediction Head};

% --- Output ---
\node[box, fill=red!30, below=10mm of surv] (out) {Risk Score /\\Recurrence Probability};

% --- Straight arrows ---
\draw[arrow] (wsi) -- (wsi_enc);
\draw[arrow] (wsi_enc) -- (wsi_feat);

\draw[arrow] (mri) -- (mri_enc);
\draw[arrow] (mri_enc) -- (mri_feat);

% clean straight arrows INTO the fusion block
\draw[arrow] (wsi_feat) -- ($(fusion.north west)!0.5!(fusion.west)$);
\draw[arrow] (mri_feat) -- ($(fusion.north east)!0.5!(fusion.east)$);

% down arrows
\draw[arrow] (fusion) -- (surv);
\draw[arrow] (surv) -- (out);

% --- Labels ---
\node[above=0mm of wsi] {\textbf{Pathology}};
\node[above=0mm of mri] {\textbf{Radiology}};
\node[right=0mm of fusion] {\textbf{Multimodal Learning}};

\end{tikzpicture}
