|
OnkoDICOM Introduction to DICOM and PyQt Project
|
|
|
|
In this project you will be developing functionality required by OnkoDICOM. You will also be gaining an understanding of the advantages of having discovery projects, that is you can discover how to create functionality and experiment in a much smaller project without the overhead of the large project. When you are happy you have a good implementation of the functionality required then you can implement this in the larger parent project, in this case OnkoDICOM.
|
|
|
|
You are to write a PyQt5 programme which starts and determines if there is a preferences-configuration record. If there is then it will read the configuration and continue. The kind of information stored in the config is, for example, the path to the default directory containing DICOM files, etc. The storage is held in a SQLite database.
|
|
|
|
The default directory is a hidden directory in the user home directory. This must work in Linux, Windows and Mac OS.
|
|
|
|
The programme then proceeds to open a DICOM file in a fault tolerant way. A DICOM file may contain several elements. The programme must determine if the following elements are present, listfromAndreworStuart. Where an element is not present then the programme must seek guidance from the user as to how to proceed.
|
|
|
|
You will note that listfromAndreworStuart is not defined. During the weekly meetings you have the opportunity to define specifics of functional requirements. You will find that the specifics may change as the project evolves and you get feedback from the Product Owner. This will assist you to develop ways to manage your tree of tickets and how the tickets should interrelate.
|
|
|
|
Every commit to the revision control must reference a ticket. This project is getting you accustomed to recording everything in tickets. To understand a ticket is a single task with a clear "done" definition.
|
|
|
|
You will be provided guidance in creating the tickets.
|
|
|
|
All functionality must be unit tested. Unit testing must be included in the "done" definitions.
|
|
|
|
The Product Owner is responsible for the Product Backlog, that is a list of functionality then Product Owner wants the programme to do. But the team is responsible for the items to be achieved in each sprint, or period of time for a set of functionality to be accomplished. The team uses tickets to communicate with each other to show work being completed it also assists in breaking down the work into "tiny chunks", that is items which take less than one day to achieve, to the point that the "done" or completed definition is met.
|
|
|
|
When the DICOM file is opened then the image should be shown on the screen. Nothing needs to be done with the image once it is displayed on the screen. A PyQt5 programme that displays a DICOM image is the end result.
|
|
|
|
Teams must comply with the python coding standard: https://www.python.org/dev/peps/pep-0008/
|
|
|
|
Must comply with the structure standard: https://doc.qt.io/qt-5/model-view-programming.html
|
|
|
|
Teams should adhere to the OnkoDICOM naming convention: https://redmine.didymodesigns.com.au/projects/onko/wiki/Naming_Convention in order to become accustomed to the style used throughout the OnkoDICOM codebase.
|
|
|
|
The bare minimum requirements to accomplish this are the python packages:
|
|
PyQt5
|
|
pydicom
|
|
cython
|
|
numpy==1.19.3
|
|
|
|
Some concepts you must be able to show some understanding of are:
|
|
|
|
SCRUM
|
|
https://www.agilestrategicsolutions.com/wp-content/uploads/2014/09/Scrum-in-a-Nutshell.pdf
|
|
|
|
Writing good tickets
|
|
https://medium.com/@Carmichaelize/writing-better-user-stories-and-bug-tickets-3cb5165e7db
|
|
https://cantina.co/three-quick-tips-to-writing-better-jira-tickets/
|
|
|
|
GitHub Flow
|
|
https://guides.github.com/introduction/flow/
|
|
https://medium.com/swlh/git-flow-vs-github-flow-3ad44bd46407
|
|
|
|
Python's Virtual Environments
|
|
https://towardsdatascience.com/virtual-environments-104c62d48c54
|
|
|
|
Qt's Model/View architecture
|
|
https://doc.qt.io/qt-5/model-view-programming.html
|
|
https://stackoverflow.com/questions/5543198/why-qt-is-misusing-model-view-terminology
|
|
|
|
Virtual machines (Virtualbox is a good example for you to try)
|
|
|
|
Troubleshooting (which you will have to do a lot of)
|