You can find everything (almost everything !) at “Implementing a Component Based Parallel Distributed Finite Element Solver”, Filip and Fredrick’s master dissertation. In the Appendix B.3 of their dissertation, there are useful subroutines in order to assemble global matrix (coordinate formatted) and change it into compressed sparse row (CSR) formatted matrix. These subroutines are working with the double precision real, however, it is really easy to modify them for double precision complex value (there are a lot of helpful comment !!)
ps) In my test, DMS is 4 times faster than PARDISO.