
說(shuō)起eCTD兼容性測(cè)試這個(gè)詞,可能很多剛接觸藥品注冊(cè)的朋友會(huì)覺得有點(diǎn)高大上,甚至有點(diǎn)神秘。我第一次接觸eCTD的時(shí)候,也是這種感覺——這玩意兒到底測(cè)什么?怎么測(cè)?為什么要測(cè)這么多東西?
后來(lái)做得多了,才發(fā)現(xiàn)其實(shí)兼容性測(cè)試沒(méi)有那么玄乎。它就是確保你精心準(zhǔn)備的eCTD文檔包,能夠在各個(gè)監(jiān)管機(jī)構(gòu)的系統(tǒng)里順利"跑通"。就像你寫完一篇論文,總得檢查一下格式對(duì)不對(duì)、引用有沒(méi)有問(wèn)題、打印出來(lái)能不能看吧?eCTD測(cè)試的邏輯差不多,只是更復(fù)雜、更嚴(yán)格、涉及的技術(shù)細(xì)節(jié)更多。
這篇文章我想用一種比較輕松的方式,跟大家聊聊eCTD兼容性測(cè)試到底是怎么回事。我會(huì)盡量把那些看起來(lái)很專業(yè)的概念,用大白話解釋清楚。如果你正在準(zhǔn)備eCTD提交,希望這篇文章能給你一些實(shí)實(shí)在在的幫助。
在正式開始講測(cè)試方法之前,我想先聊聊為什么這件事值得單獨(dú)拿出來(lái)說(shuō)。很多人可能會(huì)想:我按照eCTD的技術(shù)規(guī)范把文檔都準(zhǔn)備好了,結(jié)構(gòu)也對(duì),編號(hào)也沒(méi)問(wèn)題,為什么還要多此一舉做測(cè)試?
這個(gè)問(wèn)題問(wèn)得好。說(shuō)實(shí)話,我見過(guò)不少"自信滿滿"的提交,最后在監(jiān)管機(jī)構(gòu)那里被打回來(lái)的情況。有的是因?yàn)槟硞€(gè)超鏈接點(diǎn)進(jìn)去是空的,有的是因?yàn)镻DF文件用了某些不被支持的字體,還有的是因?yàn)閄ML里的時(shí)間格式寫錯(cuò)了。這些問(wèn)題看著不大,但足以讓整個(gè)提交被退回。
你想啊,藥品注冊(cè)申請(qǐng)動(dòng)輒幾百上千個(gè)文件,層層嵌套,環(huán)環(huán)相扣。這么大一攤子?xùn)|西,很難保證一點(diǎn)問(wèn)題都沒(méi)有。兼容性測(cè)試就像是給整個(gè)文檔包做一次"全身體檢",把那些藏在角落里的問(wèn)題都找出來(lái)。
而且,不同的監(jiān)管機(jī)構(gòu)對(duì)eCTD的具體要求還不完全一樣。FDA喜歡什么樣的PDF/A格式,EMA對(duì)XML結(jié)構(gòu)有什么特殊規(guī)定,PMDA又有哪些本地化的要求——這些都得考慮進(jìn)去。不提前測(cè)試一下,到了人家系統(tǒng)里才發(fā)現(xiàn)水土不服,那可就很被動(dòng)了。

另外從實(shí)際工作角度看,兼容性測(cè)試能幫你省下很多后期返工的時(shí)間。與其在被退回之后手忙腳亂地找問(wèn)題,不如在提交之前就把能發(fā)現(xiàn)的都發(fā)現(xiàn)。這不僅是效率問(wèn)題,更是專業(yè)素養(yǎng)的體現(xiàn)。
了解了為什么做之后,我們來(lái)看看測(cè)試前需要準(zhǔn)備什么。這部分看起來(lái)是準(zhǔn)備工作,其實(shí)對(duì)后續(xù)測(cè)試的效率和效果影響很大。
這是最重要的一步。不同地區(qū)的監(jiān)管機(jī)構(gòu)對(duì)eCTD的要求差異還挺大的。簡(jiǎn)單列一下常見的要求差異:
| 監(jiān)管機(jī)構(gòu) | 主要特點(diǎn) |
| FDA(美國(guó)) | 對(duì)PDF/A格式要求嚴(yán)格,超鏈接必須完全可點(diǎn)擊 |
| EMA(歐盟) | |
| PMDA(日本) | 對(duì)日語(yǔ)字符編碼和本地化有專門規(guī)定 |
| NMPA(中國(guó)) | 近年來(lái)eCTD要求逐步細(xì)化,需要關(guān)注最新指南 |
所以在開始測(cè)試之前,一定要先搞清楚你的文檔是打算交給哪個(gè)或哪些監(jiān)管機(jī)構(gòu)的。這決定了后續(xù)測(cè)試的重點(diǎn)和標(biāo)準(zhǔn)。
eCTD測(cè)試光靠肉眼是不行的,得借助一些專業(yè)工具。這里我說(shuō)幾個(gè)比較常用的,也不是說(shuō)非要用這些,就是給大家一個(gè)參考。
首先是XML編輯器,比如XML Spy或者oXygen這類工具。它們能幫你驗(yàn)證XML文件的語(yǔ)法是否正確,結(jié)構(gòu)是否符合規(guī)范。工具會(huì)標(biāo)出語(yǔ)法錯(cuò)誤的具體位置,修改起來(lái)很方便。
然后是PDF驗(yàn)證工具。PDF文件在eCTD里是個(gè)大頭,里面的說(shuō)道很多。專業(yè)的PDF軟件能檢查文件格式是否為PDF/A、超鏈接是否有效、書簽結(jié)構(gòu)是否完整等等。
還有就是專門的eCTD驗(yàn)證軟件,這類工具更全面一些,能從eCTD整體結(jié)構(gòu)的角度進(jìn)行檢查。不過(guò)這類軟件通常價(jià)格不菲,很多公司可能不舍得投入。我建議至少把XML編輯器和PDF工具準(zhǔn)備好,這是最基本的配置。
測(cè)試環(huán)境這件事容易被忽視,但真的很重要。我的建議是找一臺(tái)干凈的虛擬機(jī)或者獨(dú)立的測(cè)試機(jī)器,上面不要裝太多雜七雜八的軟件。
為什么呢?因?yàn)橛袝r(shí)候你電腦里安裝的字體、PDF閱讀器、瀏覽器插件等,都可能影響到文檔的顯示效果。在你自己的機(jī)器上看沒(méi)問(wèn)題,換個(gè)環(huán)境可能就出問(wèn)題。搭建一個(gè)"中性"的測(cè)試環(huán)境,能讓你發(fā)現(xiàn)更多潛在問(wèn)題。
準(zhǔn)備工作做完之后,就可以開始正式測(cè)試了。我通常會(huì)按照從整體到局部、從結(jié)構(gòu)到內(nèi)容的順序來(lái)推進(jìn)。第一步就是驗(yàn)證eCTD的"骨架"——也就是目錄結(jié)構(gòu)和XML文件。
eCTD對(duì)文件目錄結(jié)構(gòu)有嚴(yán)格的要求。什么文件應(yīng)該放在什么位置,都有明文規(guī)定。這一步看起來(lái)簡(jiǎn)單,但往往是問(wèn)題最多的地方。
我個(gè)人的檢查習(xí)慣是這樣的:先把監(jiān)管機(jī)構(gòu)的eCTD技術(shù)規(guī)范打開,對(duì)照著看自己的目錄結(jié)構(gòu)。尤其要注意這幾點(diǎn)——
這里有個(gè)小經(jīng)驗(yàn):很多問(wèn)題出在"邊界情況"上。比如某個(gè)章節(jié)確實(shí)沒(méi)有內(nèi)容,那這個(gè)文件夾是應(yīng)該保留空文件夾,還是直接不創(chuàng)建?不同監(jiān)管機(jī)構(gòu)的要求可能不一樣,這個(gè)要仔細(xì)看規(guī)范。
XML是eCTD的"靈魂",承載了所有的元數(shù)據(jù)和結(jié)構(gòu)信息。XML有問(wèn)題,整個(gè)提交就都有問(wèn)題。
首先是XML語(yǔ)法驗(yàn)證。這一步主要是確認(rèn)XML文件是否符合XML的基本語(yǔ)法規(guī)則——標(biāo)簽是否閉合、屬性是否正確引用、編碼是否規(guī)范等。XML編輯器一般都能自動(dòng)做這個(gè)檢查,有錯(cuò)誤會(huì)直接標(biāo)出來(lái)。
然后是結(jié)構(gòu)驗(yàn)證,也就是對(duì)照eCTD的DTD(文檔類型定義)或者XSD(XML Schema)來(lái)檢查結(jié)構(gòu)。DTD/XSD定義了什么樣的元素可以出現(xiàn)、元素之間是什么關(guān)系、哪些是必須的有哪些是可選的。這一步能發(fā)現(xiàn)很多"結(jié)構(gòu)性"的錯(cuò)誤,比如某個(gè)必需的元素漏掉了,或者元素出現(xiàn)的順序不對(duì)。
還有就是內(nèi)容邏輯驗(yàn)證。比如leaf文件里的href屬性指向的文件是否存在、md5值和實(shí)際文件的MD5哈希是否一致、時(shí)間格式是不是符合要求(比如用的是UTC時(shí)間還是本地時(shí)間)。這些都需要一條一條核對(duì)。
eCTD文檔包不是孤立的文件集合,模塊與模塊之間、文件與文件之間有很多引用關(guān)系。比如模塊2會(huì)引用模塊3的某些章節(jié),模塊1又會(huì)有針對(duì)整個(gè)提交結(jié)構(gòu)的說(shuō)明。
這些引用關(guān)系必須準(zhǔn)確無(wú)誤。常見的引用問(wèn)題包括:引用的文件路徑寫錯(cuò)了、引用的錨點(diǎn)(anchor)不存在、或者同一個(gè)文件被多次引用但MD5值不一致。
檢查引用關(guān)系沒(méi)有什么特別好的辦法,只能耐著性子一條一條過(guò)。不過(guò)有些驗(yàn)證工具能自動(dòng)檢查死鏈接,可以省點(diǎn)功夫。但工具終究不能完全代替人工,一些邏輯性的問(wèn)題還得靠人來(lái)發(fā)現(xiàn)。
結(jié)構(gòu)和XML檢查完之后,接下來(lái)要看具體的文檔內(nèi)容。eCTD里主要是PDF文件,還有一些其他的文檔格式。PDF的測(cè)試是重中之重。
eCTD要求使用PDF/A格式來(lái)提交文檔。PDF/A是一個(gè)專門針對(duì)長(zhǎng)期保存優(yōu)化的PDF子集,對(duì)字體、顏色、嵌入方式等都有規(guī)定。不是所有PDF文件都符合PDF/A要求,哪怕它看起來(lái)完全正常。
檢查PDF/A合規(guī)性,需要用到專門的工具。工具會(huì)檢查:字體是否正確嵌入(不能依賴系統(tǒng)字體)、顏色空間是否規(guī)范、是否存在外部鏈接或引用、文件元數(shù)據(jù)是否完整等。
這里有個(gè)常見問(wèn)題很多人會(huì)忽略:很多PDF是用掃描件轉(zhuǎn)成的,這種PDF往往不符合PDF/A要求,因?yàn)槔锩娴奈淖直举|(zhì)上是圖片,不是真正的文本。如果你的文檔里有掃描件,需要特別留意處理方式。
eCTD文檔里的超鏈接和書簽非常重要,它們是讓整個(gè)文檔包"活"起來(lái)的關(guān)鍵。審評(píng)人員需要點(diǎn)擊鏈接就能跳轉(zhuǎn)到目標(biāo)位置,如果點(diǎn)半天點(diǎn)不動(dòng),或者跳轉(zhuǎn)到了奇怪的地方,體驗(yàn)會(huì)很差。
超鏈接檢查要做的事情包括:每個(gè)內(nèi)部鏈接是否能跳轉(zhuǎn)到正確的目標(biāo)、外部鏈接是否能正常打開(但要注意,有些監(jiān)管機(jī)構(gòu)是不允許用外部鏈接的,這個(gè)要先確認(rèn))、鏈接的顯示文字和目標(biāo)位置是否匹配。
書簽的檢查同樣重要。eCTD對(duì)書簽層級(jí)有要求,比如一級(jí)書簽應(yīng)該是章節(jié)標(biāo)題,二級(jí)是二級(jí)標(biāo)題,以此類推。書簽應(yīng)該能準(zhǔn)確反映文檔結(jié)構(gòu),點(diǎn)擊書簽要能跳轉(zhuǎn)到正確位置。
字體問(wèn)題說(shuō)大不大,說(shuō)小不小。常見的問(wèn)題包括:使用了某些不被監(jiān)管機(jī)構(gòu)系統(tǒng)支持的特殊字體、字體沒(méi)有嵌入導(dǎo)致顯示異常、中文字體的處理不當(dāng)(特別是涉及多語(yǔ)言提交時(shí))。
我的建議是盡量使用通用的字體,比如Times New Roman、Arial、SimSun(宋體)這些。避免使用花里胡哨的藝術(shù)字或者過(guò)于冷門的字體。另外中英文混排的時(shí)候,要特別注意中英文字體是否協(xié)調(diào)、字符間距是否正常。
還有一點(diǎn)很多人會(huì)忘記:檢查一下你的PDF文件在不同設(shè)備和軟件上的顯示效果。同一個(gè)PDF,用Adobe Acrobat打開和用WPS打開,看起來(lái)可能略有差異。盡可能在主流的PDF閱讀器上都驗(yàn)證一下,確保不會(huì)因?yàn)檐浖町悓?dǎo)致顯示問(wèn)題。
PDF文件的元數(shù)據(jù)往往被忽視,但里面其實(shí)有很多重要信息。需要檢查的包括:作者信息是否正確、標(biāo)題和主題是否反映了文檔內(nèi)容、創(chuàng)建時(shí)間和修改時(shí)間是否合理、關(guān)鍵詞標(biāo)簽是否設(shè)置得當(dāng)。
特別是版本信息,一定要確保元數(shù)據(jù)里的版本號(hào)和文檔實(shí)際內(nèi)容一致。我見過(guò)有些文檔,內(nèi)容已經(jīng)更新了但元數(shù)據(jù)里還是舊的版本號(hào),這會(huì)造成混淆。
上面的測(cè)試都是在"靜態(tài)"狀態(tài)下進(jìn)行的,主要檢查文檔本身的質(zhì)量。但eCTD最終是要被放到監(jiān)管機(jī)構(gòu)的系統(tǒng)里運(yùn)行的,所以還需要做"動(dòng)態(tài)"的兼容性測(cè)試。
監(jiān)管機(jī)構(gòu)的eCTD門戶通常都是通過(guò)瀏覽器來(lái)訪問(wèn)的。你的eCTD文檔包需要在他們使用的瀏覽器環(huán)境下能正常顯示和操作。雖然文檔本身是PDF格式,但整個(gè)提交流程是在網(wǎng)頁(yè)上完成的。
測(cè)試瀏覽器兼容性,主要看:提交流程是否能順利完成、上傳文件是否有問(wèn)題、整個(gè)界面顯示是否正常、交互功能(比如點(diǎn)擊按鈕、填寫信息)是否可用。
建議在幾種主流瀏覽器上都測(cè)試一下,比如Chrome、Firefox、Edge等。不同瀏覽器的行為可能有差異,多測(cè)幾個(gè)比較穩(wěn)妥。
除了瀏覽器,還要測(cè)試eCTD文檔在監(jiān)管機(jī)構(gòu)系統(tǒng)里的"表現(xiàn)"。比如文檔上傳后能否被正確識(shí)別、結(jié)構(gòu)能否被正確解析、元數(shù)據(jù)能否被正確讀取。
這個(gè)測(cè)試做起來(lái)可能有點(diǎn)麻煩,因?yàn)楹芏啾O(jiān)管機(jī)構(gòu)的測(cè)試環(huán)境不是隨便能用的。如果有條件的話,盡量申請(qǐng)使用他們的測(cè)試/沙盒環(huán)境,提前演練一下提交流程。這樣既能發(fā)現(xiàn)文檔問(wèn)題,也能發(fā)現(xiàn)流程問(wèn)題。
某些監(jiān)管機(jī)構(gòu)可能有一些特殊的技術(shù)要求,需要特別驗(yàn)證。比如FDA的eCTD提交對(duì)PDF的分辨率、色彩模式有要求;EMA可能要求特定的XML命名空間;PMDA對(duì)日語(yǔ)字符的處理有專門規(guī)定。
這些特殊要求最好在開始制作eCTD之前就了解清楚,并且在整個(gè)制作過(guò)程中持續(xù)關(guān)注。不要等到最后測(cè)試階段才發(fā)現(xiàn)不符合要求,那時(shí)候修改起來(lái)成本就高了。
說(shuō)了這么多測(cè)試方法和注意事項(xiàng),最后我想分享一些實(shí)際操作中的經(jīng)驗(yàn)。這些東西可能不那么系統(tǒng),但或許能幫你少走一些彎路。
第一,分批次、分模塊測(cè)試。面對(duì)幾百上千個(gè)文件,一次性全部測(cè)試完是不現(xiàn)實(shí)的。我的做法是把文檔分成幾個(gè)部分,每完成一部分就測(cè)試一部分。這樣問(wèn)題發(fā)現(xiàn)得早,修改起來(lái)也容易。而且分批次測(cè)試能讓你保持專注,不容易因?yàn)槠诙┑魡?wèn)題。
第二,善用自動(dòng)化工具,但不要完全依賴工具。自動(dòng)化工具能提高效率,但它們不是萬(wàn)能的。很多邏輯性的、結(jié)構(gòu)性的問(wèn)題,工具是檢查不出來(lái)的。工具報(bào)告"沒(méi)問(wèn)題"不等于真的沒(méi)問(wèn)題,該人工檢查的還是要人工檢查。
第三,保持記錄的習(xí)慣。測(cè)試過(guò)程中發(fā)現(xiàn)的問(wèn)題、使用的工具、做出的修改,都應(yīng)該記錄下來(lái)。一方面便于追蹤和回顧,另一方面也是為后續(xù)項(xiàng)目積累經(jīng)驗(yàn)。時(shí)間長(zhǎng)了,這就是一份很有價(jià)值的知識(shí)資產(chǎn)。
第四,找別人幫忙看一下。自己做的文檔,自己往往會(huì)有"視覺盲區(qū)"。找個(gè)同事幫忙看一下,經(jīng)常能發(fā)現(xiàn)你自己看不到的問(wèn)題。如果條件允許,找一個(gè)熟悉eCTD的人來(lái)審核,效果會(huì)更好。
第五,預(yù)留足夠的測(cè)試時(shí)間。很多項(xiàng)目到了后期時(shí)間特別緊,測(cè)試被壓縮得厲害。我的建議是在項(xiàng)目計(jì)劃里就把測(cè)試時(shí)間考慮進(jìn)去,而且要留一定的余量。eCTD測(cè)試這件事,急是急不來(lái)的,寧可前面多花時(shí)間,也不要后面返工。
eCTD兼容性測(cè)試這件事,說(shuō)到底就是"仔細(xì)"二字。沒(méi)有什么太高深的技術(shù)含量,但要做到面面俱到、滴水不漏,需要耐心和經(jīng)驗(yàn)。
這篇文章里提到的方法和注意事項(xiàng),不可能涵蓋所有情況。不同的藥品類型、不同的監(jiān)管機(jī)構(gòu)、不同的文檔規(guī)模,都可能有各自的特殊要求。最好的辦法還是在實(shí)踐中不斷積累,遇到問(wèn)題就解決問(wèn)題,慢慢形成適合自己團(tuán)隊(duì)的方法論。
如果你所在的機(jī)構(gòu)正在準(zhǔn)備eCTD提交,而我之前提到的這些內(nèi)容能幫你避開一些坑,那這篇文章就沒(méi)算白寫。藥品注冊(cè)這條路本來(lái)就不好走,能互相幫襯著往前走,總是好的。
祝大家的eCTD提交都能順利通過(guò)。
