-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Send to API and Test code mapping #8
Comments
Can you please elaborate on this? What kind of API did you have in mind, specifically? That is, are you talking about a web API, or something like a software library?
Currently, acknowledgement is sent as required by the specification. This isn't going to change, but if you're talking about it in regards to your API suggestion, then this will depend on what kind of API we're talking about. If it's a REST API, then I would expect acknowledgement to come in the form of a response status code. Is that what you had in mind?
I'm afraid I don't understand what you're asking for here. Can you please explain it a little more? I'm thinking the machine would query the LIS for test orders after scanning the barcode, but that functionality should already be working.
This could get complicated, depending on what you have in mind. Are you talking about something like webhooks, or do you just want it to send the order ID's test results via HTTP POST request to a predetermined URI whenever a new result is available?
This is something that I would have expected to be handled on the LIMS side, but I can see a use case for this. If there was an option to have it query a mapping table in the database for the test code, would that suffice?
You're welcome! I haven't found much time to devote to this project since I started a new job earlier in the year, but I haven't forgotten about it and I still have plans for its development. Since I mostly use Java in my work these days, I've been considering migrating this project to Java. It's very similar to the C# that UniversaLIS is currently written in, and it could further improve accessibility by using a more open language. More importantly, it would let me narrow my focus and use the same language and skills for this project as I use for my day job. |
2.Yes, it is a REST API. The reply to the API is needed to ensure that orders are not sent repeatedly to UniversaLIS.
(Sorry for unstructured reply) |
All right, that answers those questions, and now your requests make a lot of sense. I'm sorry it took me a while to catch on, but I've been out of the lab for over a year now and had to readjust my perspective. First, the machine scans the specimen barcode and queries the LIS for orders. The LIS then sends a GET request to the LIMS, which responds with the test orders (including the LIMS test code) for that specimen. The LIS then checks the list of test code mappings for the machine that sent the original query, and if any of them match the orders from the LIMS, then those are sent to the machine; otherwise, the LIS tells the machine that there are no orders for the specified barcode. Assuming that there were some matching orders, the machine completes the tests and transmits the results to the LIS. The LIS then sends a POST request to the LIMS, and upon receiving a 2xx response, it sends confirmation to the machine that the result has been received/accepted. Is that what you have in mind, or have I missed something? It sounds like the following configuration options will be needed:
Can you tell me anything about the API specification of your LIMS software? |
Thank you very much. • You are absolutely correct. • About the API specification. Data Structure and Type- Data type are mostly string data (I can make changes to this if need be) |
@roy-harmon greetings!!! Thanks |
Sorry, I'm going to need some time to think about how to implement this. I'm having a very busy week. |
Alright Sir. I really appreciate |
I'm thinking each instrument's configuration will need a setting for whether it can save new orders to a worklist or can only query them on-demand as the sample is detected on the machine. That would determine whether the LIS should proactively send orders to the analyzer or wait for them to be requested. The challenge with that function will be querying the LIMS API when serving both worklist-enabled and on-demand machines. It's possible that the LIS may need to poll the LIMS for all test requests and then store them internally. I'm thinking a SQLite database might be best for that since they provide the application with relational database functionality without needing things like servers. When the LIMS submits orders for tests that are (according to the test code mappings / configuration files) run by a machine that can store orders in a worklist, those orders can be sent to the analyzer right away. Any other orders would continue to wait in the internal database until the LIS is queried by a machine capable of running the ordered test(s). This approach has advantages and disadvantages. First, the advantages:
The potential disadvantages that I can see from here:
The more I consider it, the more I think the internal database is the best option when using an API. Still, there are some possible issues that will need to be addressed, so let me know if you have any ideas. I'm hoping to get to work on this over the next few weeks, and though I can't make any specific guarantees regarding the time table, I'm excited that someone is interested enough in the program to ask for features like this. I'm looking forward to working out the design details and implementing these new features. |
I think your approach is perfect. However for the last disadvantage, there are more than two machines that can run the same test. It is good to mention that the LMIS has an order resend feature. This is to be done by the users in situations the need the order to be resent to the machine. This function when used overrides the check for that particular order and resend it to the LIS middleware. I would like to ask, for how long will the orders remain in the database? Thanks so much for your kind support and active response. |
I have a status update for this issue. As I've worked on implementing the internal SQLite database, it has become clear to me that the best path forward is to focus on the REST API for receiving orders and reporting results. Trying to support a direct connection to an external database is cumbersome when data is stored primarily in the internal database. Providing a REST API is the best way to ensure that the program is flexible, effective, and maintainable. To that end, I intend to drop support for external database connections within the program itself. This functionality can be moved to a separate executable that can serve as an add-on; it will read from the external database, communicate with the LIS via the new API, and then write any reported results to the external database. I don't currently have a firm timetable for this change, but I expect to implement it in at least two stages -- direct database connections will be dropped as the API is added, and later, that removed functionality will return as a separate application. I feel strongly that this is the best way to improve the program. This change should also speed up development as it will remove several obstacles related to direct external database connections (such as the challenge of synchronizing data between internal and external databases, ensuring correct table/field names, and handling SQL errors). It will also open up the program to anyone not using a SQL-based RDBMS. Restoring the functionality as an add-on option will allow for use by those who have a supported database but lack the resources to utilize the REST API. |
HI DEAR |
Sure. |
It is a great achievement,
especially since you are working on the ASTM protocol. I work in this
field, connecting laboratory devices bidirectional. But I have problems
with this protocol. I hope to use your program to overcome this obstacle.
في السبت، ٢١ أكتوبر ٢٠٢٣, ١١:٠٧ م Roy Harmon ***@***.***> كتب:
… HI DEAR
can explane how work?
Sure.
I'm still working on getting it to run properly as a Windows service, but
when the program is running, it will have three main parts. The first is a
SQLite database that stores test request and result information. The second
piece communicates with connected analyzers and transfers data between them
and the program's internal database. The third part is the new API that
makes it easy to view or edit the test requests and results in the internal
database.
As I mentioned above, there's still an issue with the program when running
it as a Windows service, and I've been working on that in my free time
(mostly on weekends). If I can't get it to work soon, I may change it to
run as an executable instead of a service, since that's much simpler. Then
I could continue to explore options for making it run automatically like a
Windows service would.
—
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A3NXTM65B36OR53QXMKJUL3YAQTOTAVCNFSM6AAAAAASTASTCWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZTHEYTANZXGA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Thanks for being generous 😊
please can you add the following functionalities;
The text was updated successfully, but these errors were encountered: