Project: doctolib-doctolib · Branch: .invalid · Mode: · Model: claude-haiku-4-5-20251001 Stats: 1 user messages, 30 tool calls, tools used: Bash, Read, Glob. Conversation Turn 1 — User I'm debugging why the Document Category filter shows no options in monolith but works in TPF storybook. Please explore: 1. The FilterConfig type definition in /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/ 2. How createNhrDocumentCategoryFilterConfig populates options - look for where document category data comes from (static list, API call, context value) 3. Check if there's a NhrProvider, NhrContext, or similar React context in either: - /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/ - /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records/src/ 4. Look for any hooks like useDocumentCategories, useNhrConfig, or similar that provide category options 5. Check the installed/linked version of @doctolib/tpf-national-health-records-ui in the monolith: - /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/package.json - Check if it uses yalc or local linking: /Users/USER/workspace/doctolib/doctolib/yalc.lock Report what mechanism provides the document categories list to the filter dropdown. Turn 1 — Assistant I'll systematically explore the codebase to understand how the Document Category filter gets its data. Let me start by examining the file structure and key files. Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f -name ".ts" -o -name ".tsx" | head -20 Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/locales/loadNamespace.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/i18n.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/entry.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/formatters/patientFormatter.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf …(truncated, 2390 more chars) Now let me look at the key files mentioned in the request: Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.tsx Tool results: → result (ok): 1 import type { Option } from '@doctolib/design-system/Option' 2 3 import { NhrDocumentCategoryFilter } from '../../../components/NhrDocumentList/NhrDocumentCategoryFilter/NhrDocumentCategoryFilter' 4 import type { FilterConfig } from '../../../types' 5 6 export const createNhrDocumentCategoryFilterConfig = ({ 7 options = [], 8 defaultValue = '', 9 label = 'Document Category', 10 placeholder, 11 }: { 12 options?: Option[] 13 defaultValue?: string 14 label?: string 15 placeholde …(truncated, 626 more chars) Tools used: - Glob: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src//FilterConfig Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentStatusFilterConfig.test.tsx /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentStatusFilterConfig.tsx /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentVisibilityFilterConfig.test.tsx /Users/USER/wor …(truncated, 785 more chars) Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f \( -name "Context" -o -name "Provider" \) | grep -E "\.(ts|tsx)$" Tool results: → result (ok): (Bash completed with no output) Let me search for types and context files: Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f -name ".ts" -o -name ".tsx" | xargs grep -l "FilterConfig" | head -10 Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDateSelectionFilterConfig.tsx /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentStatusFilterConfig.test.tsx /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.tsx /Users/USER/workspace/d …(truncated, 1029 more chars) Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f \( -name "types.ts" -o -name "index.ts" -o -name "types" \) 2>/dev/null Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/types.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentList/NhrSharedByCell/index.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentList/NhrStatusCell/index.ts /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentList/Nh …(truncated, 942 more chars) Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type d -name "contexts" -o -name "context" 2>/dev/null Tool results: → result (ok): (Bash completed with no output) Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/types.ts Tool results: → result (ok): 1 import type { DesignSystemIconComponent } from '@doctolib/design-system-icons' 2 import type { NhrDocument } from '@doctolib/tpf-national-health-records' 3 import type { ReactNode } from 'react' 4 5 export type NhrPatientInfo = { 6 fullName: string 7 gender: 'male' | 'female' | 'other' 8 birthDate: string 9 age: number 10 } 11 12 export type ColumnConfig = { 13 key: string 14 header: string 15 sortable: boolean 16 / Only required when sortable: true. Returns a string for lo …(truncated, 2274 more chars) Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f -name ".tsx" -o -name ".ts" | xargs grep -l "useDocumentCategories\|useNhrConfig\|NhrConte …(truncated, 28 more chars) Tool results: → result (ERROR): Exit code 1 Good! Now let me check the test files and look at how the filter config is actually used in monolith: Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.test.tsx Tool results: → result (ok): 1 import { setup } from '@doctolib/test-helpers' 2 import { screen } from '@testing-library/react' 3 import { describe, expect, it, vi } from 'vitest' 4 5 import { mockPatientInfo } from '../../../test-helpers' 6 import { createNhrDocumentCategoryFilterConfig } from './createNhrDocumentCategoryFilterConfig' 7 8 const ctx = { patient: mockPatientInfo } 9 10 describe('createNhrDocumentCategoryFilterConfig', () => { 11 const renderFilter = ( 12 options = [{ value: 'A', label: 'Report A' }] …(truncated, 1631 more chars) Tools used: - Bash: grep -r "createNhrDocumentCategoryFilterConfig" /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src --include=".tsx" --include=".ts" -A 5 -B 2 Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.tsx-import type { FilterConfig } from '../../../types' /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.tsx- /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocu …(truncated, 10478 more chars) Now let me check the monolith integration and how it's imported there: Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/package.json Tool results: → result (ok): 1 { 2 "name": "@doctolib/national-health-records", 3 "version": "1.0.0", 4 "publishConfig": { 5 "registry": "https://doctolib-580698825394.d.codeartifact.eu-west-1.amazonaws.com/npm/npm-internal/" 6 }, 7 "repository": { 8 "type": "git", 9 "url": "git+https://github.com/doctolib/doctolib.git" 10 }, 11 "keywords": [ 12 "upfront", 13 "modular frontend", 14 "in-monolith-package" 15 ], 16 "engines": { 17 "node": ">= 24.8.0", 18 "npm": ">= 11.6.0" 19 …(truncated, 1016 more chars) Tools used: - Bash: grep -r "createNhrDocumentCategoryFilterConfig" /Users/USER/workspace/doctolib/doctolib --include=".tsx" --include=".ts" --include=".jsx" --include=".js" -l 2>/dev/null | head -10 Tool results: → result (ok): Command running in background with ID: bease0oug. Output is being written to: /private/tmp/claude-501/-Users-clertonra-workspace-doctolib-doctolib/bd578174-7447-43ce-829f-1470e549cc16/tasks/bease0oug.output Let me wait for the grep to complete and check the yalc.lock file: Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/yalc.lock Tool results: → result (ok): 1 { 2 "version": "v1", 3 "packages": { 4 "@doctolib/tpf-national-health-records-ui": { 5 "signature": "c3fffb58793c402cfcda02f5a865a169", 6 "pure": true, 7 "replaced": "^2.1.2" 8 }, 9 "@doctolib/tpf-national-health-records": { 10 "signature": "f923d92dee070f057426a59745230ab1", 11 "file": true, 12 "replaced": "^4.1.0" 13 } 14 } 15 } Tools used: - Bash: find /Users/USER/workspace/doctolib/doctolib -type f -name ".tsx" -o -name ".ts" | xargs grep -l "NhrDocumentCategoryFilter\|createNhrDocumentCategoryFilterConfig" 2>/dev/null | head -5 Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/.yalc/@doctolib/tpf-national-health-records-ui/dist/business/factories/filters/createNhrDocumentCategoryFilterConfig.d.ts /Users/USER/workspace/doctolib/doctolib/.yalc/@doctolib/tpf-national-health-records-ui/dist/components/NhrDocumentList/NhrDocumentCategoryFilter/NhrDocumentCategoryFilter.stories.d.ts /Users/USER/workspace/doctolib/doctolib/.yalc/@doctolib/tpf-national-health-records-ui/dist/components/NhrDocumentList/NhrDocumentCategoryFilter/NhrDocume …(truncated, 284 more chars) Perfect! Now let me check the national-health-records package in the monolith: Tools used: - Bash: find /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src -type f -name ".tsx" -o -name ".ts" | head -20 Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/generateNhrDocuments.ts /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMockedColumns.ts /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMockedDocuments.ts /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/generateNhrDocuments.test.ts /Users/USER/workspace/doctolib/do …(truncated, 2019 more chars) Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/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 9 type FiltersOptions = { 10 lastAccessDate?: string 11 } 12 13 export function filtersFactory({ lastAccessDate = '' }: FiltersOptions = {}): FilterConfig[] { 14 return [ 15 createNhrDocumentCategoryFilterConfig(), 16 createNhrDa …(truncated, 1029 more chars) There it is! The createNhrDocumentCategoryFilterConfig() is being called with NO arguments on line 15. Let me check what other filters do and look for where options should come from: Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts Tools used: - Bash: grep -r "documentCategor" /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src --include=".tsx" --include=".ts" -B 3 -A 3 Tool results: → result (ok): 1 import { filtersFactory } from './filtersFactory' 2 3 describe('filtersFactory', () => { 4 it('should return exactly 4 FilterConfig objects', () => { 5 expect(filtersFactory()).toHaveLength(4) 6 }) 7 8 it('should return filters with correct keys in order', () => { 9 expect(filtersFactory().map((f) => f.key)).toEqual(['typeCodes', 'dateMode', 'documentStatus', 'visibilityGroup']) 10 }) 11 }) 12 Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMockedColumns.ts- /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMockedColumns.ts-export const buildMockedColumns = (): ColumnConfig[] => [ /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMockedColumns.ts- { /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/mocks/nhrMo …(truncated, 1649 more chars) Let me check if there's any place where document categories should be loaded: Tools used: - Bash: grep -r "typeCodes" /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src --include=".tsx" --include=".ts" -B 2 -A 2 | head -50 Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts- /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts- it('should return filters with correct keys in order', () => { /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.test.ts: expect(filtersFactory().map((f) …(truncated, 6555 more chars) Perfect! Now let me check where document categories should be populated - let me look for any API calls or context for document categories: Tools used: - Bash: find /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src -type f \( -name ".tsx" -o -name ".ts" \) -exec grep -l "useDocumentCategor\|getDocumentCategor\|d …(truncated, 35 more chars) Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentListFilterPanel/NhrDocumentListFilterPanel.stories.tsx Tool results: → result (ok): /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/columns/createNhrDocumentCategoryColumn.tsx Tool results: → result (ok): 1 import type { Meta, StoryObj } from '@storybook/react' 2 import { useState } from 'react' 3 4 import { createNhrDateSelectionFilterConfig } from '../../business/factories/filters/createNhrDateSelectionFilterConfig' 5 import { createNhrDocumentCategoryFilterConfig } from '../../business/factories/filters/createNhrDocumentCategoryFilterConfig' 6 import { createNhrDocumentStatusFilterConfig } from '../../business/factories/filters/createNhrDocumentStatusFilterConfig' 7 import { createNhrDocument …(truncated, 4338 more chars) Excellent! Now let me check where the issue is being used in monolith and see how it's being called: Tools used: - Bash: grep -r "filtersFactory\|createNhrDocumentCategoryFilterConfig" /Users/USER/workspace/doctolib/doctolib --include=".tsx" --include=".ts" -l | grep -v ".yalc\|node_modules" | head -10 Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/.claude/worktrees/fhir-2144_nhr-document-list-add-action-config-column/packages/@doctolib/national-health-records/src/variants/dmp/useDmpDocumentListVariant.ts /Users/USER/workspace/doctolib/doctolib/.claude/worktrees/fhir-2144_nhr-document-list-add-action-config-column/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.ts /Users/USER/workspace/doctolib/doctolib/.claude/worktrees/fhir-2144_nhr-document-list-add-action-conf …(truncated, 492 more chars) Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/useDmpDocumentListVariant.ts Tool results: → result (ok): 1 import { columnsFactory } from './factories/columnsFactory' 2 import { filtersFactory } from './factories/filtersFactory' 3 import type { NhrDocumentListVariant, DocumentSearchOptions } from '../types' 4 import useDmpSearchDocuments from '../../hooks/useSearchDocuments' 5 import { mapFiltersToSearchDocumentsParams } from './mappers/mapFiltersToSearchDocumentsParams' 6 7 export const useDmpDocumentListVariant = (patient: DocumentSearchOptions['patient']): NhrDocumentListVariant => { 8 const …(truncated, 207 more chars) Now I can see the issue clearly. Let me check how the filter panel renders the filters and if context is supposed to be passed in: Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentListFilterPanel/NhrDocumentListFilterPanel.tsx Tool results: → result (ok): 1 import { ArrowRotateLeftRegularIcon } from '@doctolib/design-system-icons/ArrowRotateLeftRegularIcon' 2 import { Button } from '@doctolib/design-system/Button/v2' 3 import { Divider } from '@doctolib/design-system/Divider' 4 import { IconButton } from '@doctolib/design-system/IconButton/v2' 5 import { Paragraph } from '@doctolib/design-system/Paragraph' 6 import { useEffect, useState } from 'react' 7 8 import type { FilterConfig } from '../../types' 9 10 export type NhrDocumentListFilterPane …(truncated, 4194 more chars) Perfect! Now let me check how this is being used in the main component in the monolith to see where the disconnect is: Tools used: - Bash: grep -r "NhrDocumentListFilterPanel\|useDmpDocumentListVariant" /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src --include=".tsx" --include=".ts" -B 3 -A 3 …(truncated, 11 more chars) Tool results: → result (ok): /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/useDmpDocumentListVariant.ts-import useDmpSearchDocuments from '../../hooks/useSearchDocuments' /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/useDmpDocumentListVariant.ts-import { mapFiltersToSearchDocumentsParams } from './mappers/mapFiltersToSearchDocumentsParams' /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-reco …(truncated, 2600 more chars) Let me look at the main index file to see what's exported and how it's being used in the monolith: Tools used: - Read: /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/index.ts Tool results: → result (ok): 1 export { useNationalHealthRecords, type UseNhrOperations } from './hooks/useNationalHealthRecords' 2 export { useDmpNhr } from './hooks/useDmpNhr' 3 export { useNhrDocumentListVariant } from './variants/useNhrDocumentListVariant' 4 export type { DocumentSearchOptions, NhrDocumentListVariant } from './variants/types' 5 export { actionsBuilder, type NhrActionsBuilder } from './business/builders/actionsBuilder' 6 Let me check how this is actually being used at the page level in the monolith: Tools used: - Bash: grep -r "useNhrDocumentListVariant\|NhrDocumentList\|NhrDocumentListFilterPanel" /Users/USER/workspace/doctolib/doctolib --include=".tsx" --include=".ts" -l | grep -v ".yalc\|node_modules\|.cla …(truncated, 15 more chars) Tool results: → result (ok): Command running in background with ID: b1wxurmgk. Output is being written to: /private/tmp/claude-501/-Users-clertonra-workspace-doctolib-doctolib/bd578174-7447-43ce-829f-1470e549cc16/tasks/b1wxurmgk.output Tools used: - Bash: find /Users/USER/workspace/doctolib/doctolib -type f -name ".tsx" -path "/national-health-records" ! -path "/.yalc/" ! -path "/node_modules/" ! -path "/.claude/*" -exec grep -l "NhrDocume …(truncated, 13 more chars) Tool results: → result (ok): (Bash completed with no output) Let me check the tpf-national-health-records-ui storybook/demo to see how it works there: Tools used: - Read: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentList/NhrDocumentList.stories.tsx Tool results: → result (ok): 1 import { MonitorWaveformRegularIcon } from '@doctolib/design-system-icons/MonitorWaveformRegularIcon' 2 import type { NhrDocument } from '@doctolib/tpf-national-health-records' 3 import type { Meta, StoryObj } from '@storybook/react' 4 5 import { createMoreActionsAction } from '../../business/factories/actions/createMoreActionsAction' 6 import { createViewDocumentAction } from '../../business/factories/actions/createViewDocumentAction' 7 import { createNhrDocumentCategoryColumn } from '../../ …(truncated, 16134 more chars) Perfect! Now I have all the information I need. Let me create a comprehensive summary: Summary of Findings The Document Category filter shows no options in monolith because options are not being passed to createNhrDocumentCategoryFilterConfig() in the monolith's filter factory. The Problem File: /Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/src/variants/dmp/factories/filtersFactory.ts Line 15: createNhrDocumentCategoryFilterConfig() This is called with NO arguments, which means: - options defaults to an empty array [] (line 12 of the filter config factory) - The filter renders with an empty dropdown How It Works in TPF Storybook (Works Correctly) File: /Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/components/NhrDocumentListFilterPanel/NhrDocumentListFilterPanel.stories.tsx Lines 37-47: The storybook explicitly passes options: createNhrDocumentCategoryFilterConfig({ options: [ { value: 'CR', label: 'Consultation report' }, { value: 'LABO', label: 'Laboratory report' }, { value: 'IMA', label: 'Imaging' }, { value: 'CERT', label: 'Medical certificate' }, { value: 'PRES', label: 'Prescription' }, ], label: 'Document Category', placeholder: 'Ex. Laboratory report', }) Architecture Overview 1. FilterConfig Type (/Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/types.ts lines 48-56): - Each filter has a key and a render() function that receives filters, onChange, and a FilterRenderContext - The render function returns ReactNode UI 2. createNhrDocumentCategoryFilterConfig (/Users/USER/workspace/doctolib/treatment-plan/packages/tpf-national-health-records-ui/src/business/factories/filters/createNhrDocumentCategoryFilterConfig.tsx): - Accepts an object with options, defaultValue, label, and placeholder - Options is optional (defaults to []), which is the core issue - Passes options directly to the NhrDocumentCategoryFilter component 3. No Context/Provider Pattern: - There's NO NhrProvider, NhrContext, or useDocumentCategories hook - Document categories are always passed as static data to the filter factory function - The filter panel (NhrDocumentListFilterPanel) doesn't receive or inject category data 4. Monolith Integration via yalc: - The monolith uses yalc linking (see /Users/USER/workspace/doctolib/doctolib/yalc.lock) - The @doctolib/tpf-national-health-records-ui package is linked at ^12.1.0 - The monolith package (/Users/USER/workspace/doctolib/doctolib/packages/@doctolib/national-health-records/) wraps the UI layer and creates filter configs through filtersFactory() Root Cause The monolith's filtersFactory needs to get document categories from somewhere (API, config, or context) and pass them to createNhrDocumentCategoryFilterConfig({ options: [...] }). Currently it doesn't do this. Options are sourced: - In TPF storybook: hardcoded static values - In monolith: missing entirely — needs to be implemented