58  通过目录批量添加pdf书签

58.0.1 方法一 用pdfplumber

标题为key,页码为value,并调整代码,可使不同级别的书签同属一页。级别由标题内#的个数决定。如果有相同的title会自动在后面加上一个空格,并打印出提醒信息。

58.0.1.1 先提取目录信息

contentstr = '''
第一篇 病历书写基本要求…………………………………………………………1
第一章 病历的概念及分类组成 …………………………………………………………3
第一节 病历的基本概念 ……………………………………………………………3
第二节 病历的分类与组成 …………………………………………………………4
第二章 病历的价值及书写意义 …………………………………………………………6
第一节 病历的价值 …………………………………………………………………6
第二节 病历书写的意义 ……………………………………………………………8
第三章 病历书写原则及基本要求………………………………………………………10
第一节 病历书写原则………………………………………………………………10
第二节 病历书写基本要求…………………………………………………………11
第四章 与《病历书写基本规范(2010年版)》不同之处………………………………15
第一节 框架结构方面的不同……………………………………………………15
第二节 病历书写基本要求方面的不同……………………………………………15
第三节 病历格式和内容方面的不同………………………………………………16
第二篇 门(急)诊病历书写要求及格式………………………………………………………………………………19
第一章 概述………………………………………………………………………………21
第二章 门(急)诊病历书写要求及格式 ………………………………………………22
第一节 门(急)诊手册封面(病历首页)书写要求及格式 ………………………22
第二节 门诊初诊病历记录书写要求及格式………………………………………22
第三节 门诊复诊病历记录书写要求及格式………………………………………25
第四节 门诊急诊病历书写要求及格式……………………………………………26
第五节 多学科门诊病历记录要求及格式…………………………………………29
第三篇 住院病历书写要求及格式…………………………………………………………33
第一章 入院记录书写要求及格式…………………………………………………………35
第一节 入院记录书写要求及格式…………………………………………………35
附1 入院病历(俗称大病历)书写要求及格式…………………………………47
附2 表格式入院记录书写要求及格式 ………………………………………55
第二节 再次或多次入院记录书写要求及格式………………………………………72
第三节 24小时内入出院记录书写要求及格式 …………………………………74
第四节 24小时内入院死亡记录书写要求及格式 ………………………………78
第二章 病程记录书写要求及格式………………………………………………………82
第一节 首次病程记录书写要求及格式……………………………………………82
第二节 日常病程记录书写要求及格式……………………………………………84
第三节 上级医师查房记录书写要求及格式………………………………………86
第四节 疑难病例讨论结论记录书写要求及格式…………………………………87
第五节 交(接)班记录书写要求及格式 …………………………………………89
第六节 转科记录书写要求及格式…………………………………………………91
第七节 阶段小结书写要求及格式…………………………………………………94
第八节 抢救记录书写要求及格式…………………………………………………96
第九节 有创诊疗操作记录书写要求及格式………………………………………97
第十节 会诊记录书写要求及格式…………………………………………………98
第十一节 术前小结及术前讨论结论记录书写要求及格式 …………………103
第十二节 麻醉术前访视记录书写要求及格式 …………………………………105
第十三节 手术安全核查表填写要求及格式 ……………………………………108
第十四节 麻醉记录书写要求及格式 ……………………………………………111
第十五节 手术记录书写要求及格式 ……………………………………………118
第十六节 术后首次病程记录书写要求及格式 …………………………………122
第十七节 麻醉术后访视记录书写要求及格式 …………………………………122
第十八节 大型医疗器械相关记录要求及条形码粘贴(信息记录)单 ………125
第十九节 出院记录书写要求及格式 ……………………………………………127
第二十节 死亡记录书写要求及格式 ……………………………………………129
第二十一节 死亡病例讨论结论记录书写要求及格式 …………………………130
第三章 日间病历和部分专科病历书写要求 ………………………………………133
第一节 日间病历书写要求 …………………………………………………………133
第二节 精神专科病历书写要求 …………………………………………………135
第三节 产科病历书写要求及格式 ………………………………………………135
第四节 肾病科血液透析(滤过)病历书写要求及格式 ………………………143
第四章 护理病历记录书写要求及格式 ……………………………………………147
第一节 体温单填写要求及格式 ………………………………………………147
第二节 病重(病危)患者护理记录书写要求及格式 …………………………152
第三节 手术物品清点记录填写要求及格式 ……………………………………155
第四节 输血护理记录填写要求及格式 …………………………………………158
第五节 血糖测量记录单填写要求及格式 ………………………………………161
第五章 住院病案首页填写要求及格式 ………………………………………………167
第一节 住院病案首页填写要求 …………………………………………………167
附1 住院病案首页科室名称及代码 …………………………………………180
附2 主要诊断选择要求 ………………………………………………………184
附3 其他诊断填写要求 ………………………………………………………187
第二节 住院病案首页格式 ………………………………………………………187
第四篇 处方、医嘱和辅助检查报告单书写要求及格式…………………………………………………………191
第一章 处方开具要求及格式 …………………………………………………………193
第一节 处方开具要求 ……………………………………………………………193
第二节 处方标准 ………………………………………………………………196
第三节 处方格式 …………………………………………………………………197
第二章 医嘱书写要求及格式 ……………………………………………………………207
第一节 医嘱书写基本要求 …………………………………………………………207
第二节 长期医嘱及长期医嘱单书写要求及格式 ………………………………208
第三节 临时医嘱及临时医嘱单书写要求及格式 ………………………………211
第三章 辅助检查报告单书写要求及格式 ………………………………………………214
第一节 检验报告单书写要求及格式 ……………………………………………214
第二节 发血记录单书写要求及格式 ……………………………………………216
第三节 医学影像报告单书写要求及格式 ………………………………………217
第四节 病理诊断报告单书写要求及格式 ………………………………………221
第五篇 知情同意书………………………………………………………………………………225
第一章 概述 ………………………………………………………………………………227
第一节 医疗知情同意的概念 ……………………………………………………227
第二节 医疗告知的形式 …………………………………………………………227
第三节 医疗告知的对象 ……………………………………………………………228
第四节 医疗告知的内容 …………………………………………………………231
第五节 医疗告知的要求 …………………………………………………………232
第六节 知情同意书的保管 …………………………………………………………233
第二章 知情同意书书写要求及格式 ……………………………………………………234
第一节 手术知情同意书书写要求及格式 ………………………………………234
第二节 麻醉知情同意书书写要求及格式 ………………………………………240
第三节 输血治疗知情同意书书写要求及格式 …………………………………244
第四节 特殊检查/特殊治疗知情同意书书写要求及格式………………………247
第五节 病危(病重)通知书书写要求及格式 ……………………………………254
第六节 其他告知/知情同意书格式内容示例……………………………………257
第六篇 病案(病历)管理与质量控制…………………………………………265
第一章 医疗机构病案管理组织架构及职责 …………………………………………267
第一节 病案管理委员会与职责 …………………………………………………267
第二节 病案科(室)的设置及职责 ………………………………………………268
第三节 临床科室病历质量管理职责 ……………………………………………268
第四节 病案科(室)岗位职责 ……………………………………………………269
第二章 病案管理制度 …………………………………………………………………273
第三章 病历书写质量评价标准 ………………………………………………………285
第一节 住院病历书写质量评价标准 ……………………………………………285
第二节 住院病案首页数据质量控制指标及评价标准 …………………………295
第三节 门(急)诊病历书写质量评价标准 ………………………………………299
第四节 医学影像报告单书写质量评价标准 ……………………………………301
附 录 …………………………………………………………………………………………301
一、中华人民共和国民法典…………………………………………………………303
二、医疗纠纷预防和处理条例………………………………………………………305
三、病历书写基本规范………………………………………………………………314
四、电子病历应用管理规范(试行)………………………………………………323
五、医疗机构病历管理规定(2013年版)………………………………………327
六、医疗质量安全核心制度要点……………………………………………………331
七、处方管理办法………………………………………………………………………339
八、住院病案首页数据填写质量规范(暂行)和住院病案首页数据质量管理与控制指标(2016年版) ………………………………………………………347
九、医疗保障基金结算清单填写规范(试行) ……………………………………357
'''

lines = contentstr.split("\n")

import re

bookmarks = {}

for l in lines:
    if l:
        splt = re.split("[…]+", l)
        title = splt[0].strip()
    
        if re.match("(第.?篇|附 录)", title):  # 匹配"第.?篇"或“附 录”
            title = "# " + title
            
        if re.match("(第.?章|.?、)", title):  # `.?`代表一个字符
            title = "## " + title
            
        if re.match("第.*?节", title):  # `.*?`代表任意个字符
            title = "### " + title
            
        if re.match("附\d", title):  
            title = "#### " + title
        
        page = int(splt[1]) + 9     #  往后偏移4页,以与实际页码相对应
        
        if title in bookmarks.keys():
            print(f'warning:“{title}”,不是唯一值,已在“{title}”后面增加一个空格')
            title = title + " "
        bookmarks[title] = page
        
bookmarks

58.0.1.2 添加书签

import PyPDF2

def add_bookmarks(pdf_file, bookmarks, output_file):
    with open(pdf_file, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        writer = PyPDF2.PdfWriter()

        for page_number in range(len(reader.pages)):
            writer.add_page(reader.pages[page_number])

        outlines = {}
        for title, page_number in bookmarks.items():
            level = title.count('#')
            title = title.replace('#', '')

            parent = None
            for i in range(level):
                parent = outlines.get(i, parent)

            if page_number < len(reader.pages):
                current_outline = writer.add_outline_item(title, page_number, parent)
                outlines[level] = current_outline
            else:
                print(f"Warning: Page number {page_number} specified in bookmark '{title}' is out of range.")

        with open(output_file, 'wb') as output_file:
            writer.write(output_file)

if __name__ == "__main__":
    input_file = '病历书写与管理基本规范(2022版)(OCR).pdf'
    output_file = '病历书写与管理基本规范(2022版)(OCR-Bookmark).pdf'
    bookmarks =  bookmarks

    add_bookmarks(input_file, bookmarks, output_file)