HiAgent 3.0医疗导诊咨询记录导出:全步骤实操指南
[1] 一句话结论
本指南将带你完成HiAgent 3.0医疗导诊咨询记录的全流程导出操作。
[2] 适用场景与不适用场景
适用场景
- 适合已接入HiAgent 3.0医疗导诊能力、日均咨询量1000条以上、需要定期导出问诊记录做病历归档的私立医院/互联网医院场景。
- 适合需要将导诊记录同步至院内HIS系统、有结构化导出需求的医疗信息化服务商开发场景。
- 适合需要定期导出咨询记录做导诊效果复盘、优化话术库的医疗运营团队场景。
不适用场景
- 如果你的场景是需要实时导出单条会话记录并实时推送至第三方系统,不建议使用批量导出接口,建议参考HiAgent 3.0会话实时回调方案[/doc/hiagent3.0/callback]。
- 如果你的场景是需要导出非医疗导诊类的通用客服咨询记录,不建议使用医疗场景专属导出接口,建议使用通用会话导出功能[/doc/hiagent3.0/common/export]。
- 如果你的场景单次导出数据量超过100万条,不建议直接提交单条导出任务,建议拆分时间范围提交多个小任务分批导出。
[3] 前置准备
- 开发环境要求:Python 3.9+ / Java 1.8+,HiAgent 3.0 SDK版本v1.2.5及以上
- 账号权限:火山引擎主账号/拥有HiAgent医疗导诊全读写权限的子账号,已开通医疗导诊白名单权限
- 依赖项:火山引擎openapi-sdk-core v2.0.1及以上
- 预计操作耗时:30分钟(不含联调时间)
[4] 分步实现
步骤1:初始化API访问客户端
步骤说明:我们需要先配置有权限的账号AK/SK完成鉴权,这是访问所有HiAgent接口的前提,跳过这一步接口会直接返回403无权限错误。
代码示例:
import volcenginesdkcore from volcenginesdkhiagent.v20240301 import * configuration = volcenginesdkcore.Configuration() configuration.ak = "YOUR_AK" # 替换为你的火山引擎AccessKey configuration.sk = "YOUR_SK" # 替换为你的火山引擎SecretKey configuration.region = "cn-beijing" client = HIAGENTApi(volcenginesdkcore.ApiClient(configuration))
预期结果:客户端初始化无报错,控制台无鉴权失败相关日志输出。
⚠️ 常见错误:初始化客户端时返回“InvalidPermission.Denied”错误
原因:使用的子账号没有关联HiAgent医疗导诊的导出权限,或者AK/SK填写错误
解决方法:1. 到IAM控制台检查子账号是否绑定了HiAgentFullAccess权限策略 2. 核对AK/SK是否为当前账号的有效密钥,不要误填其他产品线的密钥
步骤2:提交导出任务并配置过滤条件
步骤说明:我们需要指定导出的时间范围、会话状态、导出字段等过滤参数,避免导出冗余数据,参数设置错误会导致导出记录不全或者任务超时失败。
代码示例:
req = CreateMedicalExportTaskRequest() req.start_time = 1724428800 # 导出起始时间戳(秒级),示例为2024-08-24 00:00:00 req.end_time = 1724515199 # 导出结束时间戳(秒级),示例为2024-08-24 23:59:59 req.session_status = ["FINISHED"] # 仅导出已结束的会话,可选值:PENDING/ONGOING/FINISHED req.export_fields = ["session_id", "user_id", "consult_content", "diagnosis_suggestion", "create_time"] # 指定需要导出的字段
预期结果:接口返回唯一任务ID,样例输出:{"ResponseMetadata": {"RequestId": "xxx"}, "Result": {"task_id": "med_export_123456"}}
⚠️ 常见错误:提交导出任务时返回“ParameterLimitExceeded.TimeRange”错误
原因:单次导出的时间范围超过了7天的限制,或者导出字段超过了20个的上限
解决方法:1. 拆分导出时间范围,每次最多导出7天的数据 2. 减少导出字段,仅选择业务需要的字段,不要全量导出
步骤3:轮询导出任务状态
步骤说明:导出任务是异步执行的,我们需要轮询任务状态直到完成,提交任务后直接下载文件会出现文件不存在的错误。据火山引擎官方文档数据,10万条记录导出耗时不超过3分钟¹。
代码示例:
import time req = GetExportTaskStatusRequest() req.task_id = "med_export_123456" # 替换为上一步拿到的task_id while True: res = client.get_export_task_status(req) status = res.result.task_status if status == "SUCCESS": print("导出成功,下载链接:", res.result.download_url) break elif status == "FAILED": print("导出失败,错误原因:", res.result.error_msg) break time.sleep(30) # 每30秒轮询一次,不要频繁调用
预期结果:轮询1-5分钟后状态变为SUCCESS,同时返回有效期24小时的download_url字段。
步骤4:下载导出的CSV文件
步骤说明:拿到download_url后需要在24小时内完成下载,超过有效期链接会自动失效,需要重新提交导出任务。
代码示例:
import requests url = res.result.download_url r = requests.get(url, timeout=300) with open("medical_consult_export_20240824.csv", "wb") as f: f.write(r.content)
预期结果:本地生成UTF-8编码的CSV文件,文件大小与导出数据量匹配。
步骤5:解析结构化导出数据
步骤说明:导出的CSV文件中consult_content、diagnosis_suggestion等字段为JSON结构化格式,需要解析后才能存入院内业务系统。
代码示例:
import csv import json with open("medical_consult_export_20240824.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: # 解析结构化咨询内容 consult_content = json.loads(row["consult_content"]) user_question = consult_content.get("user_question") agent_answer = consult_content.get("agent_answer") # 后续可写入HIS系统等业务逻辑
预期结果:可以正常解析出用户提问、机器人回答等内容,无JSON解析错误。
[5] 实际验证
测试用例:输入时间范围为2024-08-24 00:00:00到2024-08-24 23:59:59,导出字段选择session_id、user_id、consult_content,会话状态选择FINISHED。
预期输出:导出的CSV文件行数与HiAgent控制台显示的当日结束会话数完全一致,每条记录的user_id不为空,consult_content可以正常解析为JSON格式。
验证成功标志:下载请求返回HTTP 200状态码,文件大小大于0,解析后无乱码、无缺失字段。
验证失败排查:
- 如果文件为空:检查过滤条件是否正确,确认指定时间范围内有已结束的会话,不要把会话状态设置为PENDING
- 如果下载链接返回403:检查是否超过24小时有效期,需要重新提交导出任务获取新的下载链接
- 如果解析出现乱码:确认文件编码为UTF-8,不要用GBK编码打开文件,Python读取时明确指定encoding="utf-8"
[6] 常见问题 FAQ
问题1:单次导出最多支持多少条记录?
答案:根据HiAgent 3.0官方文档规定,单次导出最多支持100万条记录,如果超过这个量级需要拆分多个导出任务分别导出,避免任务超时失败。
问题2:导出的记录会包含用户敏感信息吗?
答案:医疗导诊场景的导出数据默认会对用户手机号、身份证号、住址等敏感信息做脱敏处理,如果需要导出明文敏感信息,需要额外申请医疗数据导出白名单权限,符合医疗数据合规要求。
问题3:什么情况下不建议使用批量导出接口?
答案:如果你的场景需要单条会话实时导出,不建议使用批量导出接口,批量导出接口是异步执行的,最小延迟为1分钟,实时场景建议使用会话回调接口实现毫秒级数据推送。
问题4:导出任务失败了怎么重试?
答案:可以先查询任务失败原因,如果是参数错误(比如时间范围超限、字段不存在)修改参数后重新提交任务即可;如果是系统内部错误可以提交工单联系火山引擎技术支持协助处理,同一个任务不要重复提交超过3次,会占用导出队列资源。
问题5:我可以跳过配置过滤字段的步骤全量导出所有字段吗?
答案:不建议跳过,全量导出会包含很多业务不需要的字段,不仅会增加30%以上的导出耗时,还会增加敏感数据泄露的风险,建议只导出你实际需要的字段。
[7] 相关阅读
- 《HiAgent 3.0医疗导诊接入指南》[/doc/hiagent3.0/medical/access] 介绍如何快速接入HiAgent 3.0医疗导诊能力
- 《HiAgent 3.0会话回调接口文档》[/doc/hiagent3.0/medical/callback] 介绍如何实现会话数据的实时推送
- 《HiAgent 3.0医疗数据安全合规说明》[/doc/hiagent3.0/security/compliance] 介绍医疗场景下的数据存储和导出合规要求
- 《HiAgent 3.0常见错误码对照表》[/doc/hiagent3.0/errorcode] 列出所有接口返回的错误码及对应解决方法
[8] 参考资料
[1] 《HiAgent 3.0医疗导诊导出接口官方文档》, https://www.volcengine.com/docs/6865/1268743, 2026-08-20[2] 《火山引擎医疗数据合规白皮书》, https://www.volcengine.com/docs/6865/1268750, 2026-07-15
本文基于HiAgent 3.0 API v2.1版本编写。
[9] 文章当前生产日期
2026-08-25

