Skip to content

Commit 30479e4

Browse files
authored
Merge pull request #6207 from masslight/procedures-notes-update
get procedure note without requiring procedure detail
2 parents 170233d + 971e6f7 commit 30479e4

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

apps/ehr/src/features/visits/in-person/pages/ProceduresNew.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ export default function ProceduresNew(): ReactElement {
167167
const { mutateAsync: recommendBillingCodes } = useRecommendBillingCodes();
168168
const { mutateAsync: aiSuggestionNotes } = useAiSuggestionNotes();
169169
const [loadingSuggestions, setLoadingSuggestions] = useState<boolean>(false);
170+
const [loadingSuggestionNote, setLoadingSuggestionNote] = useState<boolean>(false);
170171

171172
const isReadOnly = useMemo(() => {
172173
if (isInPerson) {
@@ -233,15 +234,17 @@ export default function ProceduresNew(): ReactElement {
233234
procedureDetails: state.procedureDetails,
234235
timeSpent: state.timeSpent,
235236
});
237+
setLoadingSuggestions(false);
236238
setRecommendedBillingCodes(codes);
237-
if (formValues.procedureType === 'Laceration Repair (Suturing/Stapling)' && state.procedureDetails) {
239+
if (formValues.procedureType === 'Laceration Repair (Suturing/Stapling)') {
240+
setLoadingSuggestionNote(true);
238241
const suggestions = await aiSuggestionNotes({
239242
type: 'procedure',
240243
details: { procedureDetails: state.procedureDetails || '' },
241244
});
245+
setLoadingSuggestionNote(false);
242246
setSuggestionNote(suggestions);
243247
}
244-
setLoadingSuggestions(false);
245248
};
246249

247250
fetchRecommendedBillingCodes().catch((error) => console.log(error));
@@ -919,9 +922,12 @@ export default function ProceduresNew(): ReactElement {
919922
padding: '4px 8px 4px 8px',
920923
}}
921924
>
922-
<Typography variant="body1" style={{ fontWeight: 700 }}>
923-
Procedure Details AI Suggestions
924-
</Typography>
925+
<Container style={{ display: 'flex', alignItems: 'center', padding: 0 }}>
926+
<Typography variant="body1" style={{ fontWeight: 700 }}>
927+
Procedure Details AI Suggestions
928+
</Typography>
929+
{loadingSuggestionNote && <CircularProgress size={17} style={{ marginLeft: '7px' }} />}
930+
</Container>
925931
<Typography variant="body1">{suggestionNote?.suggestions?.join(', ')}</Typography>
926932
</Container>
927933
)}

packages/zambdas/src/ehr/ai-suggestion-notes/index.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export const index = wrapHandler('ai-suggestion-notes', async (input: ZambdaInpu
1414

1515
let prompt = undefined;
1616

17+
const { procedureDetails } = details;
1718
if (type === 'procedure') {
18-
const { procedureDetails } = details;
1919
prompt = `If the procedure material type and quantity are missing, return this message:
2020
2121
"Please specify closure type (e.g. tissue adhesive or surgical staples or sutures); if surgical staples or sutures, specify the material and quantity"
@@ -33,15 +33,23 @@ export const index = wrapHandler('ai-suggestion-notes', async (input: ZambdaInpu
3333
throw new Error('prompt is not defined');
3434
}
3535

36-
const aiResponseString = (await invokeChatbot([{ role: 'user', content: prompt }], secrets)).content.toString();
37-
console.log(aiResponseString);
38-
3936
let aiResponseObject;
40-
try {
41-
aiResponseObject = JSON.parse(aiResponseString);
42-
} catch (parseError) {
43-
console.warn('Failed to parse AI recommendations response, attempting to fix JSON format:', parseError);
44-
aiResponseObject = fixAndParseJsonObjectFromString(aiResponseString);
37+
if (procedureDetails) {
38+
const aiResponseString = (await invokeChatbot([{ role: 'user', content: prompt }], secrets)).content.toString();
39+
console.log(aiResponseString);
40+
41+
try {
42+
aiResponseObject = JSON.parse(aiResponseString);
43+
} catch (parseError) {
44+
console.warn('Failed to parse AI recommendations response, attempting to fix JSON format:', parseError);
45+
aiResponseObject = fixAndParseJsonObjectFromString(aiResponseString);
46+
}
47+
} else {
48+
aiResponseObject = {
49+
suggestions: [
50+
'Please specify closure type (e.g. tissue adhesive or surgical staples or sutures); if surgical staples or sutures, specify the material and quantity',
51+
],
52+
};
4553
}
4654

4755
return {

packages/zambdas/src/ehr/ai-suggestion-notes/validateRequestParameters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export function validateRequestParameters(input: ZambdaInput): AISuggestionNotes
2121
throw MISSING_REQUIRED_PARAMETERS(['details']);
2222
}
2323

24-
if (type === 'procedure' && !details.procedureDetails) {
24+
if (type === 'procedure' && details.procedureDetails == undefined) {
2525
throw new Error('If type is procedure, procedureDetails is required');
2626
}
2727

0 commit comments

Comments
 (0)