Skip to content

[ENG-378] Add support for the missing encounter related fields in Repor…#3662

Merged
vigneshhari merged 7 commits into
developfrom
ENG-378-add-support-for-the-missing-encounter-related-fields-in-report-builder
May 25, 2026
Merged

[ENG-378] Add support for the missing encounter related fields in Repor…#3662
vigneshhari merged 7 commits into
developfrom
ENG-378-add-support-for-the-missing-encounter-related-fields-in-report-builder

Conversation

@vigneshhari
Copy link
Copy Markdown
Member

@vigneshhari vigneshhari commented May 25, 2026

Associated Issue

ENG-378

Summary by CodeRabbit

  • New Features

    • Encounter reports now show facility-specific patient identifiers, hospitalization details (readmission, admit source, discharge disposition, diet preference), encounter tags, external identifiers, and human-readable priority labels.
  • Changes

    • Facility-specific identifiers moved from patient reports to encounter reports; patient reports now expose only instance identifiers and instance tags.

Review Change Stack

@vigneshhari vigneshhari requested a review from a team as a code owner May 25, 2026 13:28
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Encounter context now includes priority mapping, tags, hospitalization fields, external identifiers, and per-facility patient identifier selection; patient context no longer exposes facility-specific identifiers. IdentifiersContextBuilder.config drops its preview_value parameter.

Changes

Encounter and Patient Context Restructuring

Layer / File(s) Summary
Simplify IdentifiersContextBuilder config
care/emr/reports/context_builder/data_points/patient.py
IdentifiersContextBuilder.config drops the preview_value argument.
Remove facility identifiers from patient context
care/emr/reports/context_builder/data_points/patient.py
Deletes PatientFacilityIdentifiersContextBuilder and removes facility_identifiers from BasePatientContextBuilder, so patient context no longer returns per-facility identifiers.
Add ENCOUNTER priority mapping and imports
care/emr/reports/context_builder/data_points/encounter.py
Adds ENCOUNTER_PRIORITY_DISPLAY and imports IdentifiersContextBuilder to enable facility-scoped identifiers in encounter context.
Add encounter tag and hospitalization context builders; extend encounter base
care/emr/reports/context_builder/data_points/encounter.py
Adds EncounterTagContextBuilder, hospitalization display mappings, EncounterHospitalizationContextBuilder exposing re_admission, admit_source, discharge_disposition, diet_preference, and extends BaseEncounterReportContext with encounter_tags, priority, hospitalization, and external_identifier.
Per-facility patient identifiers for encounters
care/emr/reports/context_builder/data_points/encounter.py
Adds PatientFacilityIdentifiersContextBuilder to return identifiers for the current facility and wires facility_identifiers into EncounterReportContext.

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs:

  • ohcnetwork/care#3637: Overlaps on adding tag-related context builders/fields to encounter report context.
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is largely incomplete, providing only an issue reference without details on proposed changes, architecture, or merge checklist items required by the template. Expand the description to include a brief summary of changes, explain how the solution addresses ENG-378, document any architecture changes, and complete the merge checklist.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change—adding missing encounter-related fields to the Report builder—and directly references the issue number.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ENG-378-add-support-for-the-missing-encounter-related-fields-in-report-builder

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 25, 2026

Greptile Summary

This PR extends the encounter report builder by adding hospitalization detail fields, an encounter priority lookup, and moves facility-identifier resolution from the patient context to the encounter context (scoped to the encounter's facility).

  • EncounterHospitalizationContextBuilder and ENCOUNTER_PRIORITY_DISPLAY are defined but never attached to a Field on any context class, so hospitalization and priority data points are silently absent from the report builder.
  • PatientFacilityIdentifiersContextBuilder.get_context() uses a bare dict subscript ([key]) instead of .get(key, []), which will raise a KeyError whenever the encounter's facility has no entry in facility_identifiers.
  • ENCOUNTER_CLASS_DISPLAY is defined twice identically; the duplicate introduced by this PR should be removed.

Confidence Score: 3/5

The encounter report will crash at runtime for any encounter where facility identifiers are absent for the current facility, and the primary new features are never exposed in the report builder.

The unguarded dict access in PatientFacilityIdentifiersContextBuilder will raise KeyError in production for encounters without facility-specific identifiers. EncounterHospitalizationContextBuilder and ENCOUNTER_PRIORITY_DISPLAY are both fully defined but never attached to a Field, so the hospitalization and priority fields the PR aimed to add are silently absent.

care/emr/reports/context_builder/data_points/encounter.py needs attention: the duplicate dict, the missing Field registrations for hospitalization and priority, and the unsafe key access all require fixes before merging.

Important Files Changed

Filename Overview
care/emr/reports/context_builder/data_points/encounter.py Adds hospitalization, priority, and facility identifier context builders for the encounter report, but has a duplicate dict definition, a KeyError-prone dict access, and two new constructs (EncounterHospitalizationContextBuilder and ENCOUNTER_PRIORITY_DISPLAY) that are never wired up.
care/emr/reports/context_builder/data_points/patient.py Removes PatientFacilityIdentifiersContextBuilder and the facility_identifiers field from BasePatientContextBuilder (moved to encounter.py), and drops the unused preview_value on IdentifiersContextBuilder.config. Clean, focused removals.

Comments Outside Diff (1)

  1. care/emr/reports/context_builder/data_points/encounter.py, line 49-65 (link)

    P1 Duplicate dict definition — ENCOUNTER_CLASS_DISPLAY is declared twice in this file (once at line 49 from the original code, and again at line 58 added by this PR). The second definition silently shadows the first. Since they are identical the runtime behaviour is unchanged, but one copy should be removed to avoid confusion.

Reviews (1): Last reviewed commit: "ENG-378 Add support for the missing enco..." | Re-trigger Greptile

Comment thread care/emr/reports/context_builder/data_points/encounter.py Outdated
Comment thread care/emr/reports/context_builder/data_points/encounter.py
Comment thread care/emr/reports/context_builder/data_points/encounter.py
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
care/emr/reports/context_builder/data_points/encounter.py (1)

306-379: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Expose hospitalization fields in EncounterReportContext (currently not wired).

EncounterHospitalizationContextBuilder is defined, but no Field references it here, so those new hospitalization datapoints are not actually available in encounter reports.

Proposed fix
 class EncounterReportContext(BaseEncounterReportContext):
@@
+    hospitalization = Field(
+        display="Hospitalization",
+        target_context=EncounterHospitalizationContextBuilder,
+        preview_value="",
+        description="Hospitalization details associated with the encounter",
+    )
+
     facility_identifiers = Field(
         display="Facility Identifiers",
         target_context=PatientFacilityIdentifiersContextBuilder,
         preview_value="",
         description="Facility identifiers associated with the encounter",
     )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 306 -
379, Add a Field on the EncounterReportContext named e.g. hospitalization that
targets EncounterHospitalizationContextBuilder so the hospitalization datapoints
are exposed; specifically, in the EncounterReportContext class (where other
Fields like patient, facility, diagnoses are declared) add a Field with
target_context=EncounterHospitalizationContextBuilder, a meaningful display like
"Hospitalization Details", a preview_value (e.g. ""), and a description such as
"Hospitalization details for the encounter" so the
EncounterHospitalizationContextBuilder is wired into the encounter report
context.
🧹 Nitpick comments (1)
care/emr/reports/context_builder/data_points/encounter.py (1)

58-65: ⚡ Quick win

Remove the duplicate ENCOUNTER_CLASS_DISPLAY declaration.

This repeats the constant defined above and creates two sources of truth in the same module. Keeping just one avoids quiet drift later.

Proposed cleanup
-ENCOUNTER_CLASS_DISPLAY = {
-    "imp": "Inpatient",
-    "amb": "Outpatient",
-    "obsenc": "Observation",
-    "emer": "Emergency",
-    "vr": "Virtual",
-    "hh": "Home Health",
-}

As per coding guidelines: "Prioritize readability and maintainability."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 58 -
65, There are two identical declarations of the constant ENCOUNTER_CLASS_DISPLAY
in this module; remove the duplicate declaration so only a single
ENCOUNTER_CLASS_DISPLAY exists (keep the original definition and delete the
later one), and run a quick grep/IDE search for ENCOUNTER_CLASS_DISPLAY to
ensure no code relies on the removed duplicate and that all references resolve
to the single remaining constant.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 299-303: PatientFacilityIdentifiersContextBuilder.get_context
currently indexes parent_context.facility_identifiers with
str(parent_context.facility.id) which can raise KeyError for encounters lacking
that facility entry; change the lookup to use a safe getter (e.g.,
parent_context.facility_identifiers.get(key, {})) so it returns an empty
identifier set instead of raising. Specifically, in
PatientFacilityIdentifiersContextBuilder.get_context replace the direct indexing
of parent_context.facility_identifiers[str(self.parent_context.facility.id)]
with a .get call (using the same str(self.parent_context.facility.id) key) and
return a suitable empty structure (empty dict or the expected empty collection)
so callers of get_context still receive the correct type.
- Around line 257-297: get_context() can return None causing the Field mapping
lambdas (re_admission, admit_source, discharge_disposition, diet_preference) to
call .get on None; make the context null-safe by returning an empty dict when
hospitalization is missing (i.e., change
EncounterHospitalizationContextBuilder.get_context to return
self.parent_context.hospitalization or {}), so existing mapping lambdas can
continue using h.get(...) without raising AttributeError.

---

Outside diff comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 306-379: Add a Field on the EncounterReportContext named e.g.
hospitalization that targets EncounterHospitalizationContextBuilder so the
hospitalization datapoints are exposed; specifically, in the
EncounterReportContext class (where other Fields like patient, facility,
diagnoses are declared) add a Field with
target_context=EncounterHospitalizationContextBuilder, a meaningful display like
"Hospitalization Details", a preview_value (e.g. ""), and a description such as
"Hospitalization details for the encounter" so the
EncounterHospitalizationContextBuilder is wired into the encounter report
context.

---

Nitpick comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 58-65: There are two identical declarations of the constant
ENCOUNTER_CLASS_DISPLAY in this module; remove the duplicate declaration so only
a single ENCOUNTER_CLASS_DISPLAY exists (keep the original definition and delete
the later one), and run a quick grep/IDE search for ENCOUNTER_CLASS_DISPLAY to
ensure no code relies on the removed duplicate and that all references resolve
to the single remaining constant.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 0bf9ad2e-ba9d-4f4c-bfbd-b3b2cb69fcf6

📥 Commits

Reviewing files that changed from the base of the PR and between 77bd3b1 and 5fda348.

📒 Files selected for processing (2)
  • care/emr/reports/context_builder/data_points/encounter.py
  • care/emr/reports/context_builder/data_points/patient.py
💤 Files with no reviewable changes (1)
  • care/emr/reports/context_builder/data_points/patient.py

Comment thread care/emr/reports/context_builder/data_points/encounter.py
Comment thread care/emr/reports/context_builder/data_points/encounter.py Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented May 25, 2026

Codecov Report

❌ Patch coverage is 87.50000% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.84%. Comparing base (77bd3b1) to head (d23e42d).
⚠️ Report is 2 commits behind head on develop.

Files with missing lines Patch % Lines
...r/reports/context_builder/data_points/encounter.py 87.50% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3662      +/-   ##
===========================================
+ Coverage    75.83%   75.84%   +0.01%     
===========================================
  Files          479      479              
  Lines        23014    23034      +20     
  Branches      2378     2378              
===========================================
+ Hits         17452    17470      +18     
- Misses        4988     4990       +2     
  Partials       574      574              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
care/emr/reports/context_builder/data_points/encounter.py (1)

177-179: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Still needs null-safety fix for hospitalization context.

As previously discussed, get_context() may return None when hospitalization is not set on the encounter, which will cause all field mappings (lines 183, 190, 200, 210) to raise AttributeError when attempting to call .get(...) on None.

🛡️ Proposed fix (as suggested in previous review)
 class EncounterHospitalizationContextBuilder(SingleObjectContextBuilder):
     def get_context(self):
-        return self.parent_context.hospitalization
+        return self.parent_context.hospitalization or {}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 177 -
179, EncounterHospitalizationContextBuilder.get_context currently returns
self.parent_context.hospitalization which can be None and later causes
AttributeError when downstream field mappings call .get(...); change get_context
to return a safe empty mapping when hospitalization is unset (e.g., return
self.parent_context.hospitalization or {}) so all consumers expecting a dict can
call .get without crashing.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 177-179: EncounterHospitalizationContextBuilder.get_context
currently returns self.parent_context.hospitalization which can be None and
later causes AttributeError when downstream field mappings call .get(...);
change get_context to return a safe empty mapping when hospitalization is unset
(e.g., return self.parent_context.hospitalization or {}) so all consumers
expecting a dict can call .get without crashing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d6c49374-72cd-4b80-b46e-6a7e6bcd1a95

📥 Commits

Reviewing files that changed from the base of the PR and between fda078a and 20deba7.

📒 Files selected for processing (1)
  • care/emr/reports/context_builder/data_points/encounter.py

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
care/emr/reports/context_builder/data_points/encounter.py (1)

185-224: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

The null-safety concern from the previous review remains unaddressed.

As discussed earlier, get_context() can return None when hospitalization is absent, causing AttributeError when the field mappings attempt to call .get(...) on None. The re_admission field at line 191 is particularly vulnerable since it has no guard at all.

The cleanest fix is still to make get_context() null-safe by returning an empty dict when hospitalization is missing, which would protect all four field mappings in one place.

🛡️ Suggested null-safe implementation
 def get_context(self):
-    return self.parent_context.hospitalization
+    return self.parent_context.hospitalization or {}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 185 -
224, The get_context method in EncounterHospitalizationContextBuilder can return
None causing AttributeError in field mappings (re_admission, admit_source,
discharge_disposition, diet_preference); modify get_context to return an empty
dict when self.parent_context.hospitalization is falsy (e.g., None) so all
mapping lambdas can safely call .get(...) without additional guards.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 185-224: The get_context method in
EncounterHospitalizationContextBuilder can return None causing AttributeError in
field mappings (re_admission, admit_source, discharge_disposition,
diet_preference); modify get_context to return an empty dict when
self.parent_context.hospitalization is falsy (e.g., None) so all mapping lambdas
can safely call .get(...) without additional guards.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 4c4da2b4-8932-4cd4-b563-256508e219f1

📥 Commits

Reviewing files that changed from the base of the PR and between 20deba7 and ef062f8.

📒 Files selected for processing (1)
  • care/emr/reports/context_builder/data_points/encounter.py

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
care/emr/reports/context_builder/data_points/encounter.py (2)

107-112: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Null-safe facility tag lookup is still missing.

This still assumes facility_tags is always a dict. With nullable JSON data, this will crash in production a bit too eagerly.

Suggested fix
 class EncounterPatientFacilityTagContextBuilder(PatientTagContextBuilder):
@@
     def get_context(self):
+        facility_tags = self.parent_context.patient.facility_tags or {}
         return TagConfig.objects.filter(
-            id__in=self.parent_context.patient.facility_tags.get(
-                str(self.parent_context.facility.id), []
-            )
+            id__in=facility_tags.get(str(self.parent_context.facility.id), [])
         )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 107 -
112, The get_context method assumes parent_context.patient.facility_tags is a
dict and will crash if it's null; make the lookup null-safe by coercing
facility_tags to a dict (e.g., use a fallback {} or [] before calling .get) and
then pass the resulting list to TagConfig.objects.filter(id__in=...),
referencing the get_context method, parent_context.patient.facility_tags and
parent_context.facility.id to locate the change and ensure id__in receives an
iterable even when facility_tags is None or not a dict.

324-327: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Guard facility_identifiers against None before .get.

Same pattern here: nullable JSON means .get(...) can raise AttributeError for older/partial records.

Suggested fix
 class PatientFacilityIdentifiersContextBuilder(IdentifiersContextBuilder):
     def get_context(self):
-        return self.parent_context.patient.facility_identifiers.get(
-            str(self.parent_context.facility.id), []
-        )
+        facility_identifiers = self.parent_context.patient.facility_identifiers or {}
+        return facility_identifiers.get(str(self.parent_context.facility.id), [])
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@care/emr/reports/context_builder/data_points/encounter.py` around lines 324 -
327, The get_context method calls
self.parent_context.patient.facility_identifiers.get(...) which can raise
AttributeError if facility_identifiers is None; change get_context to first
guard facility_identifiers (e.g. assign fid =
self.parent_context.patient.facility_identifiers or {} / check if truthy) and
then call fid.get(str(self.parent_context.facility.id), []) so it returns [] for
missing/nullable JSON instead of erroring; update the method around get_context
and references to facility_identifiers accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@care/emr/reports/context_builder/data_points/encounter.py`:
- Around line 107-112: The get_context method assumes
parent_context.patient.facility_tags is a dict and will crash if it's null; make
the lookup null-safe by coercing facility_tags to a dict (e.g., use a fallback
{} or [] before calling .get) and then pass the resulting list to
TagConfig.objects.filter(id__in=...), referencing the get_context method,
parent_context.patient.facility_tags and parent_context.facility.id to locate
the change and ensure id__in receives an iterable even when facility_tags is
None or not a dict.
- Around line 324-327: The get_context method calls
self.parent_context.patient.facility_identifiers.get(...) which can raise
AttributeError if facility_identifiers is None; change get_context to first
guard facility_identifiers (e.g. assign fid =
self.parent_context.patient.facility_identifiers or {} / check if truthy) and
then call fid.get(str(self.parent_context.facility.id), []) so it returns [] for
missing/nullable JSON instead of erroring; update the method around get_context
and references to facility_identifiers accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: e27ffbdc-7e99-4152-8602-2a1aa230e371

📥 Commits

Reviewing files that changed from the base of the PR and between ef062f8 and c7277de.

📒 Files selected for processing (1)
  • care/emr/reports/context_builder/data_points/encounter.py

@vigneshhari vigneshhari merged commit e3b31fb into develop May 25, 2026
9 checks passed
@vigneshhari vigneshhari deleted the ENG-378-add-support-for-the-missing-encounter-related-fields-in-report-builder branch May 25, 2026 15:15
@coderabbitai coderabbitai Bot mentioned this pull request Jun 2, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant