I disagree. At some point we need move towards a clean and strong HTML base and stop building on legacy code. By continuing to build on old code we really make it difficult to create future improvements/new features/etc. The user may not see a difference, but bringing up the HTML/CSS to today’s standards is in fact new functionality.
New HTML/CSS sounds like a great idea. Bootstrap is a very popular library
to use.
We need to attack this from the core though. With the data, view and
busines logic married into one, the current design pattern for OpenEMR is
highly limiting to create workflows that a clinic may need. It is very
early 1990s, we need to separate the data layer and the view so the
front-end can be made responsive
I disagree. At some point we need move towards a clean and strong HTML
base and stop building on legacy code. By continuing to build on old code
we really make it difficult to create future improvements/new features/etc.
The user may not see a difference, but bringing up the HTML/CSS to today’s
standards is in fact new functionality.
To restate something I’ve said a few times before: It would work best to first create and use an object oriented PHP data model that is invoked as appropriate wherever database access is currently done. That can be done in small pieces that are easily reviewed and brought into the project.
Once that is in place it will be much easier to redo the user interface and/or implement different user interfaces for different client platforms.
I think I am not communicating well. As stated earlier, nobody would object to a shiny interface. But when dealing with large legacy code whose reliability is paramount, if you do not take incremental approach, benefits of your efforts will not be realized by users for several months. At worst if you loose interest after 6 months, your work product will never be released. I realize there is some extra work involved in allowing legacy code to work side by side with new, but that is the price for ensuring business continuity.
I took the time to read this entire thread from the beginning to now. It is a very positive thing to have an updated UI. It will be appreciated by most and not liked by some but that will happen no matter what.
I do agree that the legacy code needs to be brought up to date. It is a matter of who will under take the extensive re-factoring of the major modules that are the heart of this application.
I know it will get done in the future. I have seen a lot of great things happen in the last 3 years I have been working around this community. The community will breed the right environment for someone to come along and desire to make those extensive rewrites to propel the project into the next decade.
Rod Wrote:
It seems that if we ever support inpatient use it will be necessary to specify the time that each service is performed. Then it would be natural to order the line items by that. So I'm not sure this drag-and-drop feature will have lasting value.
What is the critical billing issue anyway?
What I am being told by several of my customers that that the billers can optimize payments and reimbursement if the reorganize the order that charges are listed on the claims. Typically this is highest cost item first, but not always and they want full flexibility.
OpenEMR is not an in-patient tool, but this enhancement is not intrusive if you don’t rearrange the codes they aren’t effected.
I’ve been itching to do this! However, I for some reason though this wasn’t something that was wanted by the community. I agree that would make things a LOT easier in the UI realm.
I make no promises as to how this looks in a UI (I’ve got my style_light.css theme activated on my local instance, I think the old styles are a bit broken. Brady and I discussed a while back that as each page gets modernized we lock that page down (Force the new theme in). Once we’ve gotten all the pages modernized we unlock the themes and users can then develop their own themes based on the new structure. I know it’s not ideal to essentially take away the ability to have custom themes, but it’ll only be temporary, plus it’d be incredibly difficult to attempt to support the old and new structure.
This snapshot is geared more towards the Patient module and the Entity class inside. You can see how it gets implemented in the demographics page - it’s much, much cleaner HTML.
I’m looking at patients.inc and copying/refactoring code that is referenced there into the Entity.php file as I come across it in demographics.php
Setup an AutoLoader to begin to ease the use of require statements. For instance, the patient module I’m working on will be located in library/Patient/src/ but instead of managing the path depending on where I’m at in the code, you can now just use
<?php
use OpenEMR\Patient\<ClassNameHere>;
$patient = new OpenEMR\Patient\ClassNameHere(); // or
$patient = new ClassNameHere();
and it’ll just work
This should be utilized as it:
promotes modularized development
reduces the risk of error by lessening the burden of require_once statements and
falls in line with modern PHP development practice. This is common practice.
There is also a ViewHelper module, where I began transposing various helper function into. For instance, you can now call
and be given back a proper currency string. This is essentially moving various functions found in .inc files into a central class that makes a bit more sense in terms of nomenclature.
This should be implemented as again it promotes modularization of code, keeping functions out of the global namespace and improving re usability.
I am working on a Patient module that will be the central interaction point for a patient, but I choose to leave it off from this code review as I want this first step to be clear and concise.
I wrote that README far too quickly. I’ll update with better documentation.
Edit: From the updated documentation
$ git clone git@github.com:robertdown/openemr-light-theme.git .
$ cd openemr-light-theme
$ npm install // Installs Grunt and Bower from npm via package.json
$ bower install // Grabs the various assets (i.e. Foundation)
$ grunt // Build files and place final output to css/style_light.css
While waiting for a code review to be processed I began work on the next screen - Add/Edit Event. Here are a couple of screenshots. The form is now responsive, so it will look much nicer on tiny screens, and expand to still look good on larger screens.
I am new here, however have worked with bootstrap ui enhancements earlier and would like to know if there is any specific section/module where I can contribute ?
This UI project isn’t getting the attention it deserves since we have all been focused on MU2 stuff. Robert’s ongoing work can be found in these branches: