|
@@ -10,6 +10,7 @@ import {
|
|
|
Space,
|
|
|
} from 'antd';
|
|
|
import { useIntl, FormattedMessage } from 'react-intl';
|
|
|
+import { registerFormFields } from '@/validation/patient/registerSchema';
|
|
|
|
|
|
const genderOptions = [
|
|
|
{
|
|
@@ -32,36 +33,6 @@ const genderOptions = [
|
|
|
},
|
|
|
];
|
|
|
|
|
|
-const bodyTypeOptions = [
|
|
|
- {
|
|
|
- value: 'slim',
|
|
|
- label: (
|
|
|
- <FormattedMessage
|
|
|
- id="register.bodyType.slim"
|
|
|
- defaultMessage="register.bodyType.slim"
|
|
|
- />
|
|
|
- ),
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'average',
|
|
|
- label: (
|
|
|
- <FormattedMessage
|
|
|
- id="register.bodyType.average"
|
|
|
- defaultMessage="register.bodyType.average"
|
|
|
- />
|
|
|
- ),
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Large',
|
|
|
- label: (
|
|
|
- <FormattedMessage
|
|
|
- id="register.bodyType.fat"
|
|
|
- defaultMessage="register.bodyType.fat"
|
|
|
- />
|
|
|
- ),
|
|
|
- },
|
|
|
-];
|
|
|
-
|
|
|
const pregnancyStatusOptions = [
|
|
|
{
|
|
|
value: 'yes',
|
|
@@ -92,26 +63,6 @@ const pregnancyStatusOptions = [
|
|
|
},
|
|
|
];
|
|
|
|
|
|
-const bodyPartOptions = [
|
|
|
- {
|
|
|
- value: 'head',
|
|
|
- label: (
|
|
|
- <FormattedMessage
|
|
|
- id="register.bodyPart.head"
|
|
|
- defaultMessage="register.bodyPart.head"
|
|
|
- />
|
|
|
- ),
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'chest',
|
|
|
- label: (
|
|
|
- <FormattedMessage
|
|
|
- id="register.bodyPart.chest"
|
|
|
- defaultMessage="register.bodyPart.chest"
|
|
|
- />
|
|
|
- ),
|
|
|
- },
|
|
|
-];
|
|
|
interface BasicInfoFormProps {
|
|
|
style?: React.CSSProperties;
|
|
|
form?: FormInstance;
|
|
@@ -120,6 +71,25 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({ style, form }) => {
|
|
|
const intl = useIntl();
|
|
|
return (
|
|
|
<Form form={form} layout="vertical" style={style}>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.accessionNumber"
|
|
|
+ defaultMessage="register.accessionNumber"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="accession_number"
|
|
|
+ required={registerFormFields.accession_number.required}
|
|
|
+ validateTrigger={registerFormFields.accession_number.trigger}
|
|
|
+ rules={registerFormFields.accession_number.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.accessionNumber.placeholder',
|
|
|
+ defaultMessage: 'register.accessionNumber.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
@@ -128,6 +98,9 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({ style, form }) => {
|
|
|
/>
|
|
|
}
|
|
|
name="patient_id"
|
|
|
+ required={registerFormFields.patient_id.required}
|
|
|
+ validateTrigger={registerFormFields.patient_id.trigger}
|
|
|
+ rules={registerFormFields.patient_id.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
@@ -144,6 +117,9 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({ style, form }) => {
|
|
|
/>
|
|
|
}
|
|
|
name="patient_name"
|
|
|
+ required={registerFormFields.patient_name.required}
|
|
|
+ validateTrigger={registerFormFields.patient_name.trigger}
|
|
|
+ rules={registerFormFields.patient_name.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
@@ -155,98 +131,218 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({ style, form }) => {
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.previousName"
|
|
|
- defaultMessage="register.previousName"
|
|
|
+ id="register.patientSize"
|
|
|
+ defaultMessage="register.patientSize"
|
|
|
/>
|
|
|
}
|
|
|
- name="previousName"
|
|
|
+ name="patient_size"
|
|
|
+ required={registerFormFields.patient_size.required}
|
|
|
+ validateTrigger={registerFormFields.patient_size.trigger}
|
|
|
+ rules={registerFormFields.patient_size.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.previousName.placeholder',
|
|
|
- defaultMessage: 'register.previousName.placeholder',
|
|
|
+ id: 'register.patientSize.placeholder',
|
|
|
+ defaultMessage: 'register.patientSize.placeholder',
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage id="register.age" defaultMessage="register.age" />
|
|
|
+ }
|
|
|
+ name="patient_age"
|
|
|
+ required={registerFormFields.patient_age.required}
|
|
|
+ validateTrigger={registerFormFields.patient_age.trigger}
|
|
|
+ rules={registerFormFields.patient_age.validation}
|
|
|
+ >
|
|
|
+ <Space.Compact>
|
|
|
+ <InputNumber min={0} style={{ width: '70%' }} />
|
|
|
+ <Select style={{ width: '30%' }}>
|
|
|
+ <Select.Option value="D">天</Select.Option>
|
|
|
+ <Select.Option value="M">月</Select.Option>
|
|
|
+ <Select.Option value="Y">年</Select.Option>
|
|
|
+ </Select>
|
|
|
+ </Space.Compact>
|
|
|
+ </Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.englishName"
|
|
|
- defaultMessage="register.englishName"
|
|
|
+ id="register.dateOfBirth"
|
|
|
+ defaultMessage="register.dateOfBirth"
|
|
|
/>
|
|
|
}
|
|
|
- name="englishName"
|
|
|
+ name="patient_dob"
|
|
|
+ required={registerFormFields.patient_dob.required}
|
|
|
+ validateTrigger={registerFormFields.patient_dob.trigger}
|
|
|
+ rules={registerFormFields.patient_dob.validation}
|
|
|
+ >
|
|
|
+ <DatePicker format="YYYY-MM-DD" style={{ width: '100%' }} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.gender"
|
|
|
+ defaultMessage="register.gender"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="patient_sex"
|
|
|
+ required={registerFormFields.patient_sex.required}
|
|
|
+ validateTrigger={registerFormFields.patient_sex.trigger}
|
|
|
+ rules={registerFormFields.patient_sex.validation}
|
|
|
+ >
|
|
|
+ <Select options={genderOptions} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.sexNeutered"
|
|
|
+ defaultMessage="register.sexNeutered"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="sex_neutered"
|
|
|
+ required={registerFormFields.sex_neutered.required}
|
|
|
+ validateTrigger={registerFormFields.sex_neutered.trigger}
|
|
|
+ rules={registerFormFields.sex_neutered.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.englishName.placeholder',
|
|
|
- defaultMessage: 'register.englishName.placeholder',
|
|
|
+ id: 'register.sexNeutered.placeholder',
|
|
|
+ defaultMessage: 'register.sexNeutered.placeholder',
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.registrationNo"
|
|
|
- defaultMessage="register.registrationNo"
|
|
|
+ id="register.pregnancyStatus"
|
|
|
+ defaultMessage="register.pregnancyStatus"
|
|
|
/>
|
|
|
}
|
|
|
- name="registrationNo"
|
|
|
+ name="pregnancy_status"
|
|
|
+ required={registerFormFields.pregnancy_status.required}
|
|
|
+ validateTrigger={registerFormFields.pregnancy_status.trigger}
|
|
|
+ rules={registerFormFields.pregnancy_status.validation}
|
|
|
+ >
|
|
|
+ <Radio.Group
|
|
|
+ options={pregnancyStatusOptions}
|
|
|
+ optionType="button"
|
|
|
+ buttonStyle="solid"
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.chipNumber"
|
|
|
+ defaultMessage="register.chipNumber"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="chip_number"
|
|
|
+ required={registerFormFields.chip_number.required}
|
|
|
+ validateTrigger={registerFormFields.chip_number.trigger}
|
|
|
+ rules={registerFormFields.chip_number.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.registrationNo.placeholder',
|
|
|
- defaultMessage: 'register.registrationNo.placeholder',
|
|
|
+ id: 'register.chipNumber.placeholder',
|
|
|
+ defaultMessage: 'register.chipNumber.placeholder',
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.dateOfBirth"
|
|
|
- defaultMessage="register.dateOfBirth"
|
|
|
+ id="register.variety"
|
|
|
+ defaultMessage="register.variety"
|
|
|
/>
|
|
|
}
|
|
|
- name="patient_dob"
|
|
|
+ name="variety"
|
|
|
+ required={registerFormFields.variety.required}
|
|
|
+ validateTrigger={registerFormFields.variety.trigger}
|
|
|
+ rules={registerFormFields.variety.validation}
|
|
|
>
|
|
|
- <DatePicker format="YYYY-MM-DD" style={{ width: '100%' }} />
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.variety.placeholder',
|
|
|
+ defaultMessage: 'register.variety.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
- <FormattedMessage id="register.age" defaultMessage="register.age" />
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.patientType"
|
|
|
+ defaultMessage="register.patientType"
|
|
|
+ />
|
|
|
}
|
|
|
- name="patient_age"
|
|
|
+ name="patient_type"
|
|
|
+ required={registerFormFields.patient_type.required}
|
|
|
+ validateTrigger={registerFormFields.patient_type.trigger}
|
|
|
+ rules={registerFormFields.patient_type.validation}
|
|
|
>
|
|
|
- <Space.Compact>
|
|
|
- <InputNumber min={0} style={{ width: '70%' }} />
|
|
|
- <Select style={{ width: '30%' }}>
|
|
|
- <Select.Option value="D">天</Select.Option>
|
|
|
- <Select.Option value="M">月</Select.Option>
|
|
|
- <Select.Option value="Y">年</Select.Option>
|
|
|
- </Select>
|
|
|
- </Space.Compact>
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.patientType.placeholder',
|
|
|
+ defaultMessage: 'register.patientType.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.gender"
|
|
|
- defaultMessage="register.gender"
|
|
|
+ id="register.referringPhysician"
|
|
|
+ defaultMessage="register.referringPhysician"
|
|
|
/>
|
|
|
}
|
|
|
- name="patient_sex"
|
|
|
+ name="ref_physician"
|
|
|
+ required={registerFormFields.ref_physician.required}
|
|
|
+ validateTrigger={registerFormFields.ref_physician.trigger}
|
|
|
+ rules={registerFormFields.ref_physician.validation}
|
|
|
>
|
|
|
- <Select options={genderOptions} />
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.referringPhysician.placeholder',
|
|
|
+ defaultMessage: 'register.referringPhysician.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.bodyType"
|
|
|
- defaultMessage="register.bodyType"
|
|
|
+ id="register.operatorId"
|
|
|
+ defaultMessage="register.operatorId"
|
|
|
/>
|
|
|
}
|
|
|
- name="patient_size"
|
|
|
+ name="operator_id"
|
|
|
+ required={registerFormFields.operator_id.required}
|
|
|
+ validateTrigger={registerFormFields.operator_id.trigger}
|
|
|
+ rules={registerFormFields.operator_id.validation}
|
|
|
>
|
|
|
- <Select options={bodyTypeOptions} />
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.operatorId.placeholder',
|
|
|
+ defaultMessage: 'register.operatorId.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.modality"
|
|
|
+ defaultMessage="register.modality"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="modality"
|
|
|
+ required={registerFormFields.modality.required}
|
|
|
+ validateTrigger={registerFormFields.modality.trigger}
|
|
|
+ rules={registerFormFields.modality.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.modality.placeholder',
|
|
|
+ defaultMessage: 'register.modality.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
@@ -256,75 +352,75 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({ style, form }) => {
|
|
|
/>
|
|
|
}
|
|
|
name="weight"
|
|
|
+ required={registerFormFields.weight.required}
|
|
|
+ validateTrigger={registerFormFields.weight.trigger}
|
|
|
+ rules={registerFormFields.weight.validation}
|
|
|
>
|
|
|
<InputNumber min={0} addonAfter="kg" style={{ width: '100%' }} />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.height"
|
|
|
- defaultMessage="register.height"
|
|
|
+ id="register.thickness"
|
|
|
+ defaultMessage="register.thickness"
|
|
|
/>
|
|
|
}
|
|
|
- name="length"
|
|
|
+ name="thickness"
|
|
|
+ required={registerFormFields.thickness.required}
|
|
|
+ validateTrigger={registerFormFields.thickness.trigger}
|
|
|
+ rules={registerFormFields.thickness.validation}
|
|
|
>
|
|
|
<InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.pregnancyStatus"
|
|
|
- defaultMessage="register.pregnancyStatus"
|
|
|
+ id="register.height"
|
|
|
+ defaultMessage="register.height"
|
|
|
/>
|
|
|
}
|
|
|
- name="pregnancy_status"
|
|
|
+ name="length"
|
|
|
+ required={registerFormFields.length.required}
|
|
|
+ validateTrigger={registerFormFields.length.trigger}
|
|
|
+ rules={registerFormFields.length.validation}
|
|
|
>
|
|
|
- <Radio.Group
|
|
|
- options={pregnancyStatusOptions}
|
|
|
- optionType="button"
|
|
|
- buttonStyle="solid"
|
|
|
- />
|
|
|
+ <InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.referringPhysician"
|
|
|
- defaultMessage="register.referringPhysician"
|
|
|
+ id="register.studyType"
|
|
|
+ defaultMessage="register.studyType"
|
|
|
/>
|
|
|
}
|
|
|
- name="ref_physician"
|
|
|
+ name="study_type"
|
|
|
+ required={registerFormFields.study_type.required}
|
|
|
+ validateTrigger={registerFormFields.study_type.trigger}
|
|
|
+ rules={registerFormFields.study_type.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.referringPhysician.placeholder',
|
|
|
- defaultMessage: 'register.referringPhysician.placeholder',
|
|
|
+ id: 'register.studyType.placeholder',
|
|
|
+ defaultMessage: 'register.studyType.placeholder',
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.bodyPart"
|
|
|
- defaultMessage="register.bodyPart"
|
|
|
+ id="register.comment"
|
|
|
+ defaultMessage="register.comment"
|
|
|
/>
|
|
|
}
|
|
|
- name="bodyPart"
|
|
|
- >
|
|
|
- <Select options={bodyPartOptions} />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.accessionNumber"
|
|
|
- defaultMessage="register.accessionNumber"
|
|
|
- />
|
|
|
- }
|
|
|
- name="accession_number"
|
|
|
+ name="comment"
|
|
|
+ required={registerFormFields.comment.required}
|
|
|
+ validateTrigger={registerFormFields.comment.trigger}
|
|
|
+ rules={registerFormFields.comment.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.accessionNumber.placeholder',
|
|
|
- defaultMessage: 'register.accessionNumber.placeholder',
|
|
|
+ id: 'register.comment.placeholder',
|
|
|
+ defaultMessage: 'register.comment.placeholder',
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item>
|