Contributing to module radiologydcm4chee

@ipadawan I mean that currently you cannot set the “Scheduled Station AE Title” from the radiology module. Its because you cannot enter a location when creating a new radiology order. And this location would need to go in the order message which asks the PACS to put this new order into its modality worklist. Its definitely something that would be useful, but its a feature since its not yet implemented. Therefore I would not prioritize it, since I think its more important to get the module stable, tested and up to date first. But after that for sure :smile:

To your question: When an MPPS is received by the radiology module it gets written into the mpps folder by a third-party tool dcm4chee2 dcmof (dicom order filler).

The dcmof gets started when you start the radiology module see: https://github.com/openmrs/openmrs-module-radiologydcm4chee/blob/master/api/src/main/java/org/openmrs/module/radiology/Activator.java

dcmof is listening for the MPSS forwarded by dcm4chee and writes them to the filesystem. The exact location is close to DicomUtils.writeMpps(, its done by store(f, data); https://github.com/openmrs/openmrs-module-radiologydcm4chee/blob/master/api/src/main/java/org/dcm4che2/tool/dcmof/MPPSSCP.java

So the basic flow is 1 - Order Creation (Radiology Module) 2 - Order message HL7 ORM^O01 gets sent to dcm4chee (Radiology Module) 3 - dcm4chee creates worklist entry 4 - dcm4chee forwards MPPS it gets sent from modalities 5 - dcmof receives MPPS writes it to the filesystem and orders performed status gets updated (Radiology Module)

And for puppet: With puppet you can write code to automate the installation of your IT infrastructure. I wrote some code to automate the installation of dcm4chee with openmrs and the radiology module, so I can quickly set up a fresh server to test changes I make to the module. As soon as I have this code cleaner I will let you and others know and make it available on github :sunny:

Great that you would like to join! Have you installed maven? This way you could build the latest code from the repository, build and test it.

1 Like

Great infos. Thank you so much… Now I need time to study!!! :slight_smile:

@sunbiz no problem, I understand.

added another PR (replacing study.oderId with study.order), please tell me if anything is unclear as there are quite a few PRs with quite some changes.

all the best :sunny: ivo

Hi Ivo. A scheduler should be able to create order with multiple modality, scanner and exams (selected from a list). In real life (I’m working at university connected to hospital) patient need many exams (t1, t2, flair… with/without mdc… And so on), in different parts of body, probably in several scanners (3T, 1.5T, Eco, tac, RX…). So, from a single mask, multiple dicoms. I definitely think that feature is essential for effective management of Radiology orders. …We need to talk about… :coffee:

Hi Riccardo,

yes you are totally right, this is what we want to end up with :slight_smile:

I am trying to get the workflow close to whats described by IHE Radiology Technical Framework and Code Mapping in IHE Radiology Profiles. I think before having order map in a 1-n relation to requested procedures/studies (plus 1-n scheduled procedure steps) we need to properly model a requested procedure. If you look at the current state of the model the requested procedure Code Value, Coding Scheme Version, Code Meaning are not set in the modality worklist. So you cannot enter for example procedures from Radlex when you create a new order. The only thing you can do now is to enter order instructions which ends up in the Requested Procedure Description/Scheduled Procedure Step Description.

I would get that right before entering multiple procedures at once. But then of course :smiley:

dear @sunbiz would you be able to check out some of the PRs the coming weekend? thanks a lot :smile:

dear @sunbiz, @ipadawan and everybody else interested in the radiologymodule!

I wrote some puppet modules to automate the installation of dcm4chee and openmrs. I put all together in a sample project: https://github.com/teleivo/puppet-openmrs-radiologydcm4chee

You would need to have vagrant and virtualbox installed and then simply execute:

git clone https://github.com/teleivo/puppet-openmrs-radiologydcm4chee.git
cd puppet-openmrs-radiologydcm4chee
vagrant up

This will install VM with Ubuntu 14.04 64bit, mysql, tomcat6 + openmrs 1.9.7 and dcm4chee 2.18.0 with DICOM viewer weasis deployed. There are some manual steps you need to do to finish configuration of openmrs, dcm4chee please check the readme for it.

I hope it helps us in developing and testing the module and to help lower the barrier for others who would like to get involved :smile:

Please try it out and let me know what was good/bad.

NOTE: be aware that the Vagrantfile defines 3GB for the VM, so please reduce it and also the jvm parameters in hieradata/common.yaml if you do not have as much to spare :wink: And currently it will only work if your machine has 64bit virtualization.

I will be improving this project and the puppet modules, your feedback is most welcome!!!

1 Like

Great!.. Sorry for dummy question: mysql password?

No worries, I have to polish the readme :wink: By default It will create mysql db

User/Password/Dbname

openmrs/openmrs/openmrs dcm4chee/dcm4chee/pacsdb

For dcm4chee you can check the puppet modules params.pp which contains the default params. For openmrs and tomcat they should be in the init.pp

Don’t hesitate to ask, its great to get feedback on the troubles :slight_smile:

Ops… openmrs, password, root, mysql, mypassword, strongpassword… I got:

???Error executing sql: create database if not exists ? default character set utf8 - Could not create connection to database server. Attempted reconnect 3 times. Giving up.??? Unable to create the database. The password might be incorrect or the database is not started.

at

http://localhost:8080/openmrs/initialsetup

Ricardo you need to choose create database with existing user openmrs and password openmrs

And then also choose the non-root user openmrs with password openmrs to connect to the db.

The wizard will then create the database for openmrs. The user openmrs exists already.

dear @sunbiz I just added PR

which adds .travis.yml to set up automatic builds on travis-ci.org like its done in the openmrs-core.

Are you allowed to flip the switch on travis-ci.org for the openmrs repository of radiologydcm4chee ?

If so it would be great if you could enable it, so that once you merge this PR we get automatic builds on future PRs :sunny:

1 Like

dear @sunbiz, is there somebody else you could refer me to which could look at my PRs? The last merged PR was on March 7 and I have quite a few piled up now and would like to know how we could proceed. Thank you!

I am sorry @teleivo, it fell off my radar. I’ll review them sometime today

1 Like

@teleivo, the problem with the merging is that all the commits were made to the master branch and that means all the commits after the pull request are added as part of the merge. I would appreciate if you made feature branches and then sent pull requests. That would make reviewing the code much easier and I can figure out all the changes that are being made

@sunbiz, I did make a feature branch for every pull request. I think it seems like the commits are all made to master because each of my feature branches is built on top of the feature branch before it. So every PR includes the commits from the PR before it. I did this because for example commit like:

add test resource infrastructure to api (b8bbcd123)

which is included in PR #10 (first open PR at the moment) is needed by all my PRs because they add unit tests to the api. Thats why I always made a feature branch for a PR built on top of the latest feature branch. There are more examples of such dependencies.

Shouldnt that work if we just work our way from PR #10 up one by one? If any of the PRs needs some more work Ill do it and incorporate that in to the open PRs after that?

dear @sunbiz how do we proceed?

PR #10 contains unit tests for the generated HL7 message via createHL7message where you can see the actual HL7 message it produces, see

Finally I used:

/usr/bin/mysqladmin -u root password ‘root’ :sob:

@ipadawan what are the steps you used?

in the openmrs wizard:

  1. you need to choose “create database with existing user” openmrs and password openmrs

  2. And then also choose the non-root user openmrs with password openmrs to connect to the db.

The wizard will then create the database for openmrs

if you ssh into the machine, you can check with

mysql -uopenmrs -popenmrs

that the db user ‘openmrs’ exists already but that the db ‘openmrs’ does not, it will be created by the wizard.

hope this helps :smile:

dear @ipadawan did you manage to finish the installation?

I updated the readme. Please check it for how to finish installation in the OpenMRS wizard:

hope this makes it clear.