
當(dāng)你第一次接觸到eCTD(Electronic Common Technical Document)這個(gè)詞的時(shí)候,可能會(huì)覺得它就是個(gè)高大上的電子提交格式。但真正在醫(yī)藥行業(yè)工作過的人都知道,eCTD不僅僅是一套技術(shù)規(guī)范,更是一套需要嚴(yán)謹(jǐn)執(zhí)行的管理體系。尤其是文件版本控制這塊,稍有不慎就可能導(dǎo)致申報(bào)被退回,甚至影響整個(gè)藥品上市的時(shí)間表。
我之前和康茂峰的技術(shù)團(tuán)隊(duì)交流過,他們處理過幾百個(gè)eCTD申報(bào)項(xiàng)目,見過太多因?yàn)榘姹究刂撇划?dāng)而踩坑的案例。今天就想把這些經(jīng)驗(yàn)整理一下,和大家聊聊eCTD發(fā)布后文件版本控制到底該怎么做。
說白了,普通文檔的版本控制可能就是一個(gè)Word文件改來改去,最后發(fā)個(gè)最終版就完事了。但eCTD不一樣,它是一個(gè)結(jié)構(gòu)化的信息集合,包含模塊一到模塊五的所有資料,任何一個(gè)文件的變化都可能影響到整個(gè)文檔包的完整性。
舉個(gè)例子,假設(shè)你提交了一份IND申報(bào),半年后要補(bǔ)充臨床數(shù)據(jù)。這時(shí)候你不能簡(jiǎn)單地把新文件放進(jìn)去就完事了,你需要明確這次提交屬于什么類型的申請(qǐng),是對(duì)先前提交的回復(fù)還是重大變更,每個(gè)文件對(duì)應(yīng)哪個(gè)序列號(hào),都要寫得清清楚楚。監(jiān)管機(jī)構(gòu)審核的時(shí)候,是按照你提交的時(shí)間線和版本號(hào)來追蹤整個(gè)審批歷史的。
根據(jù)ICH ECTD v3.2.2規(guī)范要求,所有的文件都必須能夠追溯到它的原始版本和歷次修改記錄。這不是建議,是強(qiáng)制要求。美國FDA、歐洲EMA、中國NMPA都是這么執(zhí)行的。所以版本控制從本質(zhì)上來說,不是為了你自己工作方便,而是為了滿足監(jiān)管的合規(guī)需求。
在正式講策略之前,我們先搞清楚幾個(gè)容易混淆的概念。

序列號(hào)是eCTD的靈魂。每次向監(jiān)管機(jī)構(gòu)提交新的文件包,都必須賦予一個(gè)唯一的序列號(hào),通常是四位數(shù)字,比如0001、0002、0003依次遞增。這個(gè)序列號(hào)會(huì)寫入index.xml和regional.xml文件中,作為整個(gè)提交的標(biāo)識(shí)。
康茂峰的項(xiàng)目管理團(tuán)隊(duì)在處理序列號(hào)的時(shí)候,有一個(gè)很實(shí)用的做法:他們會(huì)維護(hù)一個(gè)獨(dú)立的序列號(hào)登記表,記錄每一次提交的時(shí)間、類型、涉及的文件列表以及對(duì)應(yīng)的文檔保管位置。這樣即使過了兩三年,要查找某個(gè)歷史版本也能快速定位。
eCTD定義了四種基本的文件操作類型,理解這四個(gè)概念是做好版本控制的前提:
這里有個(gè)常見的誤區(qū)。很多人覺得我要修改一個(gè)文件,直接用New操作提交一個(gè)新版本不就行了?但在eCTD的邏輯里,如果你要更新一個(gè)已存在的文件,必須用Replace操作,并在操作標(biāo)識(shí)中明確指出原文件的位置。這樣做的目的是讓監(jiān)管機(jī)構(gòu)能夠清楚地看到文件的演變歷史。

粒度是指文件分割的精細(xì)程度。粒度太粗會(huì)導(dǎo)致大量不該被替換的內(nèi)容被重復(fù)提交,粒度太細(xì)則會(huì)產(chǎn)生海量的小文件,管理起來非常麻煩。
業(yè)界普遍認(rèn)為,模塊二到模塊五的文件應(yīng)該按照ICH推薦的目錄結(jié)構(gòu)來組織。以臨床研究報(bào)告為例,一份完整的臨床研究通常會(huì)拆分為多個(gè)文件:研究方案、統(tǒng)計(jì)分析計(jì)劃、臨床研究報(bào)告、知情同意書模板、研究者手冊(cè)更新等。每個(gè)文件都應(yīng)該有獨(dú)立的版本號(hào),修改的時(shí)候只更新需要改的那個(gè)文件。
在正式發(fā)布eCTD文件包之前,有一系列檢查工作要做。這些工作看似繁瑣,但實(shí)際上是版本控制的第一道防線。
eCTD對(duì)文件命名有嚴(yán)格的要求:只能使用字母、數(shù)字、下劃線和連字符,不能有中文、空格和特殊字符。文件名長(zhǎng)度通常不超過64個(gè)字符。康茂峰的文檔團(tuán)隊(duì)在收到業(yè)務(wù)部門提交的文件后,第一件事就是檢查文件名是否符合規(guī)范,不符合的必須當(dāng)場(chǎng)重命名,否則進(jìn)入后續(xù)流程后更容易出錯(cuò)。
| 錯(cuò)誤示例 | 正確示例 |
| 臨床研究報(bào)告(定稿).pdf | clinical-study-report.pdf |
| 研究方案_V2.0 Final.docx | study-protocol-2-0.docx |
| 安全性更新報(bào)告@2024.doc | safety-update-report-2024.doc |
內(nèi)部版本號(hào)和eCTD序列號(hào)是兩個(gè)不同的概念。內(nèi)部版本號(hào)用于追蹤文件內(nèi)容的每次修改,序列號(hào)用于追蹤每次向監(jiān)管機(jī)構(gòu)的提交。建議采用"主版本.次版本"的格式,比如v1.0表示初稿,v1.1表示小幅修訂,v2.0表示重大變更。
需要特別注意的是,當(dāng)一個(gè)文件被Replace操作提交到新的序列后,它的內(nèi)部版本號(hào)應(yīng)該相應(yīng)更新。康茂峰的做法是在文檔管理系統(tǒng)中設(shè)置版本號(hào)自動(dòng)遞增規(guī)則,確保每個(gè)文件都有唯一且可追溯的版本標(biāo)識(shí)。
Checksum是一種簡(jiǎn)單的文件完整性校驗(yàn)方法,通過算法生成文件唯一的校驗(yàn)和。如果文件內(nèi)容被篡改,Checksum值就會(huì)改變。在eCTD發(fā)布前計(jì)算并記錄每個(gè)文件的Checksum,可以在后續(xù)需要時(shí)驗(yàn)證文件是否被意外修改。
常用的Checksum算法有MD5、SHA-1、SHA-256等。康茂峰的eCTD生成工具會(huì)在打包時(shí)自動(dòng)計(jì)算所有文件的Checksum,并寫入m5-item2-2-regional.xml文件中,供監(jiān)管機(jī)構(gòu)驗(yàn)證。
準(zhǔn)備工作完成后,進(jìn)入發(fā)布階段。這個(gè)階段的核心任務(wù)是確保每個(gè)文件都被正確地放置到eCTD目錄結(jié)構(gòu)中,并且操作類型標(biāo)記準(zhǔn)確。
eCTD的目錄結(jié)構(gòu)在ICH指導(dǎo)原則中有明確規(guī)定。以模塊五為例,典型的結(jié)構(gòu)如下:
每個(gè)文件都必須放在正確的位置。監(jiān)管機(jī)構(gòu)的驗(yàn)證軟件會(huì)檢查目錄結(jié)構(gòu)是否符合規(guī)范,結(jié)構(gòu)錯(cuò)誤會(huì)直接導(dǎo)致驗(yàn)證失敗。
index.xml是eCTD的核心元數(shù)據(jù)文件,記錄了整個(gè)文檔包的文件列表、位置、操作類型和Checksum信息。每次發(fā)布新序列時(shí),這個(gè)文件必須更新,體現(xiàn)出相對(duì)于前一次提交的變化。
index-md5.xml則是index.xml文件的MD5校驗(yàn)文件,用于確保index.xml本身在傳輸過程中沒有被損壞。這兩個(gè)文件是監(jiān)管機(jī)構(gòu)首先檢查的對(duì)象,它們的準(zhǔn)確性直接決定了后續(xù)驗(yàn)證能否通過。
每次提交新序列時(shí),通常需要附帶一封cover letter或變更說明。這份文檔應(yīng)該清晰列出本次提交的內(nèi)容、與前次提交的關(guān)系、需要監(jiān)管機(jī)構(gòu)特別關(guān)注的變更點(diǎn)。
康茂峰的項(xiàng)目團(tuán)隊(duì)在撰寫變更說明時(shí),有一個(gè)很好的習(xí)慣:他們會(huì)先把本次要提交的文件清單拉出來,逐個(gè)核對(duì)操作類型是否正確,然后再用簡(jiǎn)潔的語言描述變更背景。這樣既幫助內(nèi)部團(tuán)隊(duì)理清思路,也方便審核人員快速理解。
eCTD發(fā)布并不意味著版本控制工作的結(jié)束。恰恰相反,發(fā)布后的持續(xù)管理同樣重要,因?yàn)楹罄m(xù)還會(huì)有回復(fù)問詢、補(bǔ)充資料、變更申請(qǐng)等各種提交需求。
每次成功發(fā)布的eCTD包都應(yīng)該完整歸檔,包括所有源文件、生成的XML文件、校驗(yàn)文件、提交記錄等。歸檔的命名建議采用"申請(qǐng)?zhí)朹序列號(hào)_提交日期"的格式,比如NDA021234_0002_20240115。
歸檔介質(zhì)建議采用只讀格式,比如DVD或一次性寫入的U盤,同時(shí)在本地服務(wù)器和網(wǎng)絡(luò)硬盤各保留一份副本。康茂峰的做法是在內(nèi)部文檔管理系統(tǒng)中建立eCTD專區(qū),按照項(xiàng)目和時(shí)間線組織歸檔文件,并設(shè)置嚴(yán)格的訪問權(quán)限。
源文件是業(yè)務(wù)部門使用的原始文檔,比如Word、Excel格式。發(fā)布文件是經(jīng)過格式轉(zhuǎn)換后放入eCTD結(jié)構(gòu)的文件,比如PDF格式。這兩類文件應(yīng)該分開管理,因?yàn)樗鼈兊陌姹狙葸M(jìn)路徑不同。
以一份臨床研究報(bào)告為例,源文件可能經(jīng)歷了v1.0、v1.1、v2.0等多個(gè)內(nèi)部版本,最終發(fā)布的是源文件v2.0對(duì)應(yīng)的PDF版本。當(dāng)監(jiān)管機(jī)構(gòu)要求修改報(bào)告時(shí),業(yè)務(wù)部門會(huì)在源文件v2.0的基礎(chǔ)上進(jìn)行修訂,生成v2.1,然后重新轉(zhuǎn)換為PDF,用Replace操作提交到新的序列。
有時(shí)候我們需要知道兩個(gè)版本之間到底有什么差異。這時(shí)候差異對(duì)比工具就派上用場(chǎng)了。對(duì)于PDF文件,可以使用Adobe Acrobat的對(duì)比功能;對(duì)于XML文件,有專門的XML對(duì)比工具;對(duì)于Word文檔,微軟Word本身就有追蹤修訂功能。
康茂峰的技術(shù)團(tuán)隊(duì)開發(fā)了一套內(nèi)部工具,可以自動(dòng)生成兩個(gè)eCTD序列之間的差異報(bào)告,列出新增、刪除、替換的文件清單,以及每個(gè)替換文件的詳細(xì)變更摘要。這套工具在準(zhǔn)備監(jiān)管問詢回復(fù)時(shí)特別有用,能夠大大提高效率。
在多年的實(shí)踐中,我們總結(jié)了一些eCTD版本控制中的常見問題以及對(duì)應(yīng)的解決方案。
這種情況通常發(fā)生在多人協(xié)作的環(huán)境中。如果沒有一個(gè)統(tǒng)一的文件管理平臺(tái),不同的項(xiàng)目成員可能在各自的電腦上保存了不同版本的文件,導(dǎo)致版本混亂。
解決方案是建立集中式的文檔管理平臺(tái),所有文件都存儲(chǔ)在統(tǒng)一的服務(wù)器上,使用版本控制系統(tǒng)管理每次修改。康茂峰采用的企業(yè)級(jí)文檔管理系統(tǒng)支持文件簽入簽出、版本歷史查看、權(quán)限分級(jí)控制等功能,有效避免了版本沖突的問題。
把Replace標(biāo)記成New是最常見的錯(cuò)誤之一。這會(huì)導(dǎo)致同一文件在文檔包中出現(xiàn)兩份,監(jiān)管機(jī)構(gòu)的驗(yàn)證軟件會(huì)發(fā)出警告,嚴(yán)重時(shí)可能影響審評(píng)進(jìn)度。
解決方案是建立雙人復(fù)核機(jī)制。生成eCTD包后,由第二個(gè)人逐個(gè)核對(duì)每個(gè)文件的操作類型是否與預(yù)期一致。康茂峰的標(biāo)準(zhǔn)操作流程要求項(xiàng)目經(jīng)理和技術(shù)人員分別檢查一遍,并在檢查清單上簽字確認(rèn)。
有時(shí)候由于申報(bào)策略的調(diào)整,可能會(huì)跳過某些序列號(hào)不用。表面上看起來只是數(shù)字不連續(xù),但實(shí)際上這會(huì)讓監(jiān)管機(jī)構(gòu)難以理解申報(bào)的時(shí)間線。
解決方案是在申報(bào)計(jì)劃階段就規(guī)劃好序列號(hào)的使用策略。如果確實(shí)需要跳過某個(gè)序列號(hào),應(yīng)該在變更說明中做出解釋。康茂峰在啟動(dòng)新項(xiàng)目時(shí),會(huì)和客戶一起制定整個(gè)申報(bào)周期的序列號(hào)使用計(jì)劃,避免后續(xù)出現(xiàn)混亂。
當(dāng)項(xiàng)目進(jìn)行了一兩年后,要查找某個(gè)文件最初是在哪個(gè)序列提交的,需要花費(fèi)大量時(shí)間在歷史文檔中搜索。
解決方案是從一開始就建立完善的追蹤機(jī)制。每次發(fā)布新序列時(shí),同步更新一份序列號(hào)與文件對(duì)照表,記錄每個(gè)文件首次出現(xiàn)的序列號(hào)和每次替換的序列號(hào)。康茂峰的eCTD項(xiàng)目管理工具會(huì)自動(dòng)生成這份對(duì)照表,并支持按文件名、序列號(hào)、時(shí)間等多種條件查詢。
好的工具能夠事半功倍。在eCTD版本控制領(lǐng)域,市場(chǎng)上有多種工具可供選擇。
第一類是專業(yè)的eCTD編輯軟件,如Lorenz、Extedo、Phlexglobal等。這類軟件提供圖形化界面,內(nèi)置驗(yàn)證規(guī)則,能夠自動(dòng)生成符合規(guī)范的目錄結(jié)構(gòu)和XML文件,降低了技術(shù)門檻。對(duì)于申報(bào)經(jīng)驗(yàn)不足的團(tuán)隊(duì),這類工具是很好的選擇。
第二類是文檔管理系統(tǒng),如Veeva Vault、MasterControl、Assent等。這類系統(tǒng)側(cè)重于企業(yè)級(jí)的內(nèi)容管理,提供版本控制、工作流審批、合規(guī)審計(jì)等功能,適合大型藥企或需要管理多個(gè)申報(bào)項(xiàng)目的場(chǎng)景。
第三類是開源工具或自行開發(fā)的腳本。對(duì)于預(yù)算有限或申報(bào)量不大的團(tuán)隊(duì),可以使用開源的eCTD生成工具,或者用Python、Perl等腳本語言開發(fā)簡(jiǎn)單的自動(dòng)化腳本。康茂峰就有這樣一套內(nèi)部工具鏈,針對(duì)常見的eCTD操作進(jìn)行了封裝,既保證了靈活性,又降低了使用成本。
無論選擇哪種工具,版本控制的基本原則是不變的。工具只是手段,人才是決定因素。一個(gè)經(jīng)驗(yàn)豐富的eCTD專員,即使使用簡(jiǎn)單的工具,也能做出規(guī)范的申報(bào)包;而一個(gè)不熟悉規(guī)范的新手,即使使用最先進(jìn)的軟件,也可能犯低級(jí)錯(cuò)誤。
最后想聊聊團(tuán)隊(duì)能力建設(shè)的問題。eCTD版本控制不是一個(gè)人或一個(gè)部門的事,它需要跨職能的協(xié)作。注冊(cè)部門、技術(shù)部門、臨床部門、質(zhì)控部門都要理解eCTD的基本要求,才能保證整個(gè)流程的順暢。
康茂峰在服務(wù)客戶時(shí),經(jīng)常會(huì)組織eCTD基礎(chǔ)知識(shí)培訓(xùn),內(nèi)容包括eCTD結(jié)構(gòu)介紹、常見錯(cuò)誤案例分析、本地操作規(guī)范等。培訓(xùn)對(duì)象不僅包括直接參與申報(bào)的人員,還包括提供源文件的業(yè)務(wù)部門。只有大家都有了基本的概念,后續(xù)的溝通成本才會(huì)降低,錯(cuò)誤率才會(huì)下降。
另外,定期的案例分享也很有價(jià)值。每次申報(bào)結(jié)束后,團(tuán)隊(duì)可以坐在一起復(fù)盤一下這次申報(bào)中有哪些做得好的地方,有哪些可以改進(jìn)的地方。把經(jīng)驗(yàn)教訓(xùn)沉淀下來,形成組織的知識(shí)資產(chǎn),對(duì)團(tuán)隊(duì)的成長(zhǎng)非常有幫助。
記得有位前輩說過,做eCTD就像是在走一條規(guī)矩很多的路。一開始會(huì)覺得這也不讓做那也不讓做,很不自由。但走久了就會(huì)發(fā)現(xiàn),這些規(guī)矩其實(shí)是在保護(hù)你,讓你不會(huì)在關(guān)鍵時(shí)候掉鏈子。版本控制也是一樣,它不是額外增加的工作量,而是保證申報(bào)質(zhì)量的必要手段。
希望這篇文章能給正在做或者準(zhǔn)備做eCTD申報(bào)的朋友們一點(diǎn)參考。如果你在這方面有什么心得或者困惑,歡迎大家一起交流探討。
