Compare commits
No commits in common. "abfe04f2b9b3a4024b3424c3924414bc8abd2f66" and "3a4c0669ef8e75addda3d1b588bbe1413c70e87a" have entirely different histories.
abfe04f2b9
...
3a4c0669ef
Binary file not shown.
|
|
@ -73,31 +73,33 @@ if __name__ == "__main__":
|
|||
# 初始化在保被保险人表(TPA作业系统包括团单、个单和被保险人表,此处直接整合为宽表)
|
||||
self._execute(
|
||||
sql="""
|
||||
CREATE TABLE IF NOT EXISTS insured_persons
|
||||
CREATE TABLE IF NOT EXISTS insured_person_policies
|
||||
(
|
||||
--团单号
|
||||
group_policy TEXT NOT NULL,
|
||||
--个单号
|
||||
person_policy TEXT NOT NULL,
|
||||
--保险分公司
|
||||
insurer_company TEXT NOT NULL,
|
||||
--主被保险人
|
||||
master_insured_person TEXT NOT NULL,
|
||||
--被保险人
|
||||
insured_person TEXT NOT NULL,
|
||||
--证件类型
|
||||
--被保险人的证件类型
|
||||
identity_type TEXT NOT NULL,
|
||||
--证件号码
|
||||
--被保险人的证件号码
|
||||
identity_number TEXT NOT NULL,
|
||||
--与主被保险人关系,包括本人和附属(附属包括配偶、父母和子女等)
|
||||
--与主被保险人关系,包括本人和附属(配偶、父母和子女)
|
||||
relationship TEXT NOT NULL,
|
||||
--个单号
|
||||
person_policy TEXT NOT NULL,
|
||||
--主被保险人
|
||||
master_insured_person TEXT NOT NULL,
|
||||
--保险起期(取个单和团单起期最大值)
|
||||
commencement_date TEXT NOT NULL,
|
||||
commencement_date REAL NOT NULL,
|
||||
--保险止期(取个单和团单止期最小值)
|
||||
termination_date TEXT NOT NULL,
|
||||
--联合主键(被保险人+证件类型+证件号码+保险分公司)
|
||||
PRIMARY KEY (insured_person, identity_type,
|
||||
identity_number, insurer_company)
|
||||
termination_date REAL NOT NULL,
|
||||
--团单号
|
||||
group_policy TEXT NOT NULL,
|
||||
--投保公司
|
||||
insurance_company TEXT NOT NULL,
|
||||
--保险分公司
|
||||
insurer_company TEXT NOT NULL,
|
||||
--联合主键(投保公司+保险分公司+被保险人+被保险人的证件类型+被保险人的证件号码)
|
||||
PRIMARY KEY (insurance_company, insurer_company, insured_person, identity_type,
|
||||
identity_number)
|
||||
)
|
||||
"""
|
||||
)
|
||||
|
|
@ -158,20 +160,22 @@ if __name__ == "__main__":
|
|||
raise RuntimeError("查询并获取单条购药及就医机构类型发生异常")
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
def query_insured_persons(
|
||||
def query_insured_person_records(
|
||||
self,
|
||||
insurance_company: str,
|
||||
insurer_company: str,
|
||||
insured_person: str,
|
||||
identity_type: str,
|
||||
identity_number: str,
|
||||
) -> Optional[List[Dict[str, Any]]]:
|
||||
"""
|
||||
根据保险分公司、被保险人、证件类型和证件号码查询被保险人(备注,若夫妻同在投保公司则互为附加被保险人,一方被保险人记录包括本人和配偶两条)
|
||||
查询并获取多条被保险人记录(例如,若夫妻同在投保公司则互为附加被保险人,一方被保险人记录包括本人和配偶两条)
|
||||
:param insurance_company: 投保公司
|
||||
:param insurer_company: 保险分公司
|
||||
:param insured_person: 被保险人
|
||||
:param identity_type: 证件类型
|
||||
:param identity_number: 证件号码
|
||||
:return: 被保险人列表,包括被被保险人、个单号、主被保险人、与主被保险人关系、保险起期和保险止期
|
||||
:param identity_type: 被保险人的证件类型
|
||||
:param identity_number: 被保险人的证件号码
|
||||
:return: 被保险人记录
|
||||
"""
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
|
|
@ -179,20 +183,21 @@ if __name__ == "__main__":
|
|||
# noinspection SqlResolve
|
||||
result = self._query_all(
|
||||
sql="""
|
||||
SELECT group_policy AS "团单号",
|
||||
SELECT insured_person AS "被保险人",
|
||||
relationship AS "与主被保险人关系",
|
||||
person_policy AS "个单号",
|
||||
master_insured_person AS "主被保险人",
|
||||
insured_person AS "被保险人",
|
||||
relationship AS "与主被保险人关系",
|
||||
commencement_date AS "保险起期",
|
||||
termination_date AS "保险止期"
|
||||
FROM insured_persons
|
||||
WHERE insurer_company = ?
|
||||
FROM insured_person_policies
|
||||
WHERE insurance_company = ?
|
||||
AND insurer_company = ?
|
||||
AND insured_person = ?
|
||||
AND identity_type = ?
|
||||
AND identity_number = ?
|
||||
""",
|
||||
parameters=(
|
||||
insurance_company,
|
||||
insurer_company,
|
||||
insured_person,
|
||||
identity_type,
|
||||
|
|
@ -203,7 +208,7 @@ if __name__ == "__main__":
|
|||
return [
|
||||
{
|
||||
k: (
|
||||
datetime.strptime(v, "%Y-%m-%d") # 保险
|
||||
datetime.fromtimestamp(v)
|
||||
if k in ["保险起期", "保险止期"]
|
||||
else v
|
||||
)
|
||||
|
|
@ -212,11 +217,9 @@ if __name__ == "__main__":
|
|||
for e in result
|
||||
] # 将保险起期和保险止期由时间戳转为datetime对象
|
||||
raise
|
||||
# TODO: 若根据保险分公司、被保险人、证件类型和证件号码查询被保险人发生异常则流转至主数据人工处理
|
||||
# TODO: 若查询并获取多条个单和被保险人记录发生异常则流转至主数据人工处理
|
||||
except Exception:
|
||||
raise RuntimeError(
|
||||
"根据保险分公司、被保险人、证件类型和证件号码查询被保险人发生异常"
|
||||
)
|
||||
raise RuntimeError("查询并获取多条个单和被保险人记录发生异常")
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
def query_medicine(
|
||||
|
|
@ -459,21 +462,24 @@ if __name__ == "__main__":
|
|||
# noinspection PyShadowingNames
|
||||
def image_recognize(
|
||||
image,
|
||||
insurance_company,
|
||||
insurer_company,
|
||||
) -> None:
|
||||
"""
|
||||
影像件识别并整合至赔案档案
|
||||
:param image: 影像件
|
||||
:param insurance_company: 投保公司
|
||||
:param insurer_company: 保险分公司
|
||||
:return: 空
|
||||
"""
|
||||
|
||||
# TODO: 后续添加居民身份证(国徽面)和居民身份证(头像面)合并
|
||||
# noinspection PyShadowingNames
|
||||
def identity_card_recognize(image, insurer_company) -> None:
|
||||
def identity_card_recognize(image, insurance_company, insurer_company) -> None:
|
||||
"""
|
||||
居民身份证识别并整合至赔案档案
|
||||
:param image: 影像件
|
||||
:param insurance_company: 投保公司
|
||||
:param insurer_company: 保险分公司
|
||||
:return: 空
|
||||
"""
|
||||
|
|
@ -568,7 +574,8 @@ if __name__ == "__main__":
|
|||
)
|
||||
|
||||
# 查询并获取多条被保险人记录
|
||||
dossier["被保险人层"] = master_data.query_insured_persons(
|
||||
dossier["被保险人层"] = master_data.query_insured_person_records(
|
||||
insurance_company,
|
||||
insurer_company,
|
||||
insured_person, # 出险人和被保险人为同一人,视角不同:出险人为理赔,被保险人为承保/保全
|
||||
identity_type,
|
||||
|
|
@ -1080,7 +1087,7 @@ if __name__ == "__main__":
|
|||
):
|
||||
raise RuntimeError("请求深圳快瞳增值税发票识别接口发生异常")
|
||||
|
||||
match query_value(response["data"], "发票类型"):
|
||||
match receipt_type := query_value(response["data"], "发票类型"):
|
||||
case "电子发票(普通发票)":
|
||||
# noinspection PyTypeChecker
|
||||
receipt.update(
|
||||
|
|
@ -1381,6 +1388,8 @@ if __name__ == "__main__":
|
|||
match (image["影像件类型"], receipt["购药及就医机构类型"]):
|
||||
# 就增值税发票且药店扣除不合理费用、增值税发票且私立医院解析个人自费、个人自付、医保支付、不合理金额和合理金额
|
||||
case ("增值税发票", "药店"):
|
||||
receipt["购药及就医类型"] = "药店购药"
|
||||
|
||||
items = (
|
||||
pandas.DataFrame(receipt["明细项"])
|
||||
.groupby("名称") # 就相同明细项名称合并数量和金额
|
||||
|
|
@ -1423,14 +1432,6 @@ if __name__ == "__main__":
|
|||
|
||||
receipt.update(
|
||||
{
|
||||
"起期": receipt["开票日期"],
|
||||
"止期": receipt["开票日期"],
|
||||
"姓名": (
|
||||
dossier["出险人层"]["姓名"]
|
||||
if dossier["出险人层"]["姓名"] in receipt["姓名"]
|
||||
else receipt["姓名"]
|
||||
),
|
||||
"购药及就医类型": "药店购药",
|
||||
"个人自费": Decimal("0.00"),
|
||||
"个人自付": Decimal("0.00"),
|
||||
"医保支付": Decimal("0.00"),
|
||||
|
|
@ -1447,14 +1448,13 @@ if __name__ == "__main__":
|
|||
"明细项": items.to_dict("records"),
|
||||
}
|
||||
)
|
||||
|
||||
# TODO: 后续完善就购药及就医类型为门诊就诊(私立医院)处理
|
||||
# TODO: 后续完善
|
||||
case ("增值税发票", "私立医院"):
|
||||
receipt["购药及就医类型"] = "门诊就医"
|
||||
# TODO: 后续完善就购药及就医类型为门诊就诊(公立医院)处理
|
||||
# TODO: 后续完善
|
||||
case ("医疗门诊收费票据", "公立医院"):
|
||||
receipt["购药及就医类型"] = "门诊就医"
|
||||
# TODO: 后续完善就购药及就医类型为住院治疗处理
|
||||
# TODO: 后续完善
|
||||
case ("医疗住院收费票据", "公立医院"):
|
||||
receipt["购药及就医类型"] = "住院治疗"
|
||||
# TODO: 若根据影像件类型和购药及就医机构类型匹配购药及就医类型发生异常则流转至人工处理
|
||||
|
|
@ -1522,7 +1522,7 @@ if __name__ == "__main__":
|
|||
"居民身份证(国徽、头像面)" | "居民身份证(国徽面)" | "居民身份证(头像面)"
|
||||
):
|
||||
# 居民身份证识别并整合至赔案档案
|
||||
identity_card_recognize(image, insurer_company)
|
||||
identity_card_recognize(image, insurance_company, insurer_company)
|
||||
# TODO: 后续添加居民户口簿识别和整合方法
|
||||
case "中国港澳台地区及境外护照":
|
||||
raise RuntimeError("暂不支持中国港澳台地区及境外护照")
|
||||
|
|
@ -1618,6 +1618,7 @@ if __name__ == "__main__":
|
|||
# 影像件识别并整合至赔案档案
|
||||
image_recognize(
|
||||
image,
|
||||
insurance_company,
|
||||
insurer_company,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,55 +11,6 @@ from pathlib import Path
|
|||
|
||||
import edge_tts
|
||||
|
||||
task = {
|
||||
"video_path": "", # 视频路径
|
||||
"video_cover_path": "", # 视频首帧图片路径,可空
|
||||
"pictures": [
|
||||
{
|
||||
"position": (0.0, 0.0), # 图片左上角X和Y位置,于视频宽度百分比
|
||||
"size_ratio": "", # 图片尺寸比例,于视频百分比
|
||||
"picture_path": "", # 图片尺寸比例,于视频百分比
|
||||
}, # 图片
|
||||
],
|
||||
"texts": [
|
||||
{
|
||||
"content": "", # 文字内容
|
||||
"start": "", # 文字显示开始时间
|
||||
"duration": "", # 文字展示时长,若为空值则默认为视频播放时长
|
||||
"background_position": (0.0, 0.0), # 背景左上角X和Y位置
|
||||
"background_color": "", # 背景颜色
|
||||
"background_opacity": "", # 背景透明度
|
||||
"stroke_color": "", # 边框颜色
|
||||
"stroke_width": "", # 边框线宽
|
||||
"font_size": "", # 字体大小
|
||||
"font_color": "", # 字体颜色
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
from pycapcut import DraftFolder
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
# 指定剪映草稿文件夹地址
|
||||
folder_path = {
|
||||
"win32": r"C:\Users\admin\AppData\Local\JianyingPro\User Data\Projects\com.lveditor.draft".replace(
|
||||
"\\", "/"
|
||||
), # 若当前系统为windows则将剪映草稿文件夹原始字符串(避免转义问题)中反斜杠"\"转为正斜杠“/”
|
||||
"darwin": None,
|
||||
}.get(sys.platform)
|
||||
|
||||
if not folder_path:
|
||||
raise RuntimeError("未指定剪映草稿文件夹地址")
|
||||
|
||||
# 初始化剪映草稿文件夹
|
||||
folder = DraftFolder(folder_path)
|
||||
|
||||
print(folder)
|
||||
|
||||
exit()
|
||||
|
||||
|
||||
async def audio_gen(
|
||||
text: str, output_path: Path, voice_name: str = "zh-CN-XiaoxiaoNeural"
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue