Comments (19)
UK dm+d defines drugs using SNOMED relationships not arbitrary free text in parentheses in a text field.
from hermes.
Is there a way to disambiguate based on relationships other that is-a?
from hermes.
I mean there is this monstrosity
<< 373873005 |Pharmaceutical / biologic product (product)| : ( 732944001 |Has presentation strength numerator value (attribute)| = * OR 733724008 |Has concentration strength numerator value (attribute)| = * )
But it slows down the search speeds significantly: About 20 seconds per search!! Usual simple searches on my system take <20ms
from hermes.
I guess naive answer would be a two pass approach in which you search FSNs for the tag and then use that denominator set to search. Alternatively perform a search and then do a quick fetch for the FSN and then filter.
from hermes.
Yeah, both could work, but I could also just make a reference set with all the clinical drugs and real clinical drugs and index them in advance. And then do an ECL by ^reference set
.
from hermes.
What really constitutes a "semantic tag"? Just the name in the brackets of an FSN?
If so, yes, the 2 approaches you mentioned will be easier to do while indexing, and you could expose that as a semantic tag
parameter along with the ECL. However, if ECL somehow supports semantic tag, that would be much better.
I'm building open-source web components to be used in different situations, and this is how the search component looks like.
Having only ECL is elegant.
from hermes.
How do you filter out clinical drugs in your EHR system? Or maybe you don't use SNOMED for drugs?
from hermes.
So what relationships do they establish for you to search only clinical drugs or real clinical drugs? What constraints do you use?
Cause if the Indian release centre is doing it wrong, I could point them to the UK dm+d and maybe they might change how they do it too.
from hermes.
Definitely use drugs - see first video on https://wardle.org/patientcare/2018/02/19/so-I-built-an-EPR.html
from hermes.
Does the ECL standard provide for semantic tags or search within a FSN? I have a feeling I don't index FSNs by default as I never had the need.
from hermes.
In clojure, I'd write a small utility to lazily process the concepts within a specific reference set and create two reference sets from that to disambiguate your drug classes. I'd then use those to drive the UI.
But if ECL standard has support for this, I'd be happy to look to implement.
from hermes.
The UK drug extension specs are available online. They support a six class model - VTM, VMP, VMPP, AMP, AMPP and TF. The semantics aren't quite right either- based on the is-a hierarchies - but each type is in its own refset so you can disambiguate.
from hermes.
Although they don't have concrete values - hence why I have built https://github.com/Wardle/dmd - to add a bit more to the base SNOMED drug extension for the UK.
from hermes.
Have a look at the ECL filter options, specifically the description type. That looks as if it will give you concepts matching an FSN named something. You could use that in a conjunction to get what you need - maybe! Off the top of my head, I can't remember how much I implemented of this.
from hermes.
It looks as if you should be able to use an FSN= filter but the best way is to get people to distribute releases with semantic information as part of the data and not as free text.
from hermes.
It looks as if you should be able to use an FSN= filter but the best way is to get people to distribute releases with semantic information as part of the data and not as free text.
This seems to be the best approach. I'm writing a script that will quickly look at all of the concepts and add a parent relationship based on the semantic tag and output an extension. I will then index this extension as well. How do you do the indexing? Do I need to output Full, Snapshot and Delta folders? What's the least I can get away with?
from hermes.
Does the ECL standard provide for semantic tags or search within a FSN? I have a feeling I don't index FSNs by default as I never had the need.
Not yet. But they are apparently planning to add that to the specification soon.
from hermes.
You simply need to output a snapshot file - and just adopt the right filename standard - so have a look at that in the specification. The indexing simply walks the filesystem and looks for filenames that match - you should be able to recognise the regex even if you can't read clojure - and follow the specs linked in the comment in the source code. Then run your import against a directory containing your file and it will import.
from hermes.
My only other suggestion would be to add a "tag" option in your UI definition, and run the logic as an extra step in your UI code. If they add to ECL, I can see how it would be easy to extract the semantic tag from the FSN and stuff into each indexed document in Lucene and then query on that - so it would be trivial - except really they should push distributors to include semantic data in the data - not the free text of a description!
It would save you having to manage the reference set definitions - which will because a maintenance job that you will regret unless it is entirely automated!
from hermes.
Related Issues (20)
- Search using constraint with refinements times out HOT 6
- Add support for concrete types, for indexing and for search HOT 5
- Improve server error messages
- Consider adding alternatives to expand-ecl HOT 3
- Some client JSON parsers don't support 64-bit integers, potentially causing truncation HOT 14
- Build from source - ClassNotFoundException HOT 1
- 404 when trying to include SNOMED UK Medicines HOT 3
- In core API, 'synonyms' should also accept locale preferences HOT 1
- Allow explicit locale fallback preferences HOT 1
- Modify search to use normalised / folded strings to better handle diacritics HOT 8
- Search should default to including normalised (folded) index HOT 1
- Error when compacting db HOT 14
- Error on indexing with unclear error messages because no available reference sets for selected locale HOT 5
- Default, fallback locale should be on basis of data not system
- ECL expansion in which attribute values resolve to nothing result in an error
- improve documentation of removeDuplicates in HTTP API HOT 3
- Add support for parallelised result collection via new CollectorManager API HOT 11
- If indexing occurs in-place, then results during indexing may be incorrect
- Add explicit tests to check Hermes can deal with arbitrarily large description terms
- Support for ECL v2.2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hermes.