Skip to content

Commit 9d22578

Browse files
committed
Disable push all when some are disabled
1 parent 8c62db7 commit 9d22578

File tree

4 files changed

+160
-144
lines changed

4 files changed

+160
-144
lines changed

vim--ai-scribe--react/src/components/organisms/notes-tab/NotesSections.tsx

Lines changed: 16 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,141 +1,36 @@
1-
import { useUpdateEncounterSubscription } from "@/vimOs/useUpdateEncounter";
21
import { SoapSection } from "../../molecules/SoapSection";
32
import type {
43
SectionTypes,
54
TranscriptionSegment,
65
} from "../ai-scribe-demo/transcription.mock";
7-
import { useNoteFormContext } from "@/providers/NoteFormContext";
86

97
interface NotePanelProps {
108
hoveredSegment: number | null;
119
transcriptionSegments: TranscriptionSegment[];
1210
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;
1319
}
1420

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-
12721
export const NotesSections = ({
12822
hoveredSegment,
12923
transcriptionSegments,
13024
renderHighlightedText,
25+
canUpdateSubjectiveNote,
26+
canUpdateObjectiveNote,
27+
canUpdateAssessmentNote,
28+
canUpdatePlanNote,
29+
updateSubjectiveNote,
30+
updateObjectiveNote,
31+
updateAssessmentNote,
32+
updatePlanNote,
13133
}: NotePanelProps) => {
132-
const { updateSubjectiveNote, canUpdateSubjectiveNote } =
133-
useUpdateSubjective();
134-
const { updateObjectiveNote, canUpdateObjectiveNote } = useUpdateObjective();
135-
const { updateAssessmentNote, canUpdateAssessmentNote } =
136-
useUpdateAssessment();
137-
const { updatePlanNote, canUpdatePlanNote } = useUpdatePlan();
138-
13934
const isHighlighted = (section: SectionTypes) => {
14035
if (hoveredSegment === null) return false;
14136
return transcriptionSegments[hoveredSegment].affectedSections.includes(

vim--ai-scribe--react/src/components/organisms/notes-tab/NotesTab.tsx

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ import { Button } from "../../atoms/Button";
55
import { DebugView } from "../../templates/DebugView";
66
import { MOCK_TRANSCRIPTION } from "../ai-scribe-demo/transcription.mock";
77
import { NotesSections } from "./NotesSections";
8+
import {
9+
useUpdateSubjective,
10+
useUpdateObjective,
11+
useUpdateAssessment,
12+
useUpdatePlan,
13+
} from "./useSectionWriteAvailability";
814

915
export const NotesTab = ({
1016
patientName,
@@ -21,6 +27,21 @@ export const NotesTab = ({
2127
const { watch } = useNoteFormContext();
2228
const currentNote = watch();
2329

30+
// Use the hooks to get write availability and update functions
31+
const { canUpdateSubjectiveNote, updateSubjectiveNote } =
32+
useUpdateSubjective();
33+
const { canUpdateObjectiveNote, updateObjectiveNote } = useUpdateObjective();
34+
const { canUpdateAssessmentNote, updateAssessmentNote } =
35+
useUpdateAssessment();
36+
const { canUpdatePlanNote, updatePlanNote } = useUpdatePlan();
37+
38+
// Only enable the button if all are true
39+
const canPushAll =
40+
canUpdateSubjectiveNote &&
41+
canUpdateObjectiveNote &&
42+
canUpdateAssessmentNote &&
43+
canUpdatePlanNote;
44+
2445
const toggleDebugMode = () => {
2546
setIsDebugMode(!isDebugMode);
2647
vimOS.hub.setDynamicAppSize(isDebugMode ? "CLASSIC" : "LARGE");
@@ -41,7 +62,9 @@ export const NotesTab = ({
4162
>
4263
Transcription
4364
</Button>
44-
<Button onClick={handleFullEhrUpdate}>Push all to EHR</Button>
65+
<Button onClick={handleFullEhrUpdate} disabled={!canPushAll}>
66+
Push all to EHR
67+
</Button>
4568
</div>
4669
<div className="text-sm text-gray-500">Note saved automatically</div>
4770
</div>
@@ -59,6 +82,14 @@ export const NotesTab = ({
5982
hoveredSegment={hoveredSegment}
6083
transcriptionSegments={MOCK_TRANSCRIPTION}
6184
renderHighlightedText={renderHighlightedText}
85+
canUpdateSubjectiveNote={canUpdateSubjectiveNote}
86+
canUpdateObjectiveNote={canUpdateObjectiveNote}
87+
canUpdateAssessmentNote={canUpdateAssessmentNote}
88+
canUpdatePlanNote={canUpdatePlanNote}
89+
updateSubjectiveNote={updateSubjectiveNote}
90+
updateObjectiveNote={updateObjectiveNote}
91+
updateAssessmentNote={updateAssessmentNote}
92+
updatePlanNote={updatePlanNote}
6293
/>
6394
)}
6495
</>
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import { useUpdateEncounterSubscription } from "@/vimOs/useUpdateEncounter";
2+
import { useNoteFormContext } from "@/providers/NoteFormContext";
3+
4+
export const useUpdateSubjective = () => {
5+
const { updateSubscriptionField, canUpdateSubscriptionParams } =
6+
useUpdateEncounterSubscription("subjective", [
7+
"chiefComplaintNotes",
8+
"reviewOfSystemsNotes",
9+
]);
10+
11+
const { watch } = useNoteFormContext();
12+
13+
const updateSubjectiveNote = () => {
14+
if (canUpdateSubscriptionParams) {
15+
const formValues = watch();
16+
updateSubscriptionField(formValues.subjective);
17+
}
18+
};
19+
20+
return {
21+
canUpdateSubjectiveNote: canUpdateSubscriptionParams,
22+
updateSubjectiveNote,
23+
};
24+
};
25+
26+
export const useUpdateObjective = () => {
27+
const encounterUpdates = useUpdateEncounterSubscription("objective", [
28+
"generalNotes",
29+
"physicalExamNotes",
30+
]);
31+
32+
const { updateSubscriptionField, canUpdateSubscriptionParams } =
33+
encounterUpdates;
34+
const { watch } = useNoteFormContext();
35+
36+
const updateObjectiveNote = () => {
37+
if (canUpdateSubscriptionParams) {
38+
const formValues = watch();
39+
updateSubscriptionField(formValues.objective);
40+
}
41+
};
42+
43+
return {
44+
canUpdateObjectiveNote: canUpdateSubscriptionParams,
45+
updateObjectiveNote,
46+
};
47+
};
48+
49+
export const useUpdateAssessment = () => {
50+
const { updateSubscriptionField, canUpdateSubscriptionParams } =
51+
useUpdateEncounterSubscription("assessment", ["generalNotes"]);
52+
53+
const { watch } = useNoteFormContext();
54+
55+
const updateAssessmentNote = () => {
56+
if (canUpdateSubscriptionParams) {
57+
const formValues = watch();
58+
updateSubscriptionField(formValues.assessment);
59+
}
60+
};
61+
62+
return {
63+
canUpdateAssessmentNote: canUpdateSubscriptionParams,
64+
updateAssessmentNote,
65+
};
66+
};
67+
68+
export const useUpdatePlan = () => {
69+
const { updateSubscriptionField, canUpdateSubscriptionParams } =
70+
useUpdateEncounterSubscription("plan", ["generalNotes"]);
71+
72+
const { watch } = useNoteFormContext();
73+
74+
const updatePlanNote = () => {
75+
if (canUpdateSubscriptionParams) {
76+
const formValues = watch();
77+
updateSubscriptionField(formValues.plan);
78+
}
79+
};
80+
81+
return {
82+
canUpdatePlanNote: canUpdateSubscriptionParams,
83+
updatePlanNote,
84+
};
85+
};

0 commit comments

Comments
 (0)