-
Notifications
You must be signed in to change notification settings - Fork 6
VRO v2 Roadmap
Derek Fitchett edited this page Oct 10, 2024
·
44 revisions
VRO has developed an MVP (in Dec 2022) and iMVP (in Feb 2023). The keyword is "MVP". VRO needs some TLC:
- The code works but should not necessarily be used as the basis for new code.
- New teams/engineers will inevitably copy-and-paste to develop new functionality.
- VRO code should follow best practice; follow conventions and be consistent (which improves maintainability); be modular with minimal coupling (to help ensure components don't inadvertently affect each other as new features are added); and be scalable to handle high volumes.
So I propose:
- (Mostly done) We document instructions, set coding conventions, and/or incorporate working example code into the VRO codebase.
- (In progress) We refactor code for reuse, maintenance, and modularity while keeping existing VRO capabilities functional.
Other context:
- VRO is one of the first to use the LHDI platform, LH SecRel pipeline, and LH cATO process, which are gradually being developed, expanded, and matured.
- Contributions to and management of the VRO codebase will change hands over time.
- Consistent code implies easier debugging and maintenance across domains. Coding conventions help to ensure consistent code.
Legend:
- light-green box: implemented in v1
- trapezoid: microservice for External APIs; listens for requests added to an associated RabbitMQ queue
- rounded box: decision point (consider implementing using Camel Dynamic Routing)
- "DB" all refer to the same database and "bipClaimsApi` represents the same microservice; they're drawn separately to reduce clutter
- Also to reduce clutter, the
VRO_API_error
box represents returning an error code back to the VRO API client.
For details, refer to:
Another workflow digram from Mural
(only for single-issue hypertension CFI and presumptives; targeting Dec 31st deployment)
Ordered by priority:
- #433 VRO retrieves OCR results from MAS/VBAAP
- #434 Exam-status endpoint for MAS/VBAAP to notify VRO
- #428 IncomingClaims: VRO receives hypertension CFI claims from MAS/VBAAP
- #435 Exam ordering: VRO calls MAS/VBAAP to order an exam
- #432 VRO handles PDF upload to eFolder
- #430 Mark claim "RFD" to enable appropriate adjudicator assignment
- #431 Remove special issues to enable claim downstream routing
- #436 Parse OCR annotation data
- (OCTO) Add feature flag (a.k.a. feature toggle) service
- (OCTO) Encrypt RabbitMQ messages
- fix Python microservices shut down when RabbitMQ shuts down
Handling presumptives (NEW claims):
- #446 Check fast-tracking eligibility for presumptive claims
- #447 Use OCR data when assessing sufficient health evidence
- #448 Incorporate health evidence from OCR data into the evidence summary document
- #905 iMVP RFD and PDF logic changes
- #811 Relevant documents unavailable for automated review
- #1201 Support parity between MAS- and VRO-generated ARSDs
Other tasks:
- DB metrics
-
claim_stats_Endpoint
: Add claim_stats endpoint to API for reporting and monitoring. Other metrics (from Zach):- how many claims are we evaluating programmatically for sufficient evidence?
- how many of those claims are deemed to have sufficient evidence?
- how many claims deemed to have insufficient evidence lead to an auto-exam?
- 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)?
-
- Ensure RabbitMQ messages are processed despite microservices failures
- 🏃 (Ryan, Cameron) Connect VRO non-prod env with other VA non-prod envs
- 🏃 Clean up codebase; comment out unused dependencies
- 🏃 (Afsin) Add more automated end-to-end and integration testing
- 🏃 (OCTO) Document how to update version numbers of VRO, container images, etc.
- DONE: Persist API request contents for reloading in case of failures
- Document how to extract microservices into Docker containers and deploy them
- Document how to debug and modify DB data in prod
- De-duplicate BP readings between LH and HDR (#1373)
- Mechanism to ensure microservices are idempotent and following good patterns
- Document conventions on how requesters handle errors, such as resubmitting the request -- see comment (OBE task: Improve robustness to failures by using retry pattern -- retry logic in Camel)
- DONE: Set up test code coverage and other PR requirement checks. Search
jacoco_enforce_violations
in the code. - DONE: 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