UNPKG

clinical-template-editor-hzg

Version:

一个基于 React 和 TipTap 构建的临床模板编辑器组件,专为医疗行业设计

184 lines (141 loc) 4.58 kB
# Clinical Template Editor 一个基于 React 和 TipTap 构建的临床模板编辑器组件,专为医疗行业设计。 ## 🚀 功能特性 - **富文本编辑**: 基于 TipTap 的强大富文本编辑功能 - **医疗专用控件**: 支持体温单、月经史公式、日期选择、下拉框等医疗专用组件 - **多种模式**: 设计模式、表单模式、只读模式 - **模板管理**: 完整的模板创建、保存、加载功能 - **变量系统**: 支持模板变量和动态数据绑定 - **导出功能**: 支持 HTML、PDF、图片等多种格式导出 - **表格支持**: 完整的表格编辑功能,支持行高调整、边框设置 - **数学公式**: 支持 LaTeX 数学公式编辑和渲染 ## 📦 安装 ```bash npm install @hzg0304/clinical-template-editor ``` ## 🔧 基本使用 ```jsx import React, { useRef } from 'react'; import { ClinicalTemplateEditor } from '@hzg0304/clinical-template-editor'; import '@hzg0304/clinical-template-editor/dist/index.css'; function App() { const editorRef = useRef(); return ( <div style={{ height: '100vh' }}> <ClinicalTemplateEditor ref={editorRef} initialVariables={{ patientName: '张三', age: '35', gender: '男' }} /> </div> ); } export default App; ``` ## 🎯 API 参考 ### Props | 属性 | 类型 | 默认值 | 描述 | |------|------|--------|------| | `initialVariables` | `Record<string, string>` | `{}` | 初始变量值 | | `templates` | `TemplateInfo[]` | `[]` | 模板列表 | | `currentTemplateId` | `string` | - | 当前模板ID | | `onTemplateChange` | `(templateId: string) => void` | - | 模板切换回调 | ### Ref 方法 #### 内容操作 - `getContent(format?)`: 获取编辑器内容 - `setContent(content, format?)`: 设置编辑器内容 - `getHtmlWithStyle()`: 获取带样式的HTML - `appendHtml(html, options?)`: 追加HTML内容 #### 模式控制 - `getMode()`: 获取当前模式 - `setMode(mode)`: 设置编辑器模式 ('readonly' | 'form' | 'design') - `setReadOnly(isReadOnly)`: 设置只读状态 #### 变量管理 - `getVariableValues()`: 获取变量值 - `setVariableValues(values)`: 设置变量值 - `getTemplateVariables(templateName)`: 获取模板变量 #### 模板管理 - `getTemplateList()`: 获取模板列表 - `selectTemplate(templateName)`: 选择模板 - `createTemplate(templateData)`: 创建新模板 - `saveTemplate(templateData)`: 保存模板 - `updateTemplate(templateName, templateData)`: 更新模板 - `deleteTemplate(templateName)`: 删除模板 #### 导出功能 - `exportAs(format)`: 导出为指定格式 ('html' | 'pdf' | 'word') - `showPreview()`: 显示预览 ## 🏥 医疗专用功能 ### 体温单组件 ```jsx // 插入体温单 editorRef.current?.temperatureChart?.initializeChart({ id: 'temp-chart-1', patientName: '张三', patientAge: '35', patientGender: '男', inDate: '2024-01-01', outDate: '2024-01-07', diagnosis: '感冒', department: '内科', bedNumber: '001', medicalNumber: 'M001', days: 7 }); ``` ### 月经史公式 ```jsx // 插入月经史公式 editorRef.current?.menstruation?.updateFromText( '月经史:14(3-5)/(28-30),LMP:2024-01-01', 'menstrual-1' ); ``` ### 表单控件 ```jsx // 插入输入框 editorRef.current?.control?.insertField('input', 'patient-name', { placeholder: '请输入患者姓名', bindVariable: 'patientName' }); // 插入下拉框 editorRef.current?.control?.insertField('dropdown', 'gender', { options: { '男': '男', '女': '女' }, bindVariable: 'gender' }); ``` ## 🎨 样式定制 组件使用 Tailwind CSS 构建,您可以通过以下方式自定义样式: ```css /* 自定义编辑器样式 */ .editor-a4-paper { font-family: 'Microsoft YaHei', sans-serif; } /* 自定义表格样式 */ .ProseMirror table { border-collapse: collapse; } ``` ## 🔧 开发 ```bash # 克隆项目 git clone <repository-url> # 安装依赖 npm install # 启动开发服务器 npm start # 构建组件库 npm run build # 运行测试 npm test ``` ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 支持 如有问题,请联系:hzg0304 --- **注意**: 此组件专为医疗行业设计,包含医疗专用功能和术语。使用前请确保符合相关医疗软件规范和法规要求。