跳转到内容

OpenClinica 用户手册/DiscrepancyNotes

来自维基教科书,开放世界中的开放书籍

OpenClinica 可以将差异笔记导出为 CSV 文件,但是从 3.x 版本开始,导出在 Excel 中打开时会产生一些问题。这些问题是由描述和详细笔记字段中的双引号、换行符和回车符引起的。此外,额外的换行符会导致 Excel 每隔一行出现空白行。

简单地将差异笔记 CSV 导出内容转换为 Excel 可用格式。为此,将删除描述和详细笔记字段中的换行符和回车符。双引号将保留,但会正确转义,并且行尾的双换行符将替换为单个换行符。

  • 以下代码特定于 Windows,已在 Windows 7 中测试过。
  • Windows 不会运行未签名的 PowerShell 脚本,因此在创建签名的脚本之前,您必须手动运行这些命令。
  • 在从 OpenClinica 下载的未修改的 csv 文件上运行此操作 - 不要在 Excel 中修改或打开并保存文件
  • 脚本启动时,输出文件和输入文件都不能打开。
  • 可以在 Linux 下的 Perl 中重新实现正则表达式。
  1. 更改以下输入和输出值,以指向您所需的输入文件和输出文件名(路径可以从资源管理器的“位置框”中获取)
  2. 在 Windows 开始菜单的搜索框中输入 cmd(这将打开一个终端)
  3. 然后将以下部分复制并粘贴到终端中(右键单击终端将打开上下文菜单,您可以在其中粘贴)
  4. 脚本下方是有关如何打开更新的文件并将其保存为 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 中打开文件

[编辑 | 编辑源代码]
  1. 打开 Excel
  2. 从文件选项卡中,选择“打开”。
  3. 通过浏览到输出文件的位置来打开文件 - 如果需要,将搜索范围扩大到“所有文件”。
  4. 选择“分隔符”,然后按“下一步”。
  5. 更改分隔符部分,取消选中“制表符”,选中“逗号”(将文本限定符保留为“”。
  6. 按“完成”。
  7. 您现在可以将文件保存为本机 xlsx 或其他格式。
华夏公益教科书