RIS Worklist Example

4,007 views
Skip to first unread message

applenostradamus

unread,
May 31, 2013, 10:25:59 AM5/31/13
to fo-d...@googlegroups.com
Hi all, we want to try to implement a RIS Worklist for sending and receive data to/from a modality, using fo-dicom. Is there anybody which already did it ? We can't figure it out how to handle the process from the beginning.
With the modality emulator I see the modality is going to follow this workflow:

C-FIND-RQ to RIS (with the given params) -> C-FIND Response to modality for each patient (loop until results are all sent) -> Association Release.

Code example will be appreciated :)

Thanks!

PS: We can collect all of this information (and many others learned) into a simple .doc or .rtf file and share it as "draft of SDK documentation".

DeLe

unread,
Jun 1, 2013, 11:47:55 PM6/1/13
to fo-d...@googlegroups.com

Works for query level... there's probably a much better way of doing it, this is how I got mine to work.


Start your class like this.

public class DicomSCP : DicomService, IDicomServiceProvider, IDicomCEchoProvider, IDicomCFindProvider


Include this method in the class.

public IEnumerable<DicomCFindResponse> OnCFindRequest(DicomCFindRequest request)

{

    List<DicomCFindResponse> responses = new List<DicomCFindResponse>();
   if (request.Level == DicomQueryRetrieveLevel.Worklist)
   {
       List<DicomDataset> results = GetWorkListResults();
       foreach (DicomDataset result in results)
       {
            result.Add(DicomTag.QueryRetrieveLevel, request.Level);

            result.Add(DicomTag.RetrieveAETitle, CalledAE);

            DicomCFindResponse response = new DicomCFindResponse(request, DicomStatus.Pending);

            response.Dataset = result;

            responses.Add(response);

        }
   }
   responses.Add(new DicomCFindResponse(request, DicomStatus.Success));

   return responses;

}

Message has been deleted

applenostradamus

unread,
Jun 3, 2013, 7:22:37 AM6/3/13
to fo-d...@googlegroups.com
Hi DeLe,

Thanks for your answer.
By the way I can't find out any reference to GetWorkListResults();
Is this something implemented in your code ? I have the latest version from NuGet installed of fo-dicom.

applenostradamus

unread,
Jun 4, 2013, 7:26:29 AM6/4/13
to fo-d...@googlegroups.com
Update: I assumed GetWorkListResults() is a local class method to put some data into the List<DicomDataset> results .
So I figured it out and now it works, but the if statement is not correct.
I'm using the Modality Emulator from DVTk toolkit and when the request comes to get the worklist, the level is Patient (which doesn't match WorkList enum, inside fo-dicom), so I switched the statement to request.Level == DicomQueryRetrieveLevel.Patient and now works well.

I would suggest also, when you build the PersonName DicomTag, to use something like this:
new DicomPersonName(DicomTag.PatientName, DicomEncoding.GetEncoding("ISO 2022 IR 100"), "name^surname")
This will help to handle some special characters (for example Umlaut chars) using the ISO/2022 encoding.

Thanks and Regards.

Toshko Andreev

unread,
Jul 16, 2013, 11:09:36 AM7/16/13
to fo-d...@googlegroups.com
Hey guys, I've been trying to get this working with a GE Voluson E8 but without success so far. The ultrasound keeps telling me its found no items even though I checked that I did in fact return items.

Is there a list a mandatory tags that I must supply? At the moment I only return patient related tags.

Rai Se

unread,
Jul 16, 2013, 11:33:13 AM7/16/13
to fo-d...@googlegroups.com
Hi,

please read this:

ftp://medical.nema.org/medical/dicom/2011/11_04pu.pdf

Part 4

K.6.1.2.2 Modality Worklist Attributes
Good look

Raise

applenostradamus

unread,
Jul 18, 2013, 10:36:05 AM7/18/13
to fo-d...@googlegroups.com
Hi Andreev,
 
Did you find out? I'm interested as well on this US modality.
Message has been deleted

Toshko Andreev

unread,
Aug 2, 2013, 8:55:30 AM8/2/13
to fo-d...@googlegroups.com
I forgot to mention that the above code should be used in conjunction with the code provided by DeLe.

in...@sirioinformatica.it

unread,
Oct 31, 2015, 7:55:02 AM10/31/15
to Fellow Oak DICOM
Hi Nicola (non so se sei italiano, intanto ti scrivo in inglese),
Hi, I'm a beginner in fo-dicom.

I need to use fo-dicom in .net c# and I need to transfer a new study (or update if already exists) into a WorkList of a RIS by DICOM integration. In practice, in a list of PatientID, Date, Age, Exam description, etc., I need to ad a new Row (or update an existing).

I haven't found on Google examples of this case.

Please can you help me with few samples code lines?

Thank's

Nicola Liquori

unread,
Nov 2, 2015, 10:09:28 AM11/2/15
to Fellow Oak DICOM
Hi,

Unfortunately, I'm not involved in this project anymore since 2013, so I am not able to help you in this case.
Sorry.

Regards,
Nicola
Reply all
Reply to author
Forward
0 new messages