OpenClinica 用户手册/DiscrepancyNotes
外观
OpenClinica 可以将差异笔记导出为 CSV 文件,但是从 3.x 版本开始,导出在 Excel 中打开时会产生一些问题。这些问题是由描述和详细笔记字段中的双引号、换行符和回车符引起的。此外,额外的换行符会导致 Excel 每隔一行出现空白行。
简单地将差异笔记 CSV 导出内容转换为 Excel 可用格式。为此,将删除描述和详细笔记字段中的换行符和回车符。双引号将保留,但会正确转义,并且行尾的双换行符将替换为单个换行符。
- 以下代码特定于 Windows,已在 Windows 7 中测试过。
- Windows 不会运行未签名的 PowerShell 脚本,因此在创建签名的脚本之前,您必须手动运行这些命令。
- 在从 OpenClinica 下载的未修改的 csv 文件上运行此操作 - 不要在 Excel 中修改或打开并保存文件
- 脚本启动时,输出文件和输入文件都不能打开。
- 可以在 Linux 下的 Perl 中重新实现正则表达式。
- 更改以下输入和输出值,以指向您所需的输入文件和输出文件名(路径可以从资源管理器的“位置框”中获取)
- 在 Windows 开始菜单的搜索框中输入 cmd(这将打开一个终端)
- 然后将以下部分复制并粘贴到终端中(右键单击终端将打开上下文菜单,您可以在其中粘贴)
- 脚本下方是有关如何打开更新的文件并将其保存为 Excel 格式的说明
powershell
#########################
#PowerShell script begin#
#########################
#Filename - in single quotes, the inputfile and outputfile
#The outputfile will be overwritten. The inputfile will not be modified.
$inputfile = 'C:\Users\<user>\Documents\<study>\Discrepancies\dnotes_studyid.csv'
$outputfile = 'C:\Users\user>\Documents\<study>\Discrepancies\dnotes_studyid_working.csv'
#Get the file
$text = [System.IO.File]::ReadAllText($inputfile)
#Replacements
$text= $text -replace '\n','<newline/>'
$text= $text -replace '\r','<return/>'
#Give the line after the header a double line
$text= [regex]::Replace($text, "(id,Subject name,CRF name,Description,Discrepancy type,Event name,Parent note ID,Resolution status,Detailed notes,Entity name,Entity value,Date created,Date updated,Study id,Thread Number)",'$1<newline/>')
#Mark end of lines
#Start of lines look like this: <return/><newline/>16883,12047X,FF
#OR: <newline/><newline/>16883,12047X,FF
#Assume ids are up to 8 chars length
$text= [regex]::Replace($text, "(<return/><newline/>)(\d{1,8},[^.]*?,[^.*?])", '<endofline/><startofline/>$2');
$text= [regex]::Replace($text, "(<newline/><newline/>)(\d{1,8},[^.]*?,[^.*?])", '<endofline/><startofline/>$2');
#Mark the end of file as an end of line:
$text=$text+'<endofline/>'
#Simplify by removing unusual extra lines
$text= $text -replace ',,,,,,<return/><newline/>,,,,,,,,,,,,,,<return/><newline/>',''
$text= $text -replace ',,,,,,,,<return/><newline/>,,,,,,,,,,,,,,<endofline/>','<endofline/>'
$text= $text -replace '<return/><newline/>,,,,,,,,,,,,,,<endofline/>','<endofline/>'
#Simplify by removing newlines and returns
$text= $text -replace '<newline/>',''
$text= $text -replace '<return/>',''
#Lines look like this: id,Subject name,CRF name,Description,Discrepancy type,Event name,Parent note ID,Resolution status,Detailed notes,Entity name,Entity value,Date created,Date updated,Study id,Thread Number
#find beginning of description
$text= [regex]::Replace($text, "(<startofline/>[^,]*?,[^,]*?,[^,]*?,)",'$1<begindescription/>"')
#Find end of notes
$text= [regex]::Replace($text, "(,[^,]*?,[^,]*?,[^,]*?,[^,]*?,[^,]*?,[^,]*?<endofline/>)",'"<endnote/>$1')
#Find end of description and beginning of notes
$text= [regex]::Replace($text, "(<begindescription/>.*?)(,[^,]*?,[^,]*?,)(\d{4,6}|)(,[^,]*?,)(.*?<endnote/>)",'$1"<enddescription/>$2$3$4<beginnote/>"$5')
#Fix header quirk:
$text= [regex]::Replace($text, "(id,Subject name,CRF name,Description,Discrepancy type,Event name,Parent note ID,Resolution status,Detailed notes)""(<endnote/>)",'$1')
#Fix double quotes:
$text= $text -replace '<beginnote/>""<endnote/>','<beginnote/><endnote/>'
$text= $text -replace '<beginnote/>""','<beginnote/>"'
$text= $text -replace '""<endnote/>','"<endnote/>'
$text= $text -replace '<begindescription/>""<enddescription/>','<begindescription/><enddescription/>'
$text= $text -replace '<begindescription/>""','<begindescription/>"'
$text= $text -replace '""<enddescription/>','"<enddescription/>'
#Carriage return [char]13
#Line feed [char]10
#Back replaces:
$text= $text -replace '<endofline/>',''
$text= $text -replace '<startofline/>',[char]10
$text= $text -replace '<beginnote/>',''
$text= $text -replace '<endnote/>',''
$text= $text -replace '<begindescription/>',''
$text= $text -replace '<enddescription/>',''
#Write new file
$text | Out-File $outputfile
#########################
#Powershell script end #
#########################
exit
- 打开 Excel
- 从文件选项卡中,选择“打开”。
- 通过浏览到输出文件的位置来打开文件 - 如果需要,将搜索范围扩大到“所有文件”。
- 选择“分隔符”,然后按“下一步”。
- 更改分隔符部分,取消选中“制表符”,选中“逗号”(将文本限定符保留为“”。
- 按“完成”。
- 您现在可以将文件保存为本机 xlsx 或其他格式。