update
This commit is contained in:
@@ -1,49 +1,140 @@
|
||||
import json
|
||||
import glob
|
||||
import os
|
||||
import uuid
|
||||
import re
|
||||
|
||||
# Load the original JSON file
|
||||
with open("structure.json", "r", encoding="utf-8") as file:
|
||||
data = json.load(file)
|
||||
|
||||
# Create the new structure
|
||||
new_structure = {"byId": {}, "allIds": []}
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
# Function to fix punctuation in titles
|
||||
def fix_title_punctuation(title):
|
||||
# Fix spaces around semicolons (ensure there's a space after each semicolon and no space before)
|
||||
fixed_title = re.sub(r"\s*;\s*", "; ", title)
|
||||
internalMedicine = [
|
||||
"Предмет и задачи на вътрешната медицина. Раздели на вътрешните болести.",
|
||||
"Болест и здраве. Етиология и патогенеза на болестите. Периоди на болестта.",
|
||||
"Агония. Клинична смърт. Биологична смърт.",
|
||||
"Основни класически методи на изследване във вътрешната медицина – анамнеза. Физикални методи на изследване на пациентите – оглед, палпация, перкусия, аускултация. Специални методи на изследване на пациентите.",
|
||||
"Сегашно състояние – обективен статус на болния. Клинична диагноза и прогноза. Проследяване на болния – декурзус.",
|
||||
"Изследване на дихателната система. Основни симптоми и синдроми при заболявания на дихателната система. Физикални и специални методи на изследване на дихателната система.",
|
||||
"Остър и хроничен бронхит. Белодробен емфизем. ХОББ.",
|
||||
"Пневмонии: класификации, клиника, лечение.",
|
||||
"Бронхиектазии. Белодробен абсцес.",
|
||||
"Тумори на белия дроб.",
|
||||
"Белодробен тромбоемболизъм.",
|
||||
"Плеврити.",
|
||||
"Белодробна туберкулоза – етиология, патогенеза и клинична картина. Първична белодробна туберкулоза. Вторична белодробна туберкулоза. Лечение и профилактика на белодробната туберкулоза.",
|
||||
"Дихателна недостатъчност – остра и хронична. Етиология и патогенеза. Степени, клиника и поведение.",
|
||||
"Основни симптоми и синдроми при заболявания на сърдечно-съдовата система. Физикални и специални методи на изследване на сърдечно-съдовата система.",
|
||||
"Ревматизъм.",
|
||||
"Сърдечна недостатъчност – остра и хронична.",
|
||||
"Лечение на сърдечната недостатъчност. Поведение на медицинската сестра при спешни състояния на остра или обострена хронична сърдечна недостатъчност.",
|
||||
"Ендокардити, перикардити. Миокардити.",
|
||||
"Хипертонична болест: рискови фактори, патогенеза, клиника, лечение.",
|
||||
"Остра периферна сърдечно-съдова недостатъчност. Кардиогенен шок.",
|
||||
"Ритъмни и проводни нарушения на сърдечната дейност.",
|
||||
"Исхемична болест на сърцето: етиология и патогенеза, рискови фактори. Стенокардия.",
|
||||
"Исхемична болест на сърцето: етиология и патогенеза, рискови фактори. Инфаркт на миокарда.",
|
||||
"Болести на хипофизата: Акромегалия. Безвкусен диабет.",
|
||||
"Болести на щитовидната жлеза: Тиреотоксикоза. Микседем. Ендемична гуша.",
|
||||
"Болести на надбъбречните жлези: Хиперкортицизъм. Хипокортицизъм.",
|
||||
"Захарен диабет – етиология, патогенеза, класификация, клиника. Диабетна кетоацидоза и хипогликемична кома. Поведение на медицинската сестра при диабетно болен в кома.",
|
||||
"Захарен диабет – късни усложнения. Захарен диабет – диета и медикаментозно лечение.",
|
||||
"Метаболитен синдром. Затлъстяване. Подагра.",
|
||||
"Изследване на стомашно-чревния тракт. Анамнеза. Основни симптоми и синдроми при заболявания на стомашно-чревния тракт.",
|
||||
"Физикални и специални методи на изследване на стомашно-чревния тракт.",
|
||||
"Гастрити. ГЕРБ.",
|
||||
"Язвена болест. Рак на стомаха.",
|
||||
"Ентерити и колити. Рак на дебелото черво.",
|
||||
"Основни симптоми и синдроми при заболяване на черния дроб и жлъчните пътища. Анамнеза, физикални и специални методи за изследване на черния дроб и жлъчните пътища.",
|
||||
"Хронични хепатити. Чернодробни цирози.",
|
||||
"Холелитиаза, холецистити.",
|
||||
"Основни симптоми и синдроми при заболявания на отделителната система. Функционално изследване на отделителната система.",
|
||||
"Остър и хроничен гломерулонефрит.",
|
||||
"Нефролитиаза.",
|
||||
"Пиелонефрити.",
|
||||
"Остра бъбречна недостатъчност. Хронична бъбречна недостатъчност.",
|
||||
"Балканска ендемична нефропатия. Бъбречна поликистозна болест. Бъбречна туберкулоза.",
|
||||
"Ревматоиден артрит.",
|
||||
"Лупус еритематодес.",
|
||||
"Артрозна болест. Остеопороза.",
|
||||
"Желязодефицитни анемии.",
|
||||
"Витамин В12-дефицитни анемии.",
|
||||
"Хемолитични анемии вследствие на вътре- и извънеритроцитни фактори: вродени и придобити.",
|
||||
"Хеморагични диатези – хемофилия, есенциална тромбоцитопения, капиляротоксикоза.",
|
||||
"Бластна левкоза. Хронична миелолевкоза.",
|
||||
"Нехочкинови и хочкинови лимфоми.",
|
||||
"Остри екзогенни интоксикации. Общи принципи и правила в лечението на острите екзогенни отравяния. Поведение на медицинската сестра и грижи за болния с остро отравяне.",
|
||||
"Алергия. Алергични заболявания. Анафилактичен шок. Поведение на медицинската сестра при спешни алергични състояния.",
|
||||
]
|
||||
|
||||
# Fix spaces around hyphens (ensure there's a space after but not before)
|
||||
fixed_title = re.sub(r"(\w)-\s+", r"\1- ", fixed_title)
|
||||
pharmacology = [
|
||||
"Лекарствена форма – определение, видове (твърди, течни, меки, газообразни и галенови лекарствени форми). Рецептурни примери.",
|
||||
"Видове дози – терапевтична, токсична. Терапевтичен индекс и терапевтична ширина. Дозиране на лекарствата при различните възрастови групи.",
|
||||
"Въвеждане на лекарството в организма. Явления при многократно и при комбинирано прилагане.",
|
||||
"Ефективност и потентност на лекарството. Фактори, модификациращи лекарствените действия от страна на организма и на околната среда.",
|
||||
"Хистамин и антихистаминови лекарствени средства.",
|
||||
"Психотропни лекарствени средства – анксиолитици, психостимуланти, ноотропни средства.",
|
||||
"Наркотични (опиоидни) аналгетици.",
|
||||
"Ненаркотични (неопиоидни) аналгетици – пиразолонови, пиразолидиндионови, анилинови, салицилови производни. Нестероидни противовъзпалителни средства.",
|
||||
"Лекарствени средства за лечение на сърдечна недостатъчност. Антиаритмични лекарствени средства.",
|
||||
"Антистенокардни (антиангинозни) и антиатероматозни лекарствени средства.",
|
||||
"Антихипертензивни лекарствени средства – централни и периферни симпатиколитици, миотропни вазодилататори, калциеви антагонисти, инхибитори на ренин-ангиотензин II-алдостероновата система, диуретици.",
|
||||
"Лекарствени средства, влияещи върху хемопоезата и кръвосъсирването (антианемични средства, хемостатици, коагуланти, антикоагуланти, фибринолитици и инхибитори на стимулирания фибринолитичен процес).",
|
||||
"Беталактамни антибиотици – пеницилини, цефалоспорини, карбапенеми, монобактами.",
|
||||
"Гликопептидни антибиотици (ванкомицин, тейкопланин). Аминогликозидни антибиотици.",
|
||||
"Макролидни антибиотици. Линкозамиди. Рифамицини.",
|
||||
"Полипептидни антибиотици. Противотуберкулозни лекарствени средства.",
|
||||
"Тетрациклини, сулфонамиди, рифамицини.",
|
||||
"Флуорохинолони.",
|
||||
"Антимикотични и антивирусни лекарствени средства.",
|
||||
"Лекарствени средства, действащи върху дихателната система – аналептици на дихателния център, противокашлични, отхрачващи и антисептични средства.",
|
||||
"Лекарствени средства, действащи върху храносмилателната система – апетитостимулиращи, апетитопотискащи (анорексигенни), противоповръщащи (антиеметични), противоязвени (антиулкусни).",
|
||||
]
|
||||
|
||||
return fixed_title
|
||||
subjects = [internalMedicine, pharmacology]
|
||||
|
||||
# Usage
|
||||
directory = Path("./md_files")
|
||||
md_filenames = [f.name for f in directory.glob("*.md")]
|
||||
|
||||
# Process each item in the original array
|
||||
for i, item in enumerate(data):
|
||||
# Generate a new UUID
|
||||
new_id = str(uuid.uuid4())
|
||||
structure = [{"byId": {}, "allIds": []}, {"byId": {}, "allIds": []}]
|
||||
for filename in md_filenames:
|
||||
name_without_ext = filename.replace(".md", "")
|
||||
parts = name_without_ext.split("_")
|
||||
|
||||
# Store the original item with the new ID
|
||||
new_item = item.copy()
|
||||
new_item["id"] = new_id
|
||||
new_item["index"] = i
|
||||
new_item["isFirst"] = i == 0
|
||||
new_item["isLast"] = i == len(data) - 1
|
||||
new_item["files"] = [f.replace("pdf", "html") for f in new_item["files"]]
|
||||
if len(parts) == 4 and parts[0] == "F":
|
||||
subject_index = int(parts[1]) - 1
|
||||
position = int(parts[2])
|
||||
version = int(parts[3])
|
||||
code = f"F{subject_index}_{position}"
|
||||
|
||||
# Fix the title punctuation
|
||||
if "title" in new_item:
|
||||
new_item["title"] = fix_title_punctuation(new_item["title"])
|
||||
if code in structure[subject_index]["byId"]:
|
||||
structure[subject_index]["byId"][code]["files"].append(
|
||||
{"filename": filename, "version": version}
|
||||
)
|
||||
else:
|
||||
# id = str(uuid.uuid4())
|
||||
index = position - 1
|
||||
structure[subject_index]["byId"][code] = {
|
||||
"id": code,
|
||||
"index": index,
|
||||
"isFirst": index == 0,
|
||||
"isLast": index == len(md_filenames) - 1,
|
||||
"title": subjects[subject_index][index],
|
||||
"subject": subject_index,
|
||||
"files": [{"filename": filename, "version": version}],
|
||||
}
|
||||
structure[subject_index]["allIds"].append(
|
||||
{"id": code, "position": position}
|
||||
)
|
||||
|
||||
structure[0]["allIds"] = [
|
||||
item["id"] for item in sorted(structure[0]["allIds"], key=lambda x: x["position"])
|
||||
]
|
||||
structure[1]["allIds"] = [
|
||||
item["id"] for item in sorted(structure[1]["allIds"], key=lambda x: x["position"])
|
||||
]
|
||||
|
||||
# Add to the new structure
|
||||
new_structure["byId"][new_id] = new_item
|
||||
new_structure["allIds"].append(new_id)
|
||||
|
||||
# Save the new structure to topics.json
|
||||
with open("topics.json", "w", encoding="utf-8") as file:
|
||||
json.dump(new_structure, file, ensure_ascii=False, indent=4)
|
||||
json.dump(structure, file, ensure_ascii=False, indent=4)
|
||||
|
||||
print("topics.json created successfully with fixed punctuation")
|
||||
|
||||
Reference in New Issue
Block a user