Project: workspace-doctolib · Branch: HEAD · Mode: ` · **Model:**claude-opus-4-7`
Stats: 1 user messages, 9 tool calls, tools used: Bash, Read.
Conversation
Turn 1 — User
Review the changes in the doctolib monolith repository for PR https://github.com/doctolib/doctolib/pull/241176
The worktree is at: /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/
The changed files are in packages/@doctolib/national-health-records/src/variants/:
1. types.ts — added visibleToAll?: boolean to DmpServerFilters
2. dmp/factories/filtersFactory.ts — prepended "Visible to all" with isExclusive: true to visibility modes
3. dmp/mappers/mapFiltersToSearchDocumentsParams.ts — maps visibleToAll: true → DOCUMENT_VISIBILITY.sharedWithAll
4. dmp/factories/filtersFactory.test.ts — updated tests for 4 options and "Visible to all" first
5. dmp/mappers/mapFiltersToSearchDocumentsParams.test.ts — added 2 tests for visibleToAll
Get the diff with:
cd /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter && git diff HEAD~1...HEAD
Review for: code quality, style adherence, correctness of bitmask logic, test completeness, TypeScript types, and any potential issues.
Turn 1 — Assistant
I'll review the PR by examining the diff and the changed files.
Tools used:
Bash:cd /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter && git diff HEAD~1...HEAD
Tools used:
Bash:cd /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter && git log --oneline HEAD~3..HEAD
Tool results:
→ result (ok): diff --git a/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts b/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts index 529b56677f0e..c0418b93d8a5 100644 --- a/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts +++ b/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts @@ -91,17 +91,17 @@ describe('filtersFactory', () => { ) …(truncated, 4664 more chars)
Tool results:
→ result (ok): cb4ab8289db2 fix(fhir-2222): add visibleToAll filter to DMP NHR document visibility 401f9e11e68b fix(DITTO-4504): bump deduper child-job timeout to 15h to unblock 175k+ patient bases (#241136) 4227d3b98c6f feat(DIAL-1149): add phone_assistant_multi_location feature switch (#241097)
Let me examine the surrounding code to understand context for the bitmask logic and DOCUMENT_VISIBILITY constant.
Tools used:
Read:/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/mappers/mapFiltersToSearchDocumentsParams.ts
Tool results:
→ result (ok): 1 / eslint-disable no-bitwise /
2 import type { NhrDocumentSearchParams } from '@doctolib/tpf-national-health-records'
3 import { DOCUMENT_STATUS, DOCUMENT_VISIBILITY } from '@doctolib/dmp'
4 import type { ServerFilters } from '../../types'
5
6 // Maps UI-level ServerFilters to the NhrDocumentSearchParams format expected by the NHR API.
7 // Each ServerFilters field needs an explicit mapping — field names do not match NhrDocumentSearchParams.
8 export function mapFiltersToSearchDocumentsParam
…(truncated, 2888 more chars)
Tools used:
Read:/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.ts
Tool results:
→ result (ok): 1 import {
2 type FilterConfig,
3 createNhrDateSelectionFilterConfig,
4 createNhrDocumentCategoryFilterConfig,
5 createNhrDocumentStatusFilterConfig,
6 createNhrDocumentVisibilityFilterConfig,
7 } from '@doctolib/tpf-national-health-records-ui'
8 import { DMP_CATEGORY_OPTIONS } from './dmpCategoryOptions'
9
10 type FiltersOptions = {
11 lastAccessDate?: string
12 }
13
14 export function filtersFactory({ lastAccessDate = '' }: FiltersOptions = {}): FilterConfig[] {
15 return [
16
…(truncated, 1438 more chars)
Tools used:
Read:/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/mappers/mapFiltersToSearchDocumentsParams.test.ts
Tool results:
→ result (ok): 1 import { mapFiltersToSearchDocumentsParams } from './mapFiltersToSearchDocumentsParams'
2
3 jest.mock('@doctolib/dmp', () => ({
4 DOCUMENT_STATUS: { validated: 1, obsolete: 2, archived: 4 },
5 DOCUMENT_VISIBILITY: {
6 sharedWithAll: 1,
7 notSharedWithPatient: 2,
8 notSharedWithPractitioner: 4,
9 notSharedWithLegalRepresentative: 8,
10 },
11 }))
12
13 describe('mapFiltersToSearchDocumentsParams', () => {
14 describe('categories', () => {
15 it('maps typeCodes to ca
…(truncated, 6868 more chars)
Tools used:
Read:/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts
Tool results:
→ result (ok): 1 import { filtersFactory } from './filtersFactory'
2
3 jest.mock('./dmpCategoryOptions', () => ({
4 DMP_CATEGORY_OPTIONS: [
5 { value: '11488-4', label: 'CR ou fiche de consultation ou de visite' },
6 { value: 'CERT_DECL', label: 'Certificat, déclaration' },
7 ],
8 }))
9
10 jest.mock('@doctolib/tpf-national-health-records-ui', () => ({
11 createNhrDocumentCategoryFilterConfig: jest.fn(),
12 createNhrDateSelectionFilterConfig: jest.fn(),
13 createNhrDocumentStatusFilterConfig
…(truncated, 5247 more chars)
Tools used:
Read:/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/types.ts
Tool results:
→ result (ok): 1 import type { ColumnConfig, FilterConfig, SearchDocumentsResult } from '@doctolib/tpf-national-health-records-ui'
2 import type { Patient } from 'monolith_DEPRECATED/types/doctor/api/Patient'
3 import type { NhrDocumentSearchParams } from '@doctolib/tpf-national-health-records'
4
5 export type { SearchDocumentsResult }
6
7 export type NhrDocumentListVariant = {
8 columns: ColumnConfig[]
9 filters: FilterConfig[]
10 searchDocuments: (appliedFilters?: Record<string, unknown>) => Promise<
…(truncated, 848 more chars)
Now I have a complete picture. Let me also check the DOCUMENT_VISIBILITY constant in the actual @doctolib/dmp package to validate the bitmask logic.
Tools used:
Bash:cd /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter && grep -r "DOCUMENT_VISIBILITY" packages/@doctolib/dmp/ --include="*.ts" -l 2>/dev/null | head -5
Tool results:
→ result (ok): packages/@doctolib/dmp/src/index.ts packages/@doctolib/dmp/src/types/FrDmpTypes.ts packages/@doctolib/dmp/src/business/frDmpPayloadBuilders.ts packages/@doctolib/dmp/src/business/FrDmpCommunication.ts packages/@doctolib/dmp/src/business/FrDmpConstants.ts
Tools used:
Bash:cd /Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter && grep -A 20 "DOCUMENT_VISIBILITY" packages/@doctolib/dmp/src/business/FrDmpConstants.ts | head -40
Tool results:
→ result (ok): export const DOCUMENT_VISIBILITY: Record<string, number> = { sharedWithAll: 1, notSharedWithPatient: 2, notSharedWithPractitioner: 4, notSharedWithLegalRepresentative: 8, sharedOnlyWithPractitioner: 10, sharedOnlyWithPatient: 12, }
export const DMP_BIOLOGICAL_SEX: Record<string, number> = { unknown: 1, male: 2, female: 3, }
export const DMP_ERROR: Record<string, string> = { cpsError: 'MissingCPSError', dmpClosed: 'DMPClosed', dmpNonExistent: 'DMPNonExistent', serverEr …(truncated, 28 more chars)
Good, this confirms DOCUMENT_VISIBILITY.sharedWithAll is 1. Now I have everything I need to provide a thorough review.
Code Review: PR #241176 — Add visibleToAll filter to DMP NHR document visibility
Files Reviewed
/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/types.ts/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.ts/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/mappers/mapFiltersToSearchDocumentsParams.ts/Users/USER/workspace/doctolib/worktrees/doctolib/fhir-2222_add-visible-to-all-filter/packages/@doctolib/national-health-records/src/variants/dmp/mappers/mapFiltersToSearchDocumentsParams.test.ts
Summary
This is a small, focused, and well-tested change. The code adheres to the existing patterns in the package (TypeScript-first, functional style, kebab-case file naming, mapped server filters via explicit branches), and the bitmask-style mapping is consistent with mapStatusFilter. Tests cover the happy path and a priority-conflict case.
I confirmed DOCUMENT_VISIBILITY.sharedWithAll = 1 in packages/@doctolib/dmp/src/business/FrDmpConstants.ts, so the early-return mapping String(DOCUMENT_VISIBILITY.sharedWithAll ?? 1) is correct. Note however that sharedWithAll is not a pure power-of-2 bit independent of the others — the same constants file defines composite values like sharedOnlyWithPractitioner: 10 (which is sharedWithAll(1) | notSharedWithPatient(2) | notSharedWithLegalRepresentative(8) = 11, not 10 — but that's a pre-existing oddity in @doctolib/dmp constants and out of scope for this PR).
No high-confidence issues found. Below are the items I considered and dismissed for transparency.
Items Considered (all below the 80-confidence threshold, not reported)
?? 1fallback onsharedWithAllinmapFiltersToSearchDocumentsParams.ts:58— the runtime mock confirms the constant is always1. The fallback mirrors the defensive?? 4/?? 0pattern already established just below it. Consistent with existing style; not a defect.- Priority semantics not enforced at type level —
visibleToAll: trueshort-circuits and silently ignores any combinedincludeInvisibleToPatientetc. The new test "visibleToAll takes priority" documents this explicitly, and theisExclusive: trueflag on the UI option is the upstream guard. Acceptable. isExclusive: truenot validated against thecreateNhrDocumentVisibilityFilterConfigsignature in this diff — verifying that the consumer actually honorsisExclusiverequires reading the UI package, which is out of scope for this monolith review. The existing test asserts the prop is forwarded, which is the correct seam for this layer.- Tests do not assert
visibilityis'1'rather than'0'whenvisibleToAll: falseand no other flags set — the existing "returns undefined when no visibility filters are set" test already covers this implicitly (falsyvisibleToAllfalls through to the existing logic). Not worth adding. - No test for
visibleToAll: falseexplicitly set alongside other flags — covered transitively by the existing falsy-branch tests. Minor gap, not material.
Verdict
The code meets project standards. Bitmask logic is correct, types are sound (visibleToAll?: boolean added to DmpServerFilters in the right place), tests were updated in lock-step with both the count assertion (3 to 4) and the first-option assertion, and no eslint-disable or any was introduced. Safe to merge from a code-quality standpoint.