```python
import pandas as pd
import numpy as np
import re
import os
file = os.getcwd()
here = Path(file).resolve().parent
root = here
while not (root / 'research').exists():
root = root.parent
pm_cols = {'PMID': 'id',
'DOI': 'doi',
'Authors': 'authors',
'Title': 'title',
'Publication Year': 'year',
'Journal/Book': 'journal'}
em_cols = {'Embase Link': 'id',
'DOI':'doi',
'Author Names': 'authors',
'Title': 'title',
'Publication Year': 'year',
'Source': 'journal'}
wos_cols = {'UT (Unique WOS ID)':'id',
'DOI':'doi',
'Authors': 'authors',
'Article Title': 'title',
'Publication Year': 'year',
'Source Title': 'journal'}
pm_bptb = pd.read_csv('./data/input/pubmed/pm_bptb.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_ht = pd.read_csv('./data/input/pubmed/pm_ht.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_qt = pd.read_csv('./data/input/pubmed/pm_qt.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_plt = pd.read_csv('./data/input/pubmed/pm_plt.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_at = pd.read_csv('./data/input/pubmed/pm_at.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_ta = pd.read_csv('./data/input/pubmed/pm_ta.csv', encoding = 'utf-8', usecols = ['PMID', 'DOI', 'Authors', 'Title', 'Publication Year', 'Journal/Book']).rename(columns = pm_cols)
pm_bptb['subgroup'] = 'BPTB'
pm_ht['subgroup'] = 'HT'
pm_qt['subgroup'] = 'QT'
pm_plt['subgroup'] = 'PLT'
pm_at['subgroup'] = 'AT'
pm_ta['subgroup'] = 'TA'
pubmed = pd.concat([pm_bptb, pm_ht, pm_qt, pm_plt, pm_at, pm_ta])
pubmed['source'] = 'PubMed'
pubmed.to_csv('./pubmed.csv', encoding = 'utf-8')
em_bptb = pd.read_csv('./data/input/embase/em_bptb.csv', encoding = 'utf-8', usecols =['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_ht = pd.read_csv('./data/input/embase/em_ht.csv', encoding = 'utf-8', usecols = ['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_qt = pd.read_csv('./data/input/embase/em_qt.csv', encoding = 'utf-8', usecols = ['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_plt = pd.read_csv('./data/input/embase/em_plt.csv', encoding = 'utf-8', usecols = ['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_at = pd.read_csv('./data/input/embase/em_at.csv', encoding = 'utf-8', usecols = ['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_ta = pd.read_csv('./data/input/embase/em_ta.csv', encoding = 'utf-8', usecols = ['Embase Link', 'DOI', 'Author Names', 'Title', 'Publication Year', 'Source']).rename(columns = em_cols)
em_bptb['subgroup'] = 'BPTB'
em_ht['subgroup'] = 'HT'
em_qt['subgroup'] = 'QT'
em_plt['subgroup'] = 'PLT'
em_at['subgroup'] = 'AT'
em_ta['subgroup'] = 'TA'
embase = pd.concat([em_bptb, em_ht, em_qt, em_plt, em_at, em_ta])
embase['source'] = 'Embase'
embase['id'] = embase['id'].str.replace(r'https://www.embase.com/search/results?subaction=viewrecord&id=L', '', regex = False)
embase['id'] = embase['id'].str.replace(r'NCT', '', regex = True)
embase['id'] = embase['id'].str.replace(r'&from=export', '', regex = True)
embase['authors'] = embase['authors'].str.replace(r'\.','', regex = True)
embase.to_csv('./embase.csv', encoding = 'utf-8')
wos_bptb = pd.read_csv('./data/input/wos/wos_bptb.csv', encoding = 'latin-1', usecols = ['UT (Unique WOS ID)', 'DOI', 'Authors', 'Article Title', 'Publication Year', 'Source Title']).rename(columns = wos_cols)
wos_ht = pd.read_csv('./data/input/wos/wos_ht.csv', encoding = 'latin-1', usecols = ['UT (Unique WOS ID)', 'DOI', 'Authors', 'Article Title', 'Publication Year', 'Source Title']).rename(columns = wos_cols)
wos_qt = pd.read_csv('./data/input/wos/wos_qt.csv', encoding = 'latin-1', usecols = ['UT (Unique WOS ID)', 'DOI', 'Authors', 'Article Title', 'Publication Year', 'Source Title']).rename(columns = wos_cols)
wos_plt = pd.read_csv('./data/input/wos/wos_plt.csv', encoding = 'latin-1', usecols = ['UT (Unique WOS ID)', 'DOI', 'Authors', 'Article Title', 'Publication Year', 'Source Title']).rename(columns = wos_cols)
wos_bptb['subgroup'] = 'BPTB'
wos_ht['subgroup'] = 'HT'
wos_qt['subgroup'] = 'QT'
wos_plt['subgroup'] = 'PLT'
wos = pd.concat([wos_bptb, wos_ht, wos_qt, wos_plt])
wos['source'] = 'Web of Science'
wos['id'] = wos['id'].str.replace(r'WOS:', '', regex = False)
wos.to_csv('./wos.csv', encoding = 'utf-8')
records = pd.concat([pubmed, embase, wos])
records['first_author'] = records['authors'].str.replace(r'[,.;]','', regex = True).str.split().str[0]
records['short_title'] = records['title'].str.replace(r'[\[\]\s,.;-]','',regex = True).str.lower()
records['short_title'] = records['short_title'].str[:25]
records['key'] = records['first_author'] + '+' + records['short_title'] + '+' + records['year'].astype(str)
records.to_csv('./data/output/records.csv')
records.to_csv(Path(csv_dir,'records.csv'))
pubmed.to_csv('./data/output/pubmed.csv')
embase.to_csv('./data/output/embase.csv')
wos.to_csv('./data/output/wos.csv')
```