Versions Compared

Key

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

...

  • Rebuild data (on backend machine), rebuild and redeploy frontend code
    • BAC: ** VETUMLS
    • ** UMLSVET
    • SNOMED
    • ICD
    • OWL
  • Fix some bugs before rebuilding code (because they don't affect db).Atte

...

  • Marketing/SEO - Deploying a demo site with description, screenshots, and video
  • Core application enhancement
  • Editing features

Marketing/SEO

  • PG: Landing and License page
  • DONE (BAC): Bring "guest "user stuff over from refset

    • see services.js and also SecurityServiceJpa.
  • 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.

  • Advanced searching icon having issues - can't click it because of uib-tooltip
    • User logs in, sees info, screenshots and videos
    • "launch browser" button exists
    • upon clicking, it user is presented with a license agreement (if the cookie for it doesn't already exist)
    • Upon accepting license, a cookie is created that expires 30 days.
    • From accepting license, user enters /content path
  • New front-page website with description, screenshots, video
  • "Login" link (with logout link on header)
  • 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

Starter Kit

  • ConfigureRestServiceImpl (doesn't need an interface and a client) - put this in TermServer project, and TerminologyServerApplication
    • isConfigured() -   /configured 
      • checks whether WEB-INF/classes/config.properties exists
    • configure(HashMap<String,String> setup)
      • Starts with config.properties.start and overwrites settings for
      • writes config.properties 
      • ConfigUtiltiy.getConfigProperties().setProperty("hibernate.hbm2ddl.auto", "create");
      • new MetadataServiceJpa
      • ConfigUtiltiy.getConfigProperties().setProperty("hibernate.hbm2ddl.auto", "none")
    • clearConfiguration() 
      • removes config.properties file (assumes it is in WEB-INF/classes)
    • configure(String db, String username, String password, String applicationDir);
      • call other configure method
  • configureService.js
    • isConfigured
    • configure(String username, String password, String applicationDir)
  • put config file in starter-kit-rest/src/main/resources/config.properties.start
  • app.js
    • check isConfigured, if false, location.path("/configure"), sets a flag
  • routes.js
    • use functions, check configuration flag, etc..
    • /configure -> ConfigureCtrl
  • configure.html, ConfigureCtrl
    • ,,,, need to configure ...
    • db: 
    • user: 
    • pwd:
    • app Dir: (file upload? ... browse button)
    •  [ configure ] button -> calls configureService.configure with glass pane.
    • upon return, redirects page to "/"
  • Validate integration tests again!

Core Application Enhancement - P1

    • 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 header)
  • 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

Starter Kit - PG

  • ValidatoinResult precheckLoadFromSourceData
  • Application hardening
    • Error handling during configuration (bad db, username, password)
    • directory already exists?
    • failed load
      • sourceData marked as FAILED -> only support certain actions
    • cancelled load -> allow reload of delta
    • source data missing, some terminology data loaded
  • spelling.txt, acronyms.txt
    • package these files into the war. (so they are in WEB-INF/classes)
    • getResourceAsStream("spelling.txt") -> source.data.dir/spelling.txt
  • DONE: Get initial starter kit running

Core Application Enhancement - P1

  • Validate integration tests again

    • 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)
    • 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.

    • Advanced searching icon having issues - can't click it because of uib-tooltip

    •  

  • PG: Small finishing items

  • 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

  • Compute preferred name enhancements

    • support all modes, including multiple meta
    • tie to user preferences.
  • Put all route provider back in routes.js (PG)

    • Algorithm -> LoaderAlgorithm
    • SourceDataLoaderAlgorithm (interface)
  • Review overhaul of loader architecture

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

  • Finall <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"
  • PG DONE 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.
  • 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
  • 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

Core Application Enhancement - P2

  • transformer to term server
    • Separate tabCtl, tabService
    • Get all workgin,
    • Then configure/use in the Starter kit

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

     
  • 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
    • ...
  • PG: Support RF2 "atom association refset members" as atom relationships.
    • * REMAINING: Need to decide how to handle non-concept association reference refset members (e.g. descriptions)
    Enable glass pane while switching tabs (between content/metadata)
  • IN PROGRESS 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.

...