Files
zkxw/backend/app/schemas/qc_work_order.py
T
2026-05-28 19:11:31 +08:00

96 lines
5.0 KiB
Python

from pydantic import BaseModel, ConfigDict, Field
from typing import Optional
class OutboundQcDetailApplication(BaseModel):
"""出库质检查看 - 申请单信息"""
model_config = ConfigDict(populate_by_name=True)
application_no: Optional[str] = Field(None, alias="applicationNo")
application_name: Optional[str] = Field(None, alias="applicationName")
application_status: Optional[str] = Field(None, alias="applicationStatus")
channel_name: Optional[str] = Field(None, alias="channelName")
class OutboundQcDetailPatient(BaseModel):
"""出库质检查看 - 患者信息"""
model_config = ConfigDict(populate_by_name=True)
patient_name: Optional[str] = Field(None, alias="patientName")
sex: Optional[str] = Field(None)
age: Optional[str] = Field(None)
phone_no: Optional[str] = Field(None, alias="phoneNo")
id_card_no: Optional[str] = Field(None, alias="idCardNo")
emergency_contact: Optional[str] = Field(None, alias="emergencyContact")
emergency_phone: Optional[str] = Field(None, alias="emergencyPhone")
clinical_diagnosis: Optional[str] = Field(None, alias="clinicalDiagnosis")
diagnosis_attachments: Optional[str] = Field(None, alias="diagnosisAttachments")
class OutboundQcDetailInfusionPlan(BaseModel):
"""出库质检查看 - 输注方案信息"""
model_config = ConfigDict(populate_by_name=True)
cell_type: Optional[str] = Field(None, alias="cellType")
spec_text: Optional[str] = Field(None, alias="specText")
total_course_count: Optional[int] = Field(None, alias="totalCourseCount")
course_interval: Optional[str] = Field(None, alias="courseInterval")
infusion_route: Optional[str] = Field(None, alias="infusionRoute")
infusion_start_date: Optional[str] = Field(None, alias="infusionStartDate")
class OutboundQcDetailInfusionSchedule(BaseModel):
"""出库质检查看 - 输注计划信息"""
model_config = ConfigDict(populate_by_name=True)
infusion_time: Optional[str] = Field(None, alias="infusionTime")
infusion_location: Optional[str] = Field(None, alias="infusionLocation")
infusion_method: Optional[str] = Field(None, alias="infusionMethod")
schedule_status: Optional[str] = Field(None, alias="scheduleStatus")
infusion_status: Optional[str] = Field(None, alias="infusionStatus")
qc_status: Optional[str] = Field(None, alias="qcStatus")
cancel_reason: Optional[str] = Field(None, alias="cancelReason")
class OutboundQcDetailProduct(BaseModel):
"""出库质检查看 - 产品明细"""
model_config = ConfigDict(populate_by_name=True)
project_code: Optional[str] = Field(None, alias="projectCode")
project_name: Optional[str] = Field(None, alias="projectName")
cell_type_name: Optional[str] = Field(None, alias="cellTypeName")
spec_text: Optional[str] = Field(None, alias="specText")
agreement_price: Optional[float] = Field(None, alias="agreementPrice")
actual_price: Optional[float] = Field(None, alias="actualPrice")
quantity: Optional[int] = Field(None)
product_status: Optional[str] = Field(None, alias="productStatus")
class OutboundQcDetailResponse(BaseModel):
"""出库质检聚合详情"""
model_config = ConfigDict(populate_by_name=True)
work_order: Optional[dict] = Field(None, alias="workOrder")
application: Optional[OutboundQcDetailApplication] = Field(None, alias="application")
patient: Optional[OutboundQcDetailPatient] = Field(None, alias="patient")
infusion_plan: Optional[OutboundQcDetailInfusionPlan] = Field(None, alias="infusionPlan")
infusion_schedule: Optional[OutboundQcDetailInfusionSchedule] = Field(None, alias="infusionSchedule")
products: Optional[list[OutboundQcDetailProduct]] = Field(None, alias="products")
tasks: Optional[list[dict]] = Field(None, alias="tasks")
class QcWorkOrderCreateBody(BaseModel):
"""手动创建质检工单"""
model_config = ConfigDict(populate_by_name=True)
work_order_type: Optional[str] = Field("inbound", alias="workOrderType", description="工单类型 inbound/temporary")
protocol_no: Optional[str] = Field(None, alias="protocolNo", description="协议号")
sample_code: Optional[str] = Field(None, alias="sampleCode", description="样本编码")
reception_source: Optional[str] = Field("cell_storage", alias="receptionSource", description="来源类型")
qc_biz_type: Optional[str] = Field("inbound", alias="qcBizType", description="质检业务类型")
cell_product_id: Optional[str] = Field(None, alias="cellProductId", description="质检对象-细胞产品ID")
remark: Optional[str] = Field(None, description="备注")
class QcWorkOrderUpdateBody(BaseModel):
"""编辑质检工单(入库/出库可改备注与状态;临时可含质检对象)"""
model_config = ConfigDict(populate_by_name=True)
cell_product_id: Optional[str] = Field(None, alias="cellProductId", description="质检对象-细胞产品ID")
work_order_status: Optional[str] = Field(None, alias="workOrderStatus", description="工单状态")
remark: Optional[str] = Field(None, description="备注")