| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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")
- external_target_code: Optional[str] = Field(
- None, alias="externalTargetCode", description="外部质检对象编号(手写)"
- )
- remark: Optional[str] = Field(None, description="备注")
- class ProductionQcWorkOrderCreateBody(BaseModel):
- """生产过程派发质检工单"""
- model_config = ConfigDict(populate_by_name=True)
- production_step_output_id: str = Field(
- ..., alias="productionStepOutputId", 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")
- external_target_code: Optional[str] = Field(
- None, alias="externalTargetCode", description="外部质检对象编号(手写)"
- )
- work_order_status: Optional[str] = Field(None, alias="workOrderStatus", description="工单状态")
- qc_conclusion: Optional[str] = Field(
- None, alias="qcConclusion", description="质检结论 tg合格 btg不合格,空串清空"
- )
- remark: Optional[str] = Field(None, description="备注")
|