Project: Report Generator for EHR

ehr
gsoc2018-project
gsoc2018

(Tigpezeghe Rodrige Kwenchu) #1

@pri2si17 @aethelwulffe @teryhill @tony I’m opening this thread for discussions and way forward on the report generator.
Read the overview of the project here: https://summerofcode.withgoogle.com/dashboard/project/4707875692216320/details/


(Terry Hill) #2

Can you put a check list of the major items for the project here ?


(Tigpezeghe Rodrige Kwenchu) #3

Below is a list of the major modules for the project. These items can change depending on the discussion we have during this period. At least the items below is how I see the project.

  1. User-friendly interface with components. (Components are the draggable elements that represent particular report columns).
  2. Adding drag and drop features to components.
  3. Generating queries based on user’s chosen components.
  4. Formatting and rendering report data.
  5. Support for various output types (pdf, csv).
  6. Documentation of the tool.

WELCOME to your all your ideas, questions and contributions.


(Tigpezeghe Rodrige Kwenchu) #4

What do you all think of creating a new Laravel EHR project to track the changes made by @pri2si17 and me. I’m just saying this to get your thoughts. @aethelwulffe @teryhill @tony

I know it’s a little more work checking different places for changes, but what do you think?


(Tigpezeghe Rodrige Kwenchu) #5

This is the link to my first blog post for GSoC18. https://medium.com/@tigrodrige/gsoc-2018-the-ball-is-rolling-with-librehealth-fb5838cc7492

Link to second article: https://medium.com/@tigrodrige/2-gsoc18-at-librehealth-community-bonding-ends-coding-starts-e815c94499d4


(Tigpezeghe Rodrige Kwenchu) #6

@pri2si17 @teryhill @aethelwulffe I wish to know how we’ll display the draggable components in the report generator. I need you all to pour your ideas here. I need this to keep moving with coding.

This is what I’m thinking. The reports have particular tables and columns from which they’re generated. So we can sort those tables and columns, and create ‘table components’ which have ‘column draggable components’ which appear as dropdown list under the particular table. This is going to be lots of components to display. We’ll use tooltips to show more information for a particular column. This route is painful, but this is what I have for now.

Terry suggested we use the lists in the system to create the draggable components. In his method it’ll be easy to get the query that we’ll need to execute at the back. ‘Wise Gramps Terry’ explains that we’ll have draggable components like this:

  • Patient_Full :patient_data|fname|mname|lname

  • Patient_Last_first :patient_data|lname|fname

  • Patient_full_reverse :patient_data|lname|fname|mname

Patient_Full, Patient_Last_first and Patient_full_reverse will be the draggable components (and will appear as title in the list). patient_data is that table, that has columns fname,lname, mname. the user will choose the component in any order that suits them.

The lists in the system have fields, id, title, order, default, active which are mandatory. We’ll fill these fields accordingly. ‘The wise man’, @teryhill says we’ll add fields; notes, toggle_1 and toggle_2.

  • notes is something like this: patient_data|lname|fname|mname. This will give the field the generator needs to generate a report.
  • toggle_1 : sorts each column depending on the value of the checkbox
  • toggle_2: From my understanding, this will act the same as ‘ACTIVE’. Except Terry has another thing in mind.

I’ve tried to tell you how @teryhill and me are thinking. @pri2si17 and @aethelwulffe any ideas? You will understand these better if see the interface I’ve made for the generator.


(Priyanshu Sinha) #7

Hi @Trodrige,

  • The reports have particular tables and columns from which they’re generated.

What I think is majority of reports will use same column and fields with some modifications. Correct me if I’m wrong.

Now come to implementation, what I think is separate your generator in two parts :

  • Playground : This is area where you will bring your draggable components and arrange to generate report.
  • Toolbox : This contains all your draggable components.

First make a list of all common tools needed in report generation, and give them certain unique ids. There should be option for creating custom tools, and you will associate each custom tool generated with uuid. I don’t think this list is going to be long.

Now from database perspective, I would suggest to use a new table, as you are not mingling with current code base and this is your separate module, so this should have its own database/tables.

Now save data in table, for every value and link that with the user creating it, in another table. That’s how I think.

Note : I am not able to run your code as my internet services are down and using mobile hotspot.

I would like to have opinion of @teryhill @aethelwulffe @tony


(Tigpezeghe Rodrige Kwenchu) #8

@pri2si17 do you mean draggable components here? That is draggable components = common tools? If I get you clearly, you want that we use 2 databases, the main database you started already, and a report generator specific database.

Note:

  • The list of draggable components will be stored in the list_options table found in the main database.
  • The reports that are generated will get the data from the main database. This includes the user to whom a particular custom draggable component or report format is tied to. Of course, users exists in the main database.

(Priyanshu Sinha) #9

do you mean draggable components here? That is draggable components = common tools?

Yes

If I get you clearly, you want that we use 2 databases, the main database you started already, and a report generator specific database.

I would have to research about it, but I think it is a good practice to separate module wise database. Will let you know after some research.


(Tigpezeghe Rodrige Kwenchu) #10

This is the link to my 3rd blog post: https://medium.com/@tigrodrige/3-gsoc18-at-librehealth-phase-1-of-coding-period-4dfcb10728f5


(Tigpezeghe Rodrige Kwenchu) #11

Link to my 4th blog post: https://medium.com/@tigrodrige/4-gsoc18-at-librehealth-report-generator-logic-f5aba3e6672