
说实话,第一次接触eCTD的时候,我盯着那个文件夹结构看了半天,心里嘀咕这不就是个高级点的压缩包吗?把PDF往里头一塞,改个名字,齐活。后来真正上手做项目,交上去被退回来三次,才意识到这事儿远没有看起来那么简单。它更像是在搭乐高——每块积木(也就是每个文件)看起来都能随便放,但只要你把红色积木卡在了蓝色卡槽里,或者忘了在说明书(XML)里标注这一步,整个城堡就会在某个看不见的地方歪掉。
这几年在康茂峰审阅过的申报资料没有一千也有八百了,有些错误真的是让人哭笑不得,却又年年有人踩坑。今天把这些拿出来聊聊,不是想吓唬谁,就是单纯觉得,有些跟头其实真的可以避开。
要说最冤枉的返工,绝对是PDF技术规范这块。很多同事觉得,Word写完了,Ctrl+S转成PDF,这事儿技术属性就达标了。但eCTD对PDF的要求细到令人发指,而且监管机构的验证工具可不会给你"差不多就行"的余地。
我见过最经典的场景是,某份研究报告用了个挺好看的楷体,在自己电脑上打开完美无缺,上传到eCTD系统里,审评老师那边下载一打开,好家伙,全篇乱码。原因就是字体没嵌进去。PDF标准要求是,所有非标准字体必须embedding,而且得是完整嵌入,不能是子集(subset)就糊弄过去。

还有个容易忽略的点:文件版本必须是PDF 1.4到1.7之间。有人用新版Acrobat导出了PDF 2.0,觉得自己跟上了时代,结果系统验证直接报错。这就像是你拿着新款手机去插老式耳机孔,物理上就不兼容。
另一个高频错误是交叉引用(Hyperlink)失效。比如你在3.2.S.1.3里引用了3.2.S.2.2的数据,加了个跳转链接,结果因为PDF重组或者页码变动,这个链接指向了空白页或者根本打不开的位置。这种错误在自动化验证工具里不一定能抓出来,但审评老师点到那里发现"404"了,印象分可就没了。
有个简单但费时的办法:交之前把所有PDF打印预览一遍,逐一点击每个目录条目和交叉引用。听起来很笨拙?确实。但有效。
如果说PDF是血肉,XML就是那副骨架。很多人把XML编辑当成填表,实际上它更接近轻量级的编程。DTD验证失败是这里最常见的雷区。
举个例子,你可能会在模块1的region-specific部分写了个自定义标签,觉得这样能更好说明问题,但eCTD的DTD(文档类型定义)是锁死的,多一个空格、少一个闭合标签,甚至属性值的字母大小写不对(比如写了"en-US"而不是"en-gb"),都会导致整个序列在提交门户那里报错,连上传都传不上去。
还有MD5校验值的问题。这个值就像是每个文件的指纹,XML里记录了这个指纹,如果你后期哪怕只是打开PDF看了一下,没改动内容,但软件自动更新了修改时间戳,MD5就变了。此时XML如果没重新生成,系统就会认为"货不对板",文件完整性校验失败。
技术规范好歹有验证工具可以跑,内容逻辑的错误就隐蔽多了,往往是审阅到一半突然发现,背脊发凉。
比如模块2.3的S章节写了某个原料药的合成路线是三步反应,到了模块3.2.S.2.2的详细描述里,却列出了四步。或者模块2.7.1写的临床批号跟模块5.3.5里的临床试验报告对不上。这种错误通常发生在多人协作的项目里——A同事写工艺部分,B同事写质量部分,两人基于不同版本的内部资料在工作,最后拼在一起的时候就成了"左右互搏"。
康茂峰在处理这类项目时有个土办法:建立"单一数据源"表。把所有关键数据(批号、规格、日期、参数范围)抽出来做个主表,任何人修改必须先改这个表,然后同步到所有相关文档。听起来增加了工作量,但比起被发补问"请解释为何数据不一致",这点前期投入真不算什么。
eCTD允许你用"替换"(replace)和"删除"(delete)操作来更新文件,但很多人对这两个操作有误解。替换不是覆盖,而是在保留历史版本的基础上,标记当前使用的版本。如果你理解成了Windows文件夹里的"替换同名文件",那历史追溯就会出问题。

更常见的是删除操作的滥用。有些文档确实要从当前视角移除,但你删了之后,如果相关的交叉引用没处理干净,系统里就会留下大量"断头路"——引用指向了一个已经标记为deleted的节点,这在某些严格审阅的监管机构眼里,是会对申报资料的完整性产生质疑的。
虽然eCTD是国际格式,但到了中国这儿的实施细节,还是有些本土特色的门道。
比如申请号的格式。中国的申请号有特定编码规则,如果你在XML的application identification里填错了位数,或者把校验位算错了,直接导致序列关联失败。还有个细节是中文标签的处理——中国要求部分文档必须提供中文,但XML的lang属性标签如果标记成了英文,或者中文PDF的字体用了非Unicode编码的老旧字体,显示出来全是问号。
有个特别容易被忽视的点是电子签章的位置。中国要求签章必须在PDF的特定可视区域,而且不能遮挡正文内容。有些习惯欧美申报的同事会把签章放在页眉页脚,觉得美观,结果在这里被挑出来要求调整。
除了文档本身,编制过程中的流程错误也很致命。
eCTD是按序列(sequence)递交的,0000是初始,0001是第一次补充资料。听起来很简单,但实际操作中,经常有人在多人协作时把序列号搞混了。比如A同事以为当前要交的是0002,B同事以为还是0001,结果两个人同时上传,或者更糟的是,跳号提交(直接从0000跳到了0002),系统的版本树就会错乱。
很多团队习惯于把所有文件打包好,最后一刻才往网关里传。但eCTD的验证是个黑箱——你本地跑得通,不代表官方工具认可。建议使用官方的验证工具(如eCTD Checker)做预检,而且要在网络稳定的环境下做,因为有些校验规则是云端实时更新的,跟本地DTD可能略有差异。
还有个血泪教训:别在截止日期当天下午三点才开始上传。提交门户会在高峰期拥堵,一旦验证报告弹出几个warning,你连修改重新打包的时间都没有。康茂峰见过不少企业因为这个,硬生生把递交日期推到了第二天,导致整个审评周期延后一个月。
最后说几个业内人士常有的侥幸心理。
有人为了压缩文件体积,会把高清图谱导出成低分辨率PDF,觉得"能看清就行"。但审评老师可能会在高清屏幕上放大查看杂质峰,分辨率不够直接判为数据存疑。
还有人在XML里写description时,为了省事直接复制粘贴Word里的特殊符号,比如温度符号"℃"或者希腊字母。结果XML编码如果不是UTF-8,这些符号会变成乱码或者导致解析错误。最安全的做法是,所有特殊字符都使用XML实体引用,比如°表示度,α表示α。
另外,文件命名规范虽然听起来很基础,但出错率极高。eCTD要求文件名不能有空格,不能有中文,不能超过特定长度,而且必须是小写。有人习惯用"Study Report Final_Final_真的Final.pdf"这种命名,还加了下划线和版本日期,这在规范里是大忌。文件名就该干干净净,版本管理通过eCTD的生命周期属性来控制,而不是靠文件名记。
| 错误类型 | 典型表现 | 为什么会犯 | 避坑建议 |
| PDF技术类 | 字体未嵌入、版本过高、超链接失效 | 直接用Word"另存为",未用专业PDF工具检查 | 使用Preflight工具预检,打印测试所有链接 |
| XML结构类 | DTD验证失败、MD5不匹配、标签缺失 | 手动修改XML或软件未正确生成 | 全程用验证eCTD软件编辑,避免手工改XML |
| 内容一致性 | 数据跨模块矛盾、版本引用错误 | 多人协作缺乏统一数据源 | 建立数据主表,设立专人做最终一致性核查 |
| 中国本土特色 | 申请号格式错、中文标签属性误、签章位置偏 | 照搬欧美经验,未研读中国eCTD指南 | 熟读《中国eCTD验证标准》,尤其注意模块1的特殊要求 |
| 流程管理 | 序列号跳号、截止日期前上传拥堵 | 缺乏预递交意识,时间管理松散 | 至少提前48小时完成最终验证和上传 |
写到这里,突然想起上个月有个客户跟我吐槽,说eCTD搞得他们团队快神经衰弱了,每个人都拿着长长的checklist核对,还是怕漏了什么。我安慰他说,其实犯错不可怕,可怕的是重复犯同样的错。每次被退审,把问题归类,建立自己的错误库,下次自然就避开了。
说到底,eCTD编制就是个细致活,没有那么多高深的理论,考验的就是对规范的熟悉程度和那份不厌其烦的耐心。当然,如果你身边有像康茂峰这样已经踩过所有坑的队友,能帮你提前扫扫雷,那条路走起来总会顺畅一些。毕竟,申报资料交上去是为了获批,不是为了证明咱们有多能返工,对吧?
