A starting point could be the following, which can be probably automated even further:
\documentclass[border=10mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning}
\usepackage{etoolbox}
\newlength\targetmaxheight
\setlength{\targetmaxheight}{3cm}
\newcounter{targetmaxvalue}
\setcounter{targetmaxvalue}{25}
\newlength\targetxsep
\newlength\targetysep
\setlength{\targetxsep}{1.5cm}
\setlength{\targetysep}{-.25cm}
\begin{document}
\begin{tikzpicture}[
source/.style={
matrix of nodes,
nodes={
draw
}
},
target/.style={
draw,
minimum width=1cm,
minimum height=\targetmaxheight,
}
]
\let\mymatrixcontent\empty
\foreach \s in {S-A,S-B,S-C,S-D}{%
\xappto\mymatrixcontent{ \s \\ }
}%
\node[source] at (0,0) (s) {
\mymatrixcontent
};
\node[target, above left=\targetysep and \targetxsep of s] (t-1) { T-A };
\node[target, above right=\targetysep and \targetxsep of s] (t-2) { T-B };
\node[target, below right=\targetysep and \targetxsep of s] (t-3) { T-C };
\node[target, below left=\targetysep and \targetxsep of s] (t-4) { T-D };
\draw (s-2-1) to[in=0, out=180] ([yshift={\targetmaxheight*(21.31/\value{targetmaxvalue})}]t-1.south east);
\draw (s-1-1) to[in=180, out=0] ([yshift={\targetmaxheight*(1.52/\value{targetmaxvalue})}]t-2.south west);
\draw (s-3-1) to[in=180, out=0] ([yshift={\targetmaxheight*(11.18/\value{targetmaxvalue})}]t-3.south west);
\draw (s-4-1) to[in=0, out=180] ([yshift={\targetmaxheight*(12.63/\value{targetmaxvalue})}]t-1.south east);
\draw (s-3-1) to[in=0, out=180] ([yshift={\targetmaxheight*(7.92/\value{targetmaxvalue})}]t-4.south east);
\end{tikzpicture}
\end{document}

With a bit more automation (probably not the most elegant way to do this):
\documentclass[border=10mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning}
\usepackage{etoolbox}
\newlength\targetmaxheight
\setlength{\targetmaxheight}{3cm}
\newcounter{targetmaxvalue}
\setcounter{targetmaxvalue}{25}
\newlength\targetxsep
\newlength\targetysep
\setlength{\targetxsep}{1.5cm}
\setlength{\targetysep}{-.25cm}
\begin{document}
\begin{tikzpicture}[
node distance={
\targetysep and \targetxsep
},
source/.style={
matrix of nodes,
nodes={
draw
}
},
target/.style={
draw,
minimum width=1cm,
minimum height=\targetmaxheight,
},
connect/.code args={(#1) to (#2) at #3}{
\path (#1);
\pgfgetlastxy{\tempsx}{\tempsy}
\path (#2);
\pgfgetlastxy{\temptx}{\tempty}
\draw (#1) to[
in={\ifdim\tempsx<\temptx 180\else 0\fi},
out={\ifdim\tempsx<\temptx 0\else 180\fi}
] ([yshift={\targetmaxheight*(#3/\value{targetmaxvalue})}]#2.south \ifdim\tempsx<\temptx west\else east\fi);
}
]
\let\mymatrixcontent\empty
\foreach \s in {S-A,S-B,S-C,S-D}{%
\xappto\mymatrixcontent{ \s \\ }
}%
\node[source] at (0,0) (s) {
\mymatrixcontent
};
\node[target, above left=of s] (t-1) { T-A };
\node[target, above right=of s] (t-2) { T-B };
\node[target, below right=of s] (t-3) { T-C };
\node[target, below left=of s] (t-4) { T-D };
\path[connect={(s-2-1) to (t-1) at 21.31}];
\path[connect={(s-1-1) to (t-2) at 1.52}];
\path[connect={(s-3-1) to (t-3) at 11.18}];
\path[connect={(s-4-1) to (t-1) at 12.63}];
\path[connect={(s-3-1) to (t-4) at 7.92}];
\end{tikzpicture}
\end{document}
The result looks the same as above.