VRO v1 Roadmap - department-of-veterans-affairs/abd-vro GitHub Wiki

Task Dependency diagram for Version 1.0 of VRO

Legend:

  • gray box: completed task ✅
  • red-outlined box: in-progress task 🏃
  • light-green box: low priority task that could be removed from version 1.0 scope if needed

Tasks for Version 1.0 of VRO (only for asthma and hypertension; targeting Aug 31st to have VRO in operation, if not sooner)

  • setup: Set up RabbitMQ container, Camel routes, and deploy to LHDI
  • version 0.1
    • ruby_pdf_generator Service: Ruby PDF generator (given all pdf contents as request parameters)
    • generate_summary_pdf_Endpoint: Add generate_summary_pdf endpoint to API
    • ruby_assess_data Service: Ruby assess fast-tracking eligibility given all health data
    • assess_data_Endpoint: Add assess-data-for-fast-track endpoint to API (given all health data)
  • 🏃 get_ATO: Get ATO for deployment into prod
  • add_authentication: Add authentication to API endpoints; using simple API-key for now
  • db
    • save_claims_to_db: Save claims processing to DB. See LHDI's persistent volumes.
    • claim_stats_Endpoint (low priority): Add claim_stats endpoint to API for reporting and monitoring. Other metrics (from Zach):
      1. how many claims are we evaluating programmatically for sufficient evidence?
      2. how many of those claims are deemed to have sufficient evidence?
      3. how many claims deemed to have insufficient evidence lead to an auto-exam?
      4. how many claims that are deemed to have sufficient evidence lead to: a) immediate rating, and b) not an immediate rating (e.g., deferral, manual exam)?
  • devops
    • url_for_vro: Add DNS entry for a url to VRO for all relevant envs; LHDI DNS and routing
    • deploy_to_non_prod_envs: Deploy VRO to staging/preprod VA env
    • test_in_non_prod_envs: Test VRO to staging/preprod VA env
  • deploy_to_prod: Deploy to LHDI's Prod environment (via GH Action or ArgoCD)
  • OBE use_ver0.1_endpoints: Have RRD (in vets-api) call 2 endpoints of VRO version 0.1
  • assess_claim
    • lh_health_api_client: LH Patient (Veteran) Health API (FHIR) client. See existing Ruby code VeteransHealth::Client.
    • assess_claim_service: Assess fast-tracking eligibility given claim (VRO must query for health data). See existing Ruby code (HypertensionProcessor, AsthmaProcessor)
    • assess_claim_Endpoint: Add assess-claim endpoint to API that doesn't require health data
  • use_assess_claim_Endpoint: Have RRD (in vets-api) call VRO's assess-claim endpoint
  • evidence_summary_doc (low priority - we can use the Ruby version in the meantime)
    • generate_summary_doc Service (low priority): Improved PDF generator (given all pdf contents as request parameters)
    • generate_summary_doc_Endpoint (low priority): Add generate_summary_doc endpoint to API
  • use_generate_summary_Endpoint: Have RRD (in vets-api) call VRO's evidence_summary_doc endpoint

Implied acceptance criteria for tasks above:

  • ✅ API endpoints should have OpenAPI spec documentation with examples.
  • ✅ Authentication is required for all service endpoints (assess_claim_Endpoint and generate_summary_doc_Endpoint) after version 0.1
  • ✅ Integration testing between RRD (in vets-api) and VRO is needed in a non-prod env before deployment to prod
  • ✅ VRO passes Secure Release process

Code improvements tasks

Would be ideal to get these completed as part of version 1.0:

  • Document how to update version numbers of VRO, container images, etc.
  • Mechanism to ensure microservices are idempotent and following good patterns
  • Improve robustness to failures by using retry pattern -- retry logic in Camel
  • 🏃 Clean up codebase; comment out unused dependencies
  • Add more automated end-to-end and integration testing

Additional DevOps tasks

Would be ideal to get these completed as part of version 1.0:

  • Persist RabbitMQ message queue contents for reloading in case of failures
  • Connect VRO non-prod env with other VA non-prod envs
  • Set up test code coverage and other PR requirement checks. Search jacoco_enforce_violations in the code.
  • Enable linter and pre-commit hook
  • Set up LHDI monitoring and diagnostics tools, i.e. DataDog monitoring, Prometheus, Grafana, Jaeger
  • Set up DB querying (BI) tools for reporting, e.g., Metabase/Superset
  • Set up DB monitoring tools to detect slow queries, e.g., NewRelic
  • Document how to debug and modify DB data in prod
  • Document how to extract microservices into Docker containers and deploy them
  • Add Python bug and vulnerability scanners (SecRel does not currently support Python code scanning)