cqframework / cqframework/cqf-tooling

Updated RefreshIG to utilize HttpClientUtils, and restore multithreading and verbose console logging

Open
#564 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
22
Forks
26
PR merge metrics
No merged PRs in 30d

Description

Recent changes to RefreshIG abandoned work done to AbstractBundler, MeasureBundler, and PlanDefinitionBundler, which in turn abandoned HttpClientUtils. The new refresh process is fine, but I'd like to restore a few things.

  • Multithreading: The refresh process benefits from the fact that each bundle doesn't rely on any sequential ordering in processing of another bundle. Each can be assigned a task and sent to an executorservice.

  • HttpClientUtils: This class is more than just sending http requests to fhir servers, it maintains a connection pool, has extensive logging for the user, saves failed requests to a dedicated log file for further review by users, and prevents flooding hapi-fhir to the point of crashing it. The http requests are queued and executed as a final step in RefreshIG so that all requests can be conveyed to the user report-style. The queue style approach also acts to free up the measure refresh process so it is not reliant on waiting for responses from servers before proceeding to the next file.

  • Verbose logging: A command passed into the tool enabled processes that gave the user further information about anything from measure refresh failures to cql errors.

We should adopt these optimizations and features, which was built upon many months worth of work, into the new PackageMeasure/PackageMeasures approach.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the new PackageMeasure/PackageMeasures approach and compare it with RefreshIG, AbstractBundler, MeasureBundler, and PlanDefinitionBundler. Read HttpClientUtils to understand the requested connection pooling, queued requests, logging, and failure handling, then determine how multithreading and verbose logging should be restored. Done means the new refresh flow provides these behaviors without losing its current processing.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.