96 lines
5.0 KiB
Python
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="备注")
|