sunsetsystems wrote on Sunday, December 23, 2012:
Yes of course. rod at sunsetsystems dot com, or 707-410-9380.
sunsetsystems wrote on Sunday, December 23, 2012:
Yes of course. rod at sunsetsystems dot com, or 707-410-9380.
sunsetsystems wrote on Sunday, January 06, 2013:
Testing is completed with the first lab. This consists of running through 7 scenarios of ordering and results.
Some screenshots may be found here:
http://www.sunsetsystems.com/labdemo/
They are: The order form, the reports list (which also polls for results), and two shots of results for a chosen order.
Additional labs will require a little bit of customization and setup, but hopefully the hard stuff is done.
Still waiting for feedback from Visolve, to see what can be incorporated from them.
donelewis wrote on Sunday, January 06, 2013:
Nice work! Is this for Quest or LabCorp? Or, just a local lab? Is there a fee to get this feature? Do you need some help? Very nice!
sunsetsystems wrote on Sunday, January 06, 2013:
Hi Don, this was done for PathGroup in Tennessee. The idea is to make it as “free” as possible, with direct interfacing between clinic and lab. However for each new lab a small amount of development will be required (to support their compendium format, communication methods and any other particular requirements).
donelewis wrote on Sunday, January 06, 2013:
Thanks. We’ve been working with Quest and LabCorp. Quest is not really interested unless you have multiple clinics/doctors interested in doing it. I wonder how much interest there is in the OpenEMR community.
sunsetsystems wrote on Sunday, January 06, 2013:
In addition to what MI2/ZH/Visolve are doing with LabCorp and Quest, I expect there would also be interest in direct interfacing.
tmccormi wrote on Monday, January 07, 2013:
We have Both LabCorp and Quest orders/results interfaces in development right now. Hopefully to be released very soon. Both of those labs prefer to work the exchange connection through vendors that they have qualified. MI2 is one of those. There may be others in the OpenEMR vendor list, niether lab will share that info.
In anycase we should be done with our version(s) in the next month, which we are trying to keep as close to what Rod is doing as we can. There is going to be some trickiness in managing support in the project for multiple labs, but there are ways to skin that cat.
Just to be clear (or to complicate the issue) :- ) The Labcorp Orders interface is being developed by Visolve and MI2 and the Quest interface is being done by Ensoftek and MI2
Tony
arnabnaha wrote on Wednesday, January 09, 2013:
HI…
Can this Lab be used locally?? I mean not with any providers but to record data/results of lab investigations ordered for a patient?
sunsetsystems wrote on Wednesday, January 09, 2013:
Yes you can enter results manually, but that part hasn’t gotten much attention in a while and may need some refinement. Consider it a starting point.
sunsetsystems wrote on Sunday, January 27, 2013:
I’ve done more cleanup and will plan to commit to SF in the next couple of days so others can build on it. Current code is here:
kodusote wrote on Sunday, January 27, 2013:
Dear Rod,
I have taken a look at the screen shots on the LabDemo site and was impressed by the procedure order form. It solves a current difficulty with the use of the current procedure order in OpenEMR 4.1, where orders are made and saved one at a time. The order form on the demo has a button for adding Procedures and there does not seem to be a limit on the number of procedures to add at a time. Is it possible to have this function included in the released version?
If you would be kind enough to share the code with me, I’ll like to try it out.
Also the patient result 1 is better than currently in OpenEMR as the units are displayed. Would it be possible to share this code with me to try out too?
My contact is kodusote at yahoo dot com.
Thanks.
Kayode
yehster wrote on Sunday, January 27, 2013:
The technique of generating HL7 by string concatenation is very hard to follow and very hard to maintain.
It is particularly difficult when there are segments with more empty fields than ones with data.
To that end I’ve developed an hl7 message class, where you don’t have to specify each field and component in exactly the correct order after having counted the exact number of empty delimiters out for a given position.
This is a branch which demonstrates use of the classes.
https://github.com/yehster/openemr/tree/hl7_reportable_single
You can see how the class is used here:
https://github.com/yehster/openemr/blob/hl7_reportable_single/interface/reports/syndromic_surveillance/ajax/generate_hl7_info.php
// Handle MSH
$message_id="ID".$creation_time_formatted;
$ss_message=new HL7_SS_ADT($data->{'type'},$message_id);
$msh=$ss_message->msh;
$rep_fac=$data->{'reporting_facility'};
$msh->setField(4,$rep_fac->{'name'},$rep_fac->{'npi'},'NPI');
$msh->setField(7,$creation_time_formatted);
//Done with MSH
//Handle EVN
$evn=$ss_message->evn;
$evn->setField(2,$creation_time_formatted);
$evt_fac=$data->{'event_facility'};
$evn->setField(7,$evt_fac->{'name'},$evt_fac->{'npi'},'NPI');;
//Done with EVN
//Handle PID
$patient=$data->{'patient'};
$pid=$ss_message->pid;
$patID=$pid->getField(3);
$patID->setComponent(1,$patient->{'pubpid'});
$patID->setComponent(5,"MR");
$pid->setField(8,substr($patient->{'sex'},0,1));
//Done with PID
And here is a code snipet demonstrating it’s use.
When all you are all done “filling in the data” of the message, you call .toString() on the message and all the delimiters are put in for you.
You also don’t have to deal with each segment and field exactly in the order defined by the HL7 spec the way you do when concatenating strings. You can “read off” the field numbers from an HL7 spec and deal with them out of order, and the logic for computing values doesn’t get interspersed with the concatenation process.
I hope you’ll take a look at my classes and consider using them. I understand if you choose not to as it would be a fair amount of work to “convert”.
sunsetsystems wrote on Sunday, January 27, 2013:
Kayode, thanks for the kind words! If you go to the URL from my previous post in this thread, you can download the branch by clicking the ZIP button on the left side.
Kevin, I’ll definitely take a look at your classes. Your work sounds very useful… might convert to use it later - not right away, as we’ve already done testing of this code with a couple of labs.
sunsetsystems wrote on Sunday, January 27, 2013:
you can download the branch by clicking the ZIP button on the left side.
Correction: Click the Files tab and then you will see the ZIP button on the left.
kodusote wrote on Thursday, January 31, 2013:
Dear Rod,
Please can I request for a minor modification before the release with this module with the next version. At present the Diagnosis pop-up only uses the ICD9 code without any option. Is it possible to use the same pop-up window as for the Medical Problem, which allows a choice of whatever diagnosis code-type(s) saved in the code-type list?
Thanks in advance.
Kayode
bradymiller wrote on Thursday, January 31, 2013:
Hi Rod,
Regarding Kayode’s request. Very straightforward to do this. Check out the Issues script to see how it works (basically, just call the collect_codetypes() in custom/code_types.inc.php when you call the searching popup).
-brady
OpenEMR
bradymiller wrote on Thursday, January 31, 2013:
Hi,
I also strongly suggest for all future code, we need to strictly enforce use of the code_types functions/module and to not hard-code code types. Note the entire codebase now supports this, so it makes sense to keep it that way considering the large international user base.
-brady
OpenEMR
bradymiller wrote on Thursday, January 31, 2013:
Hi,
I just realized this code is not new (it was not introduced in Rod’s missing code and it got missed in the initial code refactor project). Here’s the commit to fix this:
http://github.com/bradymiller/openemr/commit/a0623c76dbe8ddf2d5cd1a758da6c09bbe57f48f
Rod, I couldn’t find any downstream bad effects from this (for example, if a user is using ICD10 codes instead there, does it break anything else); Can you think of any potential issues downstream that may arise?
If it’s ok, then plan to commit it to sourceforge (and get it in the next 4.1.1 patch).
-brady
OpenEMR