Skip to main content
Glama
BaseChat.stories.tsx10.7 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { createReference, getReferenceString } from '@medplum/core'; import { DrAliceSmith, HomerSimpson } from '@medplum/mock'; import type { Meta } from '@storybook/react'; import type { JSX } from 'react'; import { Document } from '../../Document/Document'; import { withMockedDate } from '../../stories/decorators'; import { BaseChat } from './BaseChat'; export default { title: 'Medplum/Chat/BaseChat', component: BaseChat, decorators: [withMockedDate], } as Meta; export const Basic = (): JSX.Element => { const sent1 = new Date(); const received1 = new Date(sent1); received1.setMilliseconds(sent1.getMilliseconds() + 100); const sent2 = new Date(sent1); sent2.setSeconds(sent1.getSeconds() + 1); const received2 = new Date(sent2); received2.setMilliseconds(sent2.getMilliseconds() + 100); return ( <Document> <div style={{ width: 360, height: 400, margin: '0 auto' }}> <BaseChat title="Chat with Homer Simpson" query={`sender=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}&recipient=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}`} communications={[ { id: 'message-1', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'completed', payload: [ { contentString: 'Hi, Homer. Can you come in to discuss treatment for your radiation poisoning?' }, ], sent: sent1.toISOString(), }, { id: 'message-2', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'completed', payload: [{ contentString: 'Aww, not again... Doh!' }], sent: sent2.toISOString(), }, ]} setCommunications={() => undefined} sendMessage={() => undefined} /> </div> </Document> ); }; export const DeliveredTimestamps = (): JSX.Element => { const sent1 = new Date(); const received1 = new Date(sent1); received1.setMilliseconds(sent1.getMilliseconds() + 100); const sent2 = new Date(sent1); sent2.setSeconds(sent1.getSeconds() + 1); const received2 = new Date(sent2); received2.setMilliseconds(sent2.getMilliseconds() + 100); return ( <Document> <div style={{ width: 360, height: 400, margin: '0 auto' }}> <BaseChat title="Chat with Homer Simpson" query={`sender=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}&recipient=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}`} communications={[ { id: 'message-1', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'completed', payload: [ { contentString: 'Hi, Homer. Can you come in to discuss treatment for your radiation poisoning?' }, ], sent: sent1.toISOString(), received: received1.toISOString(), }, { id: 'message-2', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'completed', payload: [{ contentString: 'Aww, not again... Doh!' }], sent: sent2.toISOString(), received: received2.toISOString(), }, ]} setCommunications={() => undefined} sendMessage={() => undefined} /> </div> </Document> ); }; export const ChatScrolls = (): JSX.Element => { const sent1 = new Date(); const sent2 = new Date(sent1); sent2.setSeconds(sent1.getSeconds() + 1); const sent3 = new Date(sent2); sent3.setSeconds(sent2.getSeconds() + 1); const sent4 = new Date(sent3); sent4.setSeconds(sent3.getSeconds() + 1); const sent5 = new Date(sent4); sent5.setSeconds(sent4.getSeconds() + 1); const sent6 = new Date(sent5); sent6.setSeconds(sent5.getSeconds() + 1); return ( <Document> <div style={{ width: 360, height: 400, margin: '0 auto' }}> <BaseChat title="Chat with Homer Simpson" query={`sender=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}&recipient=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}`} communications={[ { id: 'message-1', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'in-progress', payload: [ { contentString: 'Hi, Homer. Can you come in to discuss treatment for your radiation poisoning?' }, ], sent: sent1.toISOString(), }, { id: 'message-2', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'in-progress', payload: [{ contentString: 'Aww, not again... Doh!' }], sent: sent2.toISOString(), }, { id: 'message-3', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'in-progress', payload: [{ contentString: "Homer, I haven't received your labs yet. Did you go for your lab work?" }], sent: sent3.toISOString(), }, { id: 'message-4', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'in-progress', payload: [{ contentString: 'Of course I did! Must be in the mail' }], sent: sent4.toISOString(), }, { id: 'message-5', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'in-progress', payload: [{ contentString: 'Homer, this is for your own wellbeing. You need to take this seriously.' }], sent: sent1.toISOString(), }, { id: 'message-6', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'in-progress', payload: [{ contentString: "Well I stopped eating donuts didn't I? Sometimes..." }], sent: sent2.toISOString(), }, ]} setCommunications={() => undefined} sendMessage={() => undefined} /> </div> </Document> ); }; export const InputDisabled = (): JSX.Element => { const sent1 = new Date(); const received1 = new Date(sent1); received1.setMilliseconds(sent1.getMilliseconds() + 100); const sent2 = new Date(sent1); sent2.setSeconds(sent1.getSeconds() + 1); const received2 = new Date(sent2); received2.setMilliseconds(sent2.getMilliseconds() + 100); return ( <Document> <div style={{ width: 360, height: 400, margin: '0 auto' }}> <BaseChat title="Chat with Homer Simpson" query={`sender=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}&recipient=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}`} communications={[ { id: 'message-1', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'completed', payload: [ { contentString: 'Hi, Homer. Can you come in to discuss treatment for your radiation poisoning?' }, ], sent: sent1.toISOString(), received: received1.toISOString(), }, { id: 'message-2', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'completed', payload: [{ contentString: 'Aww, not again... Doh!' }], sent: sent2.toISOString(), received: received2.toISOString(), }, ]} setCommunications={() => undefined} sendMessage={() => undefined} inputDisabled /> </div> </Document> ); }; export const WithoutHeader = (): JSX.Element => { const sent1 = new Date(); const sent2 = new Date(sent1); sent2.setSeconds(sent1.getSeconds() + 1); return ( <Document> <div style={{ width: 360, height: 400, margin: '0 auto' }}> <BaseChat title="Chat with Homer Simpson" query={`sender=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}&recipient=${getReferenceString(HomerSimpson)},${getReferenceString(DrAliceSmith)}`} communications={[ { id: 'message-1', resourceType: 'Communication', sender: createReference(DrAliceSmith), recipient: [createReference(HomerSimpson)], status: 'completed', payload: [ { contentString: 'Hi, Homer. Can you come in to discuss treatment for your radiation poisoning?' }, ], sent: sent1.toISOString(), }, { id: 'message-2', resourceType: 'Communication', sender: createReference(HomerSimpson), recipient: [createReference(DrAliceSmith)], status: 'completed', payload: [{ contentString: 'Aww, not again... Doh!' }], sent: sent2.toISOString(), }, ]} setCommunications={() => undefined} sendMessage={() => undefined} excludeHeader /> </div> </Document> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server