|
1 | | -import { useUpdateEncounterSubscription } from "@/vimOs/useUpdateEncounter"; |
2 | 1 | import { SoapSection } from "../../molecules/SoapSection"; |
3 | 2 | import type { |
4 | 3 | SectionTypes, |
5 | 4 | TranscriptionSegment, |
6 | 5 | } from "../ai-scribe-demo/transcription.mock"; |
7 | | -import { useNoteFormContext } from "@/providers/NoteFormContext"; |
8 | 6 |
|
9 | 7 | interface NotePanelProps { |
10 | 8 | hoveredSegment: number | null; |
11 | 9 | transcriptionSegments: TranscriptionSegment[]; |
12 | 10 | renderHighlightedText: (text: string) => JSX.Element; |
| 11 | + canUpdateSubjectiveNote: boolean; |
| 12 | + canUpdateObjectiveNote: boolean; |
| 13 | + canUpdateAssessmentNote: boolean; |
| 14 | + canUpdatePlanNote: boolean; |
| 15 | + updateSubjectiveNote: () => void; |
| 16 | + updateObjectiveNote: () => void; |
| 17 | + updateAssessmentNote: () => void; |
| 18 | + updatePlanNote: () => void; |
13 | 19 | } |
14 | 20 |
|
15 | | -const useUpdateSubjective = () => { |
16 | | - const encounterUpdates = useUpdateEncounterSubscription( |
17 | | - "subjective", |
18 | | - { |
19 | | - generalNotes: true, |
20 | | - chiefComplaintNotes: true, |
21 | | - historyOfPresentIllnessNotes: true, |
22 | | - reviewOfSystemsNotes: true, |
23 | | - }, |
24 | | - ["chiefComplaintNotes", "reviewOfSystemsNotes"] |
25 | | - ); |
26 | | - |
27 | | - const { updateSubscriptionField, canUpdateSubscriptionParams } = |
28 | | - encounterUpdates; |
29 | | - const { watch } = useNoteFormContext(); |
30 | | - |
31 | | - const updateSubjectiveNote = () => { |
32 | | - if (canUpdateSubscriptionParams) { |
33 | | - const formValues = watch(); |
34 | | - |
35 | | - updateSubscriptionField(formValues.subjective); |
36 | | - } |
37 | | - }; |
38 | | - |
39 | | - return { |
40 | | - canUpdateSubjectiveNote: canUpdateSubscriptionParams, |
41 | | - updateSubjectiveNote, |
42 | | - }; |
43 | | -}; |
44 | | - |
45 | | -const useUpdateObjective = () => { |
46 | | - const encounterUpdates = useUpdateEncounterSubscription( |
47 | | - "objective", |
48 | | - { |
49 | | - generalNotes: true, |
50 | | - physicalExamNotes: true, |
51 | | - }, |
52 | | - ["generalNotes", "physicalExamNotes"] |
53 | | - ); |
54 | | - |
55 | | - const { updateSubscriptionField, canUpdateSubscriptionParams } = |
56 | | - encounterUpdates; |
57 | | - const { watch } = useNoteFormContext(); |
58 | | - |
59 | | - const updateObjectiveNote = () => { |
60 | | - if (canUpdateSubscriptionParams) { |
61 | | - const formValues = watch(); |
62 | | - |
63 | | - updateSubscriptionField(formValues.objective); |
64 | | - } |
65 | | - }; |
66 | | - |
67 | | - return { |
68 | | - canUpdateObjectiveNote: canUpdateSubscriptionParams, |
69 | | - updateObjectiveNote, |
70 | | - }; |
71 | | -}; |
72 | | - |
73 | | -const useUpdateAssessment = () => { |
74 | | - const encounterUpdates = useUpdateEncounterSubscription( |
75 | | - "assessment", |
76 | | - { |
77 | | - generalNotes: true, |
78 | | - }, |
79 | | - ["generalNotes"] |
80 | | - ); |
81 | | - |
82 | | - const { updateSubscriptionField, canUpdateSubscriptionParams } = |
83 | | - encounterUpdates; |
84 | | - const { watch } = useNoteFormContext(); |
85 | | - |
86 | | - const updateAssessmentNote = () => { |
87 | | - if (canUpdateSubscriptionParams) { |
88 | | - const formValues = watch(); |
89 | | - |
90 | | - updateSubscriptionField(formValues.assessment); |
91 | | - } |
92 | | - }; |
93 | | - |
94 | | - return { |
95 | | - canUpdateAssessmentNote: canUpdateSubscriptionParams, |
96 | | - updateAssessmentNote, |
97 | | - }; |
98 | | -}; |
99 | | - |
100 | | -const useUpdatePlan = () => { |
101 | | - const encounterUpdates = useUpdateEncounterSubscription( |
102 | | - "plan", |
103 | | - { |
104 | | - generalNotes: true, |
105 | | - }, |
106 | | - ["generalNotes"] |
107 | | - ); |
108 | | - |
109 | | - const { updateSubscriptionField, canUpdateSubscriptionParams } = |
110 | | - encounterUpdates; |
111 | | - const { watch } = useNoteFormContext(); |
112 | | - |
113 | | - const updatePlanNote = () => { |
114 | | - if (canUpdateSubscriptionParams) { |
115 | | - const formValues = watch(); |
116 | | - |
117 | | - updateSubscriptionField(formValues.plan); |
118 | | - } |
119 | | - }; |
120 | | - |
121 | | - return { |
122 | | - canUpdatePlanNote: canUpdateSubscriptionParams, |
123 | | - updatePlanNote, |
124 | | - }; |
125 | | -}; |
126 | | - |
127 | 21 | export const NotesSections = ({ |
128 | 22 | hoveredSegment, |
129 | 23 | transcriptionSegments, |
130 | 24 | renderHighlightedText, |
| 25 | + canUpdateSubjectiveNote, |
| 26 | + canUpdateObjectiveNote, |
| 27 | + canUpdateAssessmentNote, |
| 28 | + canUpdatePlanNote, |
| 29 | + updateSubjectiveNote, |
| 30 | + updateObjectiveNote, |
| 31 | + updateAssessmentNote, |
| 32 | + updatePlanNote, |
131 | 33 | }: NotePanelProps) => { |
132 | | - const { updateSubjectiveNote, canUpdateSubjectiveNote } = |
133 | | - useUpdateSubjective(); |
134 | | - const { updateObjectiveNote, canUpdateObjectiveNote } = useUpdateObjective(); |
135 | | - const { updateAssessmentNote, canUpdateAssessmentNote } = |
136 | | - useUpdateAssessment(); |
137 | | - const { updatePlanNote, canUpdatePlanNote } = useUpdatePlan(); |
138 | | - |
139 | 34 | const isHighlighted = (section: SectionTypes) => { |
140 | 35 | if (hoveredSegment === null) return false; |
141 | 36 | return transcriptionSegments[hoveredSegment].affectedSections.includes( |
|
0 commit comments