Mike,

I'm looking forward to discussing on the design call.

Dave,

I like the way you're thinking, but I wonder if, since you're restricting
the html forms to view-only mode, it might not be easier/more performant to
do something new, based on groovy templates for this. (The code required is
pretty simple, and can possibly be copied from 2.x.)

Also, I think that the refactoring Mike is talking about doing will make
this approach work a lot better. Currently, actually authoring all the
logic rules you'll need will be annoying.

-Darius

On Mon, Nov 14, 2011 at 1:36 PM, Friedman, Roger (CDC/CGH/DGHA) (CTR) <
[email protected]> wrote:

> I am moving into logic.  I am using it to determine the reference ranges
> for certain lab tests, which are based primarily on age and sex but can
> also be based on various demographic (e.g. ethnicity) or health status
> (e.g. pregnancy) variables.  I will be running multiple rules against a
> single patient, but not many at a time.  My main concern is that existing
> high level features (logic expression definition, persistence and
> evaluation) remain available.  This is a very small piece of a very large
> app and it is unlikely that people experienced with this aspect of OpenMRS
> will be available.
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Dave Thomas
> Sent: Monday, November 14, 2011 4:14 PM
> To: [email protected]
> Subject: Re: [OPENMRS-DEV] The future of Logic
>
> Hi.  My biggest push into using logic was during an early draft of the
> mdrtb module version 2.0, in which I used it in a controller to create a
> custom patient summary.  The complaints about logic listed by Mike
> basically reflect the experience.
>
> However, I've been thinking about how to create robust but generic
> templates for patient summaries, for ANY clinical area quickly.  And i
> think one very powerful answer is htmlforms, restricted to 'view'
> mode, with logic tokens being referenced through the htmlformentry tags.
>  If this was fast and robust, this would be EXTREMELY useful if I felt like
> it wasn't going to be like going down the rabbit hole...
> Is my impression about the state of things incorrect?
>
> d
>
> On 11/14/11, Michael Seaton <[email protected]> wrote:
> > Hi all,
> >
> > Not much of a resounding response to this :), but I would like to move
> > it forward.  Can we discuss it during the Design Forum this week?
> >
> > Thanks,
> > Mike
> >
> >
> > On 11/09/2011 10:23 PM, Michael Seaton wrote:
> >> Hi all,
> >>
> >> I wanted to pick up a thread on the future of Logic that we spent
> >> some time discussing during the Developers Forum on October 27
> >> <https://wiki.openmrs.org/x/5oamAQ>.
> >>
> >> The overall consensus on the call was that /"Logic is too complicated.
> >> We wish there were a simpler implementation, that were easier to
> >> adapt to individual needs.  We wish it were more rigorously tested,
> >> including performance testing"/.
> >>
> >> *Anyone that cares about preserving Logic as it currently exists, or
> >> wants to see it change in a specific way, please read further*
> >>
> >> Specific users of Logic have communicated the following needs:
> >>
> >>     * Tammy and her team require more control over the current Logic
> >>       implementation, and better testing around it, so that future
> >>       upgrades do not cause serious bugs and performance degradation
> >>     * Win and Tammy need implementations of Logic that are optimized
> >>       for running lots of rules for individual patients at a time
> >>     * Mike needs an implementation of Logic that is optimized for
> >>       running a single rule for lots of patients at a time as well
> >>     * Mike wants to be able to choose to not use the existing Logic
> >>       implementation in favor of an implementation provided by the
> >>       Reporting module
> >>
> >> To accomplish this, the following high-level refactoring steps are
> >> being considered:
> >>
> >>     * Reduce and simplify the number of interfaces and interface
> >>       methods that Logic exposes in OpenMRS core
> >>     * De-couple the existing Logic Module in such a way that it is one
> >>       of many possible "Rule Providers" that can plug into this
> >>       lighter-weight core framework
> >>     * Remove, if possible and practical, the need to have a "required"
> >>       Logic module installed
> >>
> >> Specifically, we are considering an approach that would reduce the
> >> core Logic interfaces to something like:
> >>
> >>     interface LogicContext;
> >>
> >>     interface Result; (classes DateResult, NumberResult,
> >> ListResult...)
> >>
> >>     interface Rule {
> >>       Set<RuleParameterInfo> getParameterInfo();
> >>       Class<? extends Result> getReturnType();
> >>       Result evaluate(Integer patientId, Map<String, Object>
> >>     parameters, LogicContext context);
> >>     }
> >>
> >>     interface LogicService {
> >>       public Result evaluate(Rule rule, Patient patient, Map<String,
> >>     Object> parameters, LogicContext context);
> >>       public Map<Integer, Result> evaluate(Rule rule, Cohort cohort,
> >>     Map<String, Object> parameters, LogicContext context);
> >>     }
> >>
> >> I would like for this to spur the following potential activities:
> >>
> >>     * Give anyone who has not yet been aware of these discussions, or
> >>       who does not agree with this approach, an opportunity to weigh
> >>       in and get involved in the process
> >>     * Make a plan to put this topic onto one or more future Design
> >>       Forum calls, in order to agree upon the revised design, make
> >>       tickets, and establish an owner for moving it forward.
> >>     * Publicize when this Design Forum will occur so that interested
> >>       parties can be involved as desired
> >>
> >> Thanks!
> >> Mike
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> ---
> >> Click here to unsubscribe
> >> <mailto:[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]
> >
>
> _________________________________________
>
> 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]
>
> _________________________________________
>
> 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]
>

_________________________________________

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]

Reply via email to