research_donation.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. """科研捐赠管理 — 数据模型"""
  2. from datetime import datetime
  3. from sqlalchemy import Column, Date, DateTime, Integer, Numeric, SmallInteger, String
  4. from app.models.base import Base
  5. class BizResearchDonation(Base):
  6. """科研捐赠主表 biz_research_donation"""
  7. __tablename__ = "biz_research_donation"
  8. id = Column(String(64), primary_key=True, comment="主键ID")
  9. donation_no = Column(String(64), nullable=False, comment="捐赠协议编号")
  10. monthly_verify_no = Column(String(16), nullable=True, comment="当月核量号 YYYYMM+3位序号")
  11. donation_status = Column(String(16), nullable=False, default="dsx", comment="状态 dsx/sxz/ygq/yzf/sdfq/zckc")
  12. donation_date = Column(String(8), nullable=True, comment="捐赠日期YYYYMMDD")
  13. source_type = Column(String(20), nullable=False, default="direct", comment="来源类型 direct/from_storage")
  14. source_protocol_id = Column(String(64), nullable=True, comment="来源协议ID")
  15. consent_form_urls = Column(String(4000), nullable=True, comment="知情同意书附件URL(逗号分隔)")
  16. attachment_urls = Column(String(4000), nullable=True, comment="其他附件URL(逗号分隔)")
  17. infectious_disease_report_urls = Column(
  18. String(4000), nullable=True, comment="传染病检测报告附件URL(逗号分隔)"
  19. )
  20. collector_user_id = Column(String(64), nullable=True, comment="采集专员用户ID")
  21. effective_time = Column(DateTime, nullable=True, comment="生效时间")
  22. effective_desc = Column(String(512), nullable=True, comment="生效描述")
  23. expire_time = Column(DateTime, nullable=True, comment="过期时间")
  24. expire_desc = Column(String(512), nullable=True, comment="过期描述")
  25. void_time = Column(DateTime, nullable=True, comment="作废时间")
  26. void_desc = Column(String(512), nullable=True, comment="作废描述")
  27. void_type = Column(String(32), nullable=True, comment="作废类型(字典 xyzflx)")
  28. to_storage_time = Column(DateTime, nullable=True, comment="转存储时间")
  29. to_storage_desc = Column(String(512), nullable=True, comment="转存储描述")
  30. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  31. order_num = Column(Integer, nullable=True, comment="排序号")
  32. remark = Column(String(512), nullable=True, comment="备注信息")
  33. create_by = Column(String(64), nullable=True, comment="创建人id")
  34. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  35. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  36. update_by = Column(String(64), nullable=True, comment="更新人id")
  37. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  38. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  39. class BizResearchDonationAudit(Base):
  40. """科研捐赠审核记录 biz_research_donation_audit"""
  41. __tablename__ = "biz_research_donation_audit"
  42. id = Column(String(64), primary_key=True, comment="主键ID")
  43. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠ID")
  44. auditor_user_id = Column(String(64), nullable=True, comment="审核人")
  45. audit_remark = Column(String(1000), nullable=True, comment="审核备注")
  46. audit_status = Column(String(16), nullable=False, comment="审核状态 shtg/shth")
  47. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  48. order_num = Column(Integer, nullable=True, comment="排序号")
  49. remark = Column(String(512), nullable=True, comment="备注")
  50. create_by = Column(String(64), nullable=True, comment="创建人id")
  51. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  52. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  53. update_by = Column(String(64), nullable=True, comment="更新人id")
  54. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  55. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  56. class BizDonationStatusChange(Base):
  57. """科研捐赠-状态变更记录 biz_donation_status_change"""
  58. __tablename__ = "biz_donation_status_change"
  59. id = Column(String(64), primary_key=True, comment="主键ID")
  60. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠单ID")
  61. change_type = Column(String(32), nullable=False, comment="变更类型 activate/expire/void/to_storage")
  62. from_status = Column(String(16), nullable=True, comment="变更前状态码")
  63. to_status = Column(String(16), nullable=False, comment="变更后状态码")
  64. change_time = Column(DateTime, nullable=False, comment="业务变更时间")
  65. change_desc = Column(String(512), nullable=True, comment="变更描述")
  66. void_type = Column(String(32), nullable=True, comment="作废类型(字典 xyzflx)")
  67. operator_user_id = Column(String(64), nullable=True, comment="操作人用户ID")
  68. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  69. order_num = Column(Integer, nullable=True, comment="排序号")
  70. remark = Column(String(512), nullable=True, comment="备注")
  71. create_by = Column(String(64), nullable=True, comment="创建人id")
  72. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  73. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  74. update_by = Column(String(64), nullable=True, comment="更新人id")
  75. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  76. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  77. class BizResearchDonationParty(Base):
  78. """科研捐赠当事人信息 biz_research_donation_party"""
  79. __tablename__ = "biz_research_donation_party"
  80. id = Column(String(64), primary_key=True, comment="主键ID")
  81. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠ID")
  82. customer_id = Column(String(64), nullable=True, comment="母亲客户ID")
  83. father_customer_id = Column(String(64), nullable=True, comment="父亲客户ID")
  84. newborn_customer_id = Column(String(64), nullable=True, comment="子女客户ID")
  85. mother_name = Column(String(100), nullable=True, comment="母亲姓名")
  86. mother_phone = Column(String(32), nullable=True, comment="母亲电话")
  87. mother_id_card = Column(String(32), nullable=True, comment="母亲身份证号")
  88. mother_birth_ym = Column(String(6), nullable=True, comment="母亲出生年月YYYYMM")
  89. mother_ethnic = Column(String(32), nullable=True, comment="母亲民族")
  90. mother_email = Column(String(128), nullable=True, comment="母亲邮箱")
  91. mother_address = Column(String(512), nullable=True, comment="母亲地址")
  92. father_name = Column(String(100), nullable=True, comment="父亲姓名")
  93. father_phone = Column(String(32), nullable=True, comment="父亲电话")
  94. father_id_card = Column(String(32), nullable=True, comment="父亲身份证号")
  95. newborn_name = Column(String(100), nullable=True, comment="新生儿姓名")
  96. newborn_id_card = Column(String(32), nullable=True, comment="新生儿身份证号")
  97. expected_delivery_date = Column(Date, nullable=True, comment="预产期")
  98. newborn_delivery_time = Column(DateTime, nullable=True, comment="新生儿分娩时间")
  99. newborn_sex = Column(String(1), nullable=True, comment="新生儿性别")
  100. delivery_mode = Column(String(16), nullable=True, comment="分娩方式")
  101. birth_order = Column(Integer, nullable=True, comment="出生顺序")
  102. newborn_weight_gram = Column(Integer, nullable=True, comment="新生儿体重(克)")
  103. apgar_1min = Column(Numeric(4, 1), nullable=True, comment="Apgar 1分钟评分")
  104. apgar_5min = Column(Numeric(4, 1), nullable=True, comment="Apgar 5分钟评分")
  105. collector_user_id = Column(String(64), nullable=True, comment="采集专员用户ID")
  106. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  107. order_num = Column(Integer, nullable=True, comment="排序号")
  108. remark = Column(String(512), nullable=True, comment="备注")
  109. create_by = Column(String(64), nullable=True, comment="创建人id")
  110. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  111. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  112. update_by = Column(String(64), nullable=True, comment="更新人id")
  113. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  114. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  115. class BizResearchDonationCollection(Base):
  116. """科研捐赠采集信息 biz_research_donation_collection"""
  117. __tablename__ = "biz_research_donation_collection"
  118. id = Column(String(64), primary_key=True, comment="主键ID")
  119. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠ID")
  120. region_id = Column(String(64), nullable=True, comment="区域ID")
  121. hospital_id = Column(String(64), nullable=True, comment="医院ID")
  122. medical_staff = Column(String(200), nullable=True, comment="医护人员")
  123. sales_user_id = Column(String(64), nullable=True, comment="市场专员用户ID")
  124. region_manager_user_id = Column(String(64), nullable=True, comment="地区经理用户ID")
  125. sample_collect_time = Column(DateTime, nullable=True, comment="样本采集时间")
  126. maternal_blood_collect_time = Column(DateTime, nullable=True, comment="母血采集时间")
  127. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  128. order_num = Column(Integer, nullable=True, comment="排序号")
  129. remark = Column(String(512), nullable=True, comment="备注")
  130. create_by = Column(String(64), nullable=True, comment="创建人id")
  131. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  132. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  133. update_by = Column(String(64), nullable=True, comment="更新人id")
  134. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  135. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  136. class BizResearchDonationSample(Base):
  137. """科研捐赠样本信息 biz_research_donation_sample(无金额字段)"""
  138. __tablename__ = "biz_research_donation_sample"
  139. id = Column(String(64), primary_key=True, comment="主键ID")
  140. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠ID")
  141. sample_type_id = Column(String(64), nullable=True, comment="样本类型ID")
  142. sample_code_id = Column(String(64), nullable=True, comment="样本编码ID")
  143. sample_code = Column(String(32), nullable=True, comment="样本编码")
  144. collect_amount = Column(Numeric(18, 4), nullable=True, comment="采集量")
  145. unit_id = Column(String(64), nullable=True, comment="单位ID")
  146. storage_years = Column(Integer, nullable=True, comment="存储年限")
  147. sample_status = Column(String(16), nullable=True, comment="样本状态")
  148. storage_in_date = Column(String(8), nullable=True, comment="入库日期YYYYMMDD")
  149. detect_start_date = Column(String(8), nullable=True, comment="检测开始日期YYYYMMDD")
  150. void_date = Column(String(8), nullable=True, comment="作废日期YYYYMMDD")
  151. storage_expire_date = Column(String(8), nullable=True, comment="存储到期日期YYYYMMDD")
  152. is_special = Column(SmallInteger, nullable=False, default=0, comment="是否特殊样本:0否 1是")
  153. special_remark = Column(String(256), nullable=True, comment="特殊说明")
  154. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  155. order_num = Column(Integer, nullable=True, comment="排序号")
  156. remark = Column(String(512), nullable=True, comment="备注")
  157. create_by = Column(String(64), nullable=True, comment="创建人id")
  158. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  159. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  160. update_by = Column(String(64), nullable=True, comment="更新人id")
  161. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  162. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  163. class BizResearchDonationSampleTransport(Base):
  164. """科研捐赠样本运输 biz_research_donation_sample_transport"""
  165. __tablename__ = "biz_research_donation_sample_transport"
  166. id = Column(String(64), primary_key=True, comment="主键ID")
  167. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠ID")
  168. sample_id = Column(String(64), nullable=False, comment="样本ID")
  169. sample_code = Column(String(32), nullable=True, comment="样本编码快照")
  170. transport_type = Column(String(16), nullable=False, comment="kdys快递运输 ryxd人员携带")
  171. express_company_id = Column(String(64), nullable=True, comment="快递公司ID")
  172. waybill_no = Column(String(128), nullable=True, comment="快递单号")
  173. dest_site_id = Column(String(64), nullable=True, comment="目的站点ID")
  174. express_fee = Column(Numeric(18, 2), nullable=True, comment="快递费用(元)")
  175. eta_time = Column(DateTime, nullable=True, comment="预计到达时间")
  176. carrier_name = Column(String(100), nullable=True, comment="携带人员姓名")
  177. carrier_phone = Column(String(32), nullable=True, comment="携带人员联系电话")
  178. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  179. order_num = Column(Integer, nullable=True, comment="排序号")
  180. remark = Column(String(512), nullable=True, comment="备注")
  181. create_by = Column(String(64), nullable=True, comment="创建人id")
  182. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  183. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  184. update_by = Column(String(64), nullable=True, comment="更新人id")
  185. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  186. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")
  187. class BizProtocolDonationConvert(Base):
  188. """细胞存储协议与科研捐赠转移关联 biz_protocol_donation_convert"""
  189. __tablename__ = "biz_protocol_donation_convert"
  190. id = Column(String(64), primary_key=True, comment="主键ID")
  191. convert_type = Column(String(32), nullable=False, comment="storage_to_research/research_to_storage")
  192. protocol_id = Column(String(64), nullable=False, comment="采集协议单ID")
  193. research_donation_id = Column(String(64), nullable=False, comment="科研捐赠单ID")
  194. biz_no = Column(String(64), nullable=False, comment="转移完成时共用编号快照")
  195. tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
  196. order_num = Column(Integer, nullable=True, comment="排序号")
  197. remark = Column(String(512), nullable=True, comment="备注")
  198. create_by = Column(String(64), nullable=True, comment="创建人id")
  199. create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID")
  200. create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间")
  201. update_by = Column(String(64), nullable=True, comment="更新人id")
  202. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间")
  203. del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")