Overview
Sprint to extend some of the "read only" APIs, to finalize unit/integration testing for existing functionality, to extend the interface, to develop additional loaders, and to begin developing editing capabilities.
...
BAC: fix hibernate properties in config.props (on deployments and in project)
Validate integration tests again
PG: Small finishing items
- DONE Inferred/Stated button not working properly for SNOMED (e.g. "description logic terminology")
Tooltips for some things not working in SNOMED (e.g. rel, attribute nmae, etc)(cannot reproduce)DONE siblings/children in a hierarchy should have a default sort order (e.g. alphabetical). Try looking up "botulism" in snomed.terminology.tools, it looks random.
DONE Advanced searching icon having issues - can't click it because of uib-tooltip
DONE Highlighting in tree search view not working
DONE Switching from non-metathesaurus to metathesaurus improperly shows deep relationships
DONE/Duplicate limit deep relationship display to terminology matching current metathesaurus
- DONE Dummy tree roots should not be clickable
- DONE Retrieving siblings should not duplicate entries for matching components
- DONE Tree elements matching search should appear at the top of lists (not sorted)
- DONE uib-tooltip for advanced search icon should not block clicking the icon
Could not retrieve "back" button not working
DONE atom relationship link text does not initiate new search
DONE Once "appConfig.js" exists ,we can stop filtering footer/header, etc and instead inject the appConfig object into those controllers and just make scope variables for what shows up.
DONE (BAC): Bring "guest "user stuff over from refset
- see services.js and also SecurityServiceJpa.
Implement expression searching based on ECL
- Replace the "search criteria" mechanism with this.
- Identify as a search by parsing and confirming it matches.
- Build SQL or lucene queries from ECL.
- See Kai's project on github: https://github.com/IHTSDO/snomed-query-service
- Also show expressions (like diagrams) for a concept's de
Compute preferred name enhancements
- support all modes, including multiple meta
- tie to user preferences.
DONE Put all route provider back in routes.js (PG)
Review overhaul of loader architecture
- Algorithm -> LoaderAlgorithm
- SourceDataLoaderAlgorithm (interface)
- Employ a consistent handleLazyIniti strategy
- enforce this at release time (add to wiki)
- public handleLazyInit(...)
- ContentService doesn't need it because of "graph resolver" which is entirely responsible for content objects.
- applies to "source data" and "project" and "metadata" services.
- Normalize use of sortable tables across the application (search in content, admin service tables) - use ng-table
- Enabling "cancel"/progress of loaders
- RrfLoaderAlgorithm (can implement at abstract loader algorithm level)
- cancel() should set a cancelFlag to true
- commit/log statements should check the cancel flag and throw a CancelException
- Add CancelException
- Change content service
- Add "precondition" checking to loaders (Algorithm)
- Put all loader logic into "compute" -> e.g. "open readers", "sort files", etc.
- Source Data Loader
- have try/catch
- support "background" parameter
- add cancelLoad(...)
- load -> processId
- getRunningProcesses(...)
- Put a ticket on wiki to rewire mojos from content service to sourcedataLoaderService (then remove from content service the load methods
- BUG Terminology Removerdoes not correctly handle mapsets
Cannot delete or update a parent row: a foreign key constraint fails (`umlsminidb`.`mapsets_attributes`, CONSTRAINT `FK_a1tfp35h17fsbdl07p9xeex2h` FOREIGN KEY (`attributes_id`) REFERENCES `attributes` (`id`))
- RrfLoaderAlgorithm (can implement at abstract loader algorithm level)
- Find all <i> within <a> and remove the <a> - e.g. atoms directive
- DSS: Bring over logging stuff from refset
- objects - LogEntry, LogEntryJpa
- Add terminology, version,
- activity -> LogActivity.LOADER, RELEASE, EDITING
- RootServiceJpa methods
- RootServiceRestImpl methods
- getLog REST API call from ProjectService
- keep existing method
- add one with: instead of "projectId": and "objectId" take "terminology" , "version", and "activity"
- think about what should add log entries (e.g. loaders, terminology removers)
- idea; anything that changes the db.
- addLogEntry statements ONLY go in RestImpl layer. (and maybe the algorithms)
- Put logging statements for loaders - e.g. Rf2SnapshotLoaderAlgorithm
- Add three local methods
- commitClearBegin(...., terminology, version, activity)
- super.commitClearBegin(...)
if (objectCt % logCt == 0) {
addLogEntry...
}
- logAndCommit(...., terminology, version, activity)
- super.logAndCommit(...)
if (objectCt % logCt == 0) {
addLogEntry...
}
- logInfo(message , terminology, version, activity) - also for warn/error, but add the word "WARNING: " or "ERROR: " to the message
- Change all Logger.getLogger(...).info(...) to logInfo(...) calls
- addLogEnry(...) = use "loader" as username
- also Logger.getLogger(...).info(... )
- commitClearBegin(...., terminology, version, activity)
- Add three local methods
- objects - LogEntry, LogEntryJpa
- DONE PG: redo header/footer - controllers. (like refset tool)
- PG: Implement Diagramming
- model transformation
- Show ONLY for "description logic terminology"
- DONE PG Add features for "deep" relationships when browsing UMLS.
- it is definitely only for "concept" and for "metathesaurus" content
- Add new section to concept report (e.g. "Deep relationships")
- REMAINING: Update integration tests with actual filter values (currently only tests null values)
- Enhancements to RRF preferred name computer
- support multiple UMLS's - e.g. have a high-level terminology/version
- reuse the same default precedence list.
- DONE PG: Use directives for reports
- DONE Component Report
- treeComponent
- semanticTypes
- definitions
- atoms
- attributes
- subsets
- relationships
- deep relationships
- TODO Relationships and deep relationships are not using callback functions, fix this
- DONE Search Result Tree directive
- DONE Component Report
- DONE PG Fixed Infinite cycle digest errors on uib-tooltip-html for refset labels in tree search results (extension highlighting)
- DSS; Project/User/UserPrefs stuff
- User
- Application role
- user preferences
- projectRoleMap (e.g. and project role map adapter)
- Project
- Remove "leads", "authors", "administrators"
- remove "scope" stuff
- Remove actionWorkflowStatusValues
- userRoleMap (and userRoleMapAdapter)
- Bring over UserRole from Refset -> replace term server stuff
- Align Security Service Rest (and Jpa)
- Bring over methods from refset that are missing
- Reconcile differences in the implementation methods.
- ProjectService Rest (and Jpa)
- Remove the scope concept calculation
- Add stuff about user/project (assign,unassign,find...)
- next step: add an "Admin" tab.
- basically borrow from refset and make work for this project.
- User
- DONE PG Use route params to dynamically load a "report" (and be able to bookmark URLs)
- DONE Implement routing for terminologyId/terminology/version/type so we can preserve URLs. can even include ?query=... for the query
- CANCELLED Also clean up the way routes work first so we have
- https://umls.terminology.tools/content
- instead of
- This is likely related to the starting URL redirected to https://umls.terminology.tools/#/
- See http://stackoverflow.com/questions/14319967/angularjs-routing-without-the-hash
- e.g. https://umls.terminology.tools/content/CUI/SNOMEDCT/2015_01_31/12738006
- CANCELLED Also clean up the way routes work first so we have
- DONE Implement routing for terminologyId/terminology/version/type so we can preserve URLs. can even include ?query=... for the query
- DONE Support opening a concept in a new window (e.g. there's a pointing off arrow icon that opens a new window with a routing URL that shows exactly that concept - then drag/drop between windows can be editing mechanism).
- https://umls.terminology.tools/content/simple/cui/SNOMEDCT/2015_01_31/12738006
- Improvement: Fix header offset in simple report
- User Preferences stuff
- Bring over model from Refset tool.
- Add "last query" (e.g. "brain" and whether it's "list" or "tree" mode).
- Add "last report" (e.g. type/ui/terminology/version)
- Remove "void addXXX" and "void removeXXX" methods from model objects. Use getObjects().add/remove(...) only
- e.g. AtomClass doesn't need addAtom or removeAtom
- Rewire any uses of them
- "addXXX" -> "getXXX().add"
- "removeXXX" -> "getXXX().remove"
- same if there is "clear"
- DONE Show concept and atom-level subset information (e.g. language refset entires in SNOMED. may require a change to the graph resolver).
- DefaultGraphResolver now resolves subset members for both Atom and Concept
- DONE Migration of upload and loading and removal of sources from transformer to term server
- Separate tabCtl, tabService
- Get all workgin,
- Then configure/use in the Starter kit
...
-
Ronald Cornet ideas for starter kit:
Add some capability to annotate concepts (and save those annotations, and then recover annotated concepts and export them for later use - e.g. SIRS integration).
Also could support some basic refset maintenance (extensional, plus
- Review all the static config info from the config file
-
- determine which have a single option and which have multiple options
- determine which can have a single implementation or need to be copied (e.g. search handler)
- determine how API calls (at JPA) layer work, and how they work at REST layer - make the same.
- etc
- Refactor loader mojos and service calls to all work the same way and use source data loader.
- Refactor Content Service (Rest)
- Separate out concept functions so that they can be deployed without CODE and DUI services
- Release criteria integration tests
- Verify no *java classes have System.out.println
- Verify no *java classes have TODO
- ...
- DONE PG: Support RF2 "atom association refset members" as atom relationships.
- Support RF2 association refset members for non-concept members (e.g. descriptions)
- Enable glass pane while switching tabs (between content/metadata)
- UNNECESSARY, as any calls will glass pane immediately, and if no calls, rendering is immediate
- DONE PG Bring "source data file" and "source data" over from transformer application, along with other things.
- DONE Put the objects into the package structure of terminology server (e.g. put with Project and User)
- Need to update transformer too so it continues to work.
- Leave mojos behind.
- Uploading issues
- Uploaded file count is restricted to 10 for some reason
- Subsequent uploads do not add to the queue
- NOTE: May want to switch to ng-file-upload or flow.js, as they allow folder uploads (angular-file-upload does not)
- In meantime, added flatFileStructure flag to RF2 loader
- Loading notes:
- Added flat file structure setter to RF2 loader to determine whether a webapp load from flat files or normal folder structure load
- TODO Need to do this for other loaders as well
- Must also delete the sorted temp folder for loaders if it exists (otherwise false flag on directory structure)
-
- Added flat file structure setter to RF2 loader to determine whether a webapp load from flat files or normal folder structure load
- Advanced search
- LATER: Expression. - e..g. "Search Criteria" - for "descriptionLogicTerminology" only
- descendants of
- has relationship -> xx
- LATER: Expression. - e..g. "Search Criteria" - for "descriptionLogicTerminology" only
- Show "atom" subset information in the report. Only concept (or component) subset (or refset) information is being shown. this may involve a change in the graph resolver to return the data. i.e. for Snomed you should be able to tell what is just british.
...