Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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`))

  • 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(... )
  • 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 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.
  • DONE PG Use route params to dynamically load a "report" (and be able to bookmark URLs)
  • 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).
  • 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)
      •  
         
  • Advanced search
    • LATER: Expression. - e..g. "Search Criteria" - for "descriptionLogicTerminology"  only
      • descendants of
      • has relationship -> xx
  • 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.

...