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.

...

  • PG: Landing and License page
    • User logs in, sees info, screenshots and videos
    • DONE "launch browser" button exists
    • DONE upon clicking, it user is presented with a license agreement (if the cookie for it doesn't already exist)
    • DONE Upon accepting license, a cookie is created that expires 30 days.
    • DONE From accepting license, user enters /content path
    • DONE Handle landing/license/login set up with a new .js file that gets filtered

      Code Block
      appConfig.js
      tsApp
        .value(
          'appConfig',
          { landing : ${deploy.landing.flag},
            license : ${deploy.license.flag},
            ...
      
      
  • New front-page website with description, screenshots, video
  • "Login" link (with logout link on headerfooter)
  • Have the "upload" and "source" tabs from transformer here
    • "Snomed starter kit"
  • Create a video demo of the site (camtasia) and post as a link on the header (video glyphicon if there is one)
    • also screenshots that are clickable, etc.
  • Verify all entry pages for applications are officially mobile friendly
  • Update campaigns for  SNOMED/UMLS/ICD browsers on google adwords.
  • Training Video for UMLS browser (need 10 min)
  • Training Video for SNOMED browser (simple 5 min)
  • Find the SNOMED video that Anil sent, redo with RF2 - same content!
  • Other notes (from email)
    • Google adwords campaign
      • “free icd-10” browser, “free SNOMED CT US Extension browser”, “free UMLS browser
    • Get webmaster setup for the icd/umls/snomed pages
      • Use config setup for that
    • Find east bay healthcare startups
      • Pursue like job search (to know they’re hiring, etc)
      • Tech
      • Device
      • Information/informatics 
    • Meetups

...

  • 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

    • Could not retrieve "back" button not working

    • 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
    • Confirm that Descriptor and Code are not intended to have subset members
    • Needs testing to confirm UI display ok
  • 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

...

  • TODO: Restore functionality of SourceDataRemoverMojo -> should call a service.
  • TODO: precondition checking for SoruceData load 
    • (e.g. verify terminology/version doesn't already exist) - e.g. for Rf2Snap, but not Rf2Delta, there it's vice versa.
    • Each loader probably  needs its own rules - revisit all of them.
  • TODO: Rf2SnapshotLoader - attempt to determine the to terminology/version (e.g. from the map set name?)
  • TODO: Rf2Full LoaderAlgorithm - move "Look through files to obtain ALL release versions" logic to the file sorter.
  • TODO: RrfLoaderAlgortihm - double check behavior of SUBSET_MEMBER - that entries are getting loaded for SNOMED refsets.
  • TODO: SourceDataFileUtility - error handling for  extractCompressedSourceDataFile
    • // TODO Delete any successfully extracted files on failed load

  • TODO: Is there a reason why ConfigureServiceRestImpl was not extending Root?
    • This lead to a duplicate handleException methods
  • TODO:SourceDataServiceRestImpl - URLs against content service and update java and js clients.
  • TODO: popout in content controller should call a contentService method - controllers shoudl never have URL fragments.  Also make the "simple" part a parameter.
  • TODO: fix the part of content controller that picks ICD10CM over ICD10 - actually, probably better to just remove ICD10 from CLAML load (UTS license doesn't cover it anyway).
  • TODO: Generalize the handling of "simple" in isTabShowing of tab controller

Core Application Enhancement - P2

  •  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

     
    • (extensional, plus

    • "favorites list"
  • User interface for mappings content
    • Have a separate tab for this
    • search by concept id
    • restrict to map set
    • search by target id
    • Show full mappings in a table
    • Need methods for searching mappings.
  • 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
    • ...
    • .out.println
    • Verify no *java classes have TODO
    • ...
  • Implement precedence list saving in updateUserPreferences - currently it just sets user precedence list to null
  • Implement glass pane for an individual component so that say "deep relationships" can load in its own time, but other elements can be interactive and ready to go when ready.
  • DONE PG: Support RF2 "atom association refset members" as atom relationships.
  • * REMAINING: Need to decide how to handle Support RF2 association refset members for non-concept association reference refset members  (e.g. descriptions)
  • Enable glass pane while switching tabs (between content/metadata)IN PROGRESS
    • 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.

...