I think there are two possible approaches to this, depending on who we want driving the workflow:
1. Reporting Module drives workflow * The user would create a new Report within OpenMRS and use this to generate some sort of pre-configured pentaho artifact, which you can open in the pentaho designer. * From the OpenMRS perspective this seems like the right workflow. * I worry that we'll end up with a similar mess to where we ended up with BIRT, having to maintain a module that's tightly tied to an external piece of software. 2. Pentaho Reports drives workflow * The user would create a new Report within Pentaho Reports, and add some OpenMRS data sources to it. * Ideally we'd still want some way to store the generated pentaho artifacts within OpenMRS and expose them from the Run Report screen. * This seems quicker to spike on, and maybe easier to maintain in the long run. -Darius On Mon, Oct 24, 2011 at 11:16 AM, Michael Seaton <[email protected]> wrote: > ** > Hi Gretchen, > > Sorry for not responding earlier - as Darius mentioned, I was in transit > back from Rwanda. From the information you provided below, the approach I > would probably take is as follows: > > * Create a new reporting.pentaho module that depends on the reporting > module and which includes the pentaho libraries in the lib folder > * Create an implementation of your TableModel interface which wraps a > DataSet<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/dataset/DataSet.java> > * Create an implementation of your DataFactory interface which is > configured with: > * A CohortDefinition to define the rows > * A DataSetDefinition to define the columns > * The CohortDefinition and DataSetDefinition each may define parameters > they take in, which you will need to account for > * Initially, probably just hard code an example and see what you can get > working > * Later on, provide a UI that allows the user to select the > CohortDefinition and DataSetDefinition, configure the parameters, and get a > result > * In your module you can create whatever utility methods, webservices, etc > that you need in order to access your implemented interfaces and call the > various reporting services. > > Using the API, I would: > > * Use the > CohortDefinitionService<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/cohort/definition/service/CohortDefinitionService.java>to > get the list of possible CohortDefinitions to choose from, to get an > individual CohortDefinition, or to evaluate a one > * Use the > DataSetDefinitionService<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/dataset/definition/service/DataSetDefinitionService.java>to > get the list of possible DataSetDefinitions to choose from, to get an > individual DataSetDefinition, or to evaluate one > > If you have a means in Pentaho for defining something that can return > multiple TableModels, this is what our > ReportDefinition<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/report/definition/ReportDefinition.java>does. > It takes in a > CohortDefinition<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/cohort/definition/CohortDefinition.java>and > a List of > DataSetDefinitions<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/dataset/definition/DataSetDefinition.java>, > and produces a > ReportData<http://svn.openmrs.org/openmrs-modules/reporting/trunk/src/org/openmrs/module/reporting/report/ReportData.java>, > which is essentially a List of DataSets (your TableModel). > > Happy to discuss further by phone, Skype, email, etc. > > Mike > > > > > On 10/21/2011 08:35 AM, Gretchen Moran wrote: > > Darius,**** > > ** ** > > This is unfortunate. So, if my starting point is to expose these services, > is there some guidance Mike or you could give me on where to begin? Do you > have a pattern for REST services that you would like followed? I definitely > would like to discuss when you all slow down and have a chance to assist. In > the meantime, I’ll plug around the wiki and reporting code and see what I > see J **** > > ** ** > > Gretchen Moran > Enterprise Architect and Technical Account Manager > [image: Pentaho Corporation] <http://www.pentaho.com/> > *The Commercial Open Source Alternative for Business Intelligence* > 5950 Hazeltine National Drive, Suite 340 • Orlando, FL 32822, USA > +1 407 812-OPEN (6736) • 407 517-6206 • 321 848-8207 > Get your free download today at > http://www.pentaho.com<http://www.pentaho.com/download> > . **** > > ** ** > > *From:* Darius Jazayeri [mailto:[email protected] <[email protected]>] > > *Sent:* Wednesday, October 19, 2011 4:09 PM > *To:* Gretchen Moran > *Cc:* [email protected] > *Subject:* Re: Spiking on the Pentaho Report Designer OpenMRS datasource** > ** > > ** ** > > We don't yet have REST web services for this, but that seems like the way > to go.**** > > ** ** > > That could be added directly in the reporting module, allowing you to use > the pentaho designer with OpenMRS as long as you know the url/port.**** > > ** ** > > We would probably also want to create a small "reporting.pentaho" module > that would allow you to run those reports from within the OpenMRS UI.**** > > ** ** > > -Darius**** > > On Wed, Oct 19, 2011 at 10:56 AM, Gretchen Moran <[email protected]> > wrote:**** > > Hi guys, **** > > **** > > In the interest of attracting others who might be interested, I’ve replied > to the list to continue our conversation. Your comments below Darius make > perfect sense and I think represent a feasible and constructive target. If > Mike could work with me to speed up finding the best way to query the > OpenMRS system for the functions you mention, I would be very grateful. ** > ** > > **** > > To give you all a primer on what is available on the Pentaho Reporting SDK > side – **** > > **** > > There are two very small but key interfaces that we will need to implement > to get a Pentaho report to consume a cohort/dataset combination: the > DataFactory interface, which handles interacting with the source of the > data, and the TableModel interface, which is the interface that the engine > expects an implementation of after having queried the DataFactory for data. > **** > > **** > > The DataFactory interface methods all account for parameterization; as > such, as long as our DataFactory implementation processes the parameters > that are handed to it, the engine (and the Report Designer tool) already > recognize and allow parameter definition and pass them along to the engine > that would process the query (which in our case is OpenMRS, which layer I’m > not certain yet). **** > > **** > > Interestingly enough, for a spike or POC, we may not need to implement our > own DataFactory, as the Report Designer already exposes a DataFactory that > is a Java RMI DataFactory. Simply put, you can reference any Java method > that returns a TableModel and use the DataFactory as is, which already has > the UI bits in place in the Report Designer. This isn’t an end product, but > can quickly allow us to test feasibility of the feature set. There is > another, newer DataFactory called the Sequence DataFactory that exposes > similar functionality that I will look into. **** > > **** > > The Pentaho Reporting SDK also has some lower level DataFactories that we > may want to consider extending. There is a HQL DataFactory and an SQL > DataFactory. I mention these because I am not certain at what level or with > what protocol I should be talking to OpenMRS. **** > > **** > > So that leads to my questions:**** > > **** > > Is there a service (http, REST, WSDL, other) that will allow me to retrieve > the results of the functions that Darius lists below? **** > > If not, what is your recommended approach for communicating between a > client tool and the OpenMRS system? HQL? Straight JDBC? **** > > A few hints (as Darius offered J ) as to where to begin to interrogate the > code would be greatly appreciated!**** > > **** > > Thanks so much for your time, **** > > Gretchen**** > > **** > > *From:* Darius Jazayeri [mailto:[email protected]] > *Sent:* Tuesday, October 18, 2011 6:43 PM > *To:* Gretchen Moran > *Cc:* Michael Seaton > *Subject:* Re: Welcome back! Update**** > > **** > > Okay, we can definitely have a brief framing discussion if that would help. > **** > > **** > > My quick thought is that we want to expose some things from the reporting > module. In the report tool you would pick**** > > 1. a cohort definition**** > > 2. a data set definition**** > > **** > > And in pentaho you'd then get a data set with (usually) the cohort > definition as the rows and the data set definition as the columns.**** > > **** > > (For each of those choices you'd need to provide values for any parameters, > and ideally also being able to link them to parameters in the pentaho > report.)**** > > **** > > Mike can point you to the right Java snippets for all these if that would > help...**** > > "list all cohort definitions"**** > > "get the parameters for one particular cohort definition"**** > > "list all data set definitions" **** > > "get the parameters for one particular dataset definition"**** > > "evaluate a cohort definition"**** > > "evaluate a dataset definition against a cohort"**** > > **** > > -Darius**** > > **** > > **** > > **** > > **** > > ** ** > ------------------------------ > Click here to > unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from > OpenMRS Developers' mailing list > > ------------------------------ > Click here to > unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from > OpenMRS Developers' mailing list > _________________________________________ To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to [email protected] with "SIGNOFF openmrs-devel-l" in the body (not the subject) of your e-mail. [mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]
<<image/gif>>

