Inspiration 💡

We are dedicated to healthcare and open source solutions. Dicom is a widely used standard in healthcare to store and transmit medical imaging information and related data. So it was an easy choice. When we check the code of CORTX, we realized, there is need for a basic Elasticsearch integration as well, since CORTX has a lot of possibilities, but those really depend on the searching functionality. Any cloud service can store data, but searching through the metadata can be a great advantage.

What it does ❓

Cortx_dicom is a dicom integration into Seagate's CORTX server in Python. Handling dicom files is based on pydicom. It has 5 major functionalities:

  • collecting metadata [ cortx_dicom and pydicom ]

  • managing data [ S3 ]

  • searching [ Elasticsearch ]

  • warning about potential legal and data risks [ cortx_dicom ]

  • removing protected health information from dicom [ pydicom ]

We already integrated 4840 dicom tags into our system as the base of the labeling method. For the legal parts, we implemented the warning features for 256 potentially risky tags.

How we built it 🔹

We installed CORTX-VM locally. Frankly, we installed it three times, since we want to test its functionality and flexibility. The scope of the third installation was out of this hackathon, since we really like those software and we will use it after the hackathon. For VM we really built a computer from parts.

We installed boto3 and elasticsearch. The code is written in Python. We used Spyder and Atom for the writing, Spyder and Command line for testing.

We created examply.py to demonstrate the functionality of the code. The code is well documented with docstrings.

Challenges we ran into 🏆

Finding proper dicom files was not easy, since most of them contained some restrictions in the license. For testing purposes, we had to find files that can be attached to the submission.

At first sight CORTX-VM was hard to understand. That’s why we decided to check its github to examine the code. After that, everything was clear. We made a step by step guide to us based on.

Our guide is based on the original tutorial.

We used VMWare’s VirtualBox to run CORTX-VM. It is very important to consider the following things:

  • The default CPU settings is 8 cores, you might not have that much, we definitely don’t have. We experienced that the best practice is, if we leave at least one core for normal workflow. The memory and monitor settings are similar. It's worth considering changing them.

  • Setting in CORTX-VM is not always easy, so if you have the ability to set the VM time to UTC on the host computer, it seems to be a good solution.

  • The default password is opensource! of CORTX-VM. If you ever used other keyboard than English, you might imagine the position of the exclamation sign is not always that obvious. Therefore it worths changing the password right at the beginning. If you are afraid of mistyping the new password you can check it in a new terminal before you log out from the actual session.

  • The name of the folder with ifcfg files is network-scripts instead of network_scripts. It worth setting static IP addresses for all network cards to ensure connection with the VM.

  • By our experience bootstrap.sh will never run till the end from remote.terminal.

  • It’s important to run some commands anytime the VM is started. It worths making a start.sh file with that needed 3 commands.

Accomplishments that we're proud of 😎

  • elasticsearch integration

  • The score of our code is 10.0 / 10.0 by Pylint

  • We installed and used CORTX-VM

  • We made a how to install CORTX-VM documentation

  • The code is well documented with docstrings.

What we learned 📖

  • We learned how to install CORTX-VM.

  • We learned about data schematics and ideas behind Elasticsearch.

What's next for cortx_dicom ⏱

We plan to make new features and a GUI of cortx_dicom. A GUI can help to reach new target audiences such as doctors and nurses. The logic of our dicom integration is easy to understand and staff of hospitals use dicom daily, so a good GUI can be a huge step for cortx_dicom to move forward.

Built With

Share this project:

Updates