]>
Softwares of Agnibho - medscript.git/blob - config.py
2 # Copyright (C) 2023 Dr. Agnibho Mondal
3 # This file is part of MedScript.
4 # MedScript is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
5 # MedScript is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
6 # You should have received a copy of the GNU General Public License along with MedScript. If not, see <https://www.gnu.org/licenses/>.
8 import logging
, argparse
, json
, os
, sys
, shutil
10 default_config_file
= os
. path
. abspath ( os
. path
. join ( os
. path
. dirname ( os
. path
. realpath ( sys
. argv
[ 0 ])), "data" , "config.json" ))
12 real_dir
= os
. path
. dirname ( os
. path
. realpath ( sys
. argv
[ 0 ]))
14 with
open ( os
. path
. join ( real_dir
, "info.json" )) as info_file
:
15 info
= json
. loads ( info_file
. read ())
17 parser
= argparse
. ArgumentParser ()
18 parser
. add_argument ( "filename" , nargs
= "?" )
19 parser
. add_argument ( "-c" , "--config" )
20 parser
. add_argument ( "-p" , "--prescriber" )
21 args
= parser
. parse_args ()
23 if ( args
. config
is None ):
24 config_file
= default_config_file
26 config_file
= args
. config
29 "data_directory" : "data" ,
30 "document_directory" : "document" ,
31 "prescriber_directory" : "prescriber" ,
32 "prescriber" : "prescriber" ,
33 "template_directory" : "template" ,
34 "template" : "default_prescription" ,
35 "preset_directory" : "preset" ,
36 "form_directory" : "form" ,
39 "plugin_directory" : "plugin" ,
40 "enable_plugin" : False ,
41 "log_directory" : "log" ,
42 "preset_newline" : True ,
43 "preset_delimiter" : "," ,
45 "check_update" : False ,
53 with
open ( config_file
) as conf
:
54 read
= json
. loads ( conf
. read ())
55 config
= default | read
56 except FileNotFoundError
as e
:
59 except Exception as e
:
63 config
[ "filename" ]= args
. filename
64 config
[ "data_directory" ]= os
. path
. abspath ( os
. path
. join ( real_dir
, os
. path
. expanduser ( config
[ "data_directory" ])))
65 config
[ "document_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "document_directory" ])
66 config
[ "preset_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "preset_directory" ])
67 config
[ "form_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "form_directory" ])
68 config
[ "plugin_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "plugin_directory" ])
69 config
[ "template_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "template_directory" ])
70 config
[ "template" ]= os
. path
. join ( config
[ "template_directory" ], config
[ "template" ])
71 config
[ "log_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "log_directory" ])
72 config
[ "resource" ]= os
. path
. abspath ( os
. path
. join ( real_dir
, "resource" ))
73 if ( args
. prescriber
is None ):
74 config
[ "prescriber_directory" ]= os
. path
. join ( config
[ "data_directory" ], config
[ "prescriber_directory" ])
75 config
[ "prescriber" ]= os
. path
. join ( config
[ "prescriber_directory" ], config
[ "prescriber" ])
76 if ( not config
[ "prescriber" ]. endswith ( ".json" )): config
[ "prescriber" ]= config
[ "prescriber" ]+ ".json"
78 if ( not os
. path
. isabs ( args
. prescriber
)):
79 args
. prescriber
= os
. path
. join ( config
[ "prescriber_directory" ], args
. prescriber
)
80 if ( os
. path
. isfile ( args
. prescriber
)):
81 config
[ "prescriber" ]= args
. prescriber
83 config
[ "prescriber" ]= os
. path
. join ( config
[ "prescriber_directory" ], config
[ "prescriber" ])
84 logging
. warning ( "File " + args
. prescriber
+ " not found." )
86 os
. makedirs ( config
[ "data_directory" ], exist_ok
= True )
87 os
. makedirs ( config
[ "document_directory" ], exist_ok
= True )
88 os
. makedirs ( config
[ "prescriber_directory" ], exist_ok
= True )
89 os
. makedirs ( config
[ "preset_directory" ], exist_ok
= True )
90 os
. makedirs ( config
[ "form_directory" ], exist_ok
= True )
91 os
. makedirs ( config
[ "plugin_directory" ], exist_ok
= True )
92 os
. makedirs ( config
[ "template_directory" ], exist_ok
= True )
93 os
. makedirs ( config
[ "log_directory" ], exist_ok
= True )
94 if not os
. path
. exists ( os
. path
. join ( config
[ "data_directory" ], "config.json" )):
95 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "config.json" )), os
. path
. join ( config
[ "data_directory" ], "config.json" ))
96 if not os
. path
. exists ( os
. path
. join ( config
[ "prescriber_directory" ], "prescriber.json" )):
97 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "prescriber" , "prescriber.json" )), os
. path
. join ( config
[ "prescriber_directory" ], "prescriber.json" ))
98 if not os
. path
. exists ( os
. path
. join ( config
[ "template_directory" ], "default" )):
99 shutil
. copytree ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "template" , "default" )), os
. path
. join ( config
[ "template_directory" ], "default" ))
100 if not os
. path
. exists ( os
. path
. join ( config
[ "template_directory" ], "medcert" )):
101 shutil
. copytree ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "template" , "medcert" )), os
. path
. join ( config
[ "template_directory" ], "medcert" ))
102 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "certificate.csv" )):
103 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "certificate.csv" )), os
. path
. join ( config
[ "preset_directory" ], "certificate.csv" ))
104 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "note.csv" )):
105 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "note.csv" )), os
. path
. join ( config
[ "preset_directory" ], "note.csv" ))
106 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "report.csv" )):
107 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "report.csv" )), os
. path
. join ( config
[ "preset_directory" ], "report.csv" ))
108 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "investigation.csv" )):
109 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "investigation.csv" )), os
. path
. join ( config
[ "preset_directory" ], "investigation.csv" ))
110 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "advice.csv" )):
111 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "advice.csv" )), os
. path
. join ( config
[ "preset_directory" ], "advice.csv" ))
112 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "medication.csv" )):
113 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "medication.csv" )), os
. path
. join ( config
[ "preset_directory" ], "medication.csv" ))
114 if not os
. path
. exists ( os
. path
. join ( config
[ "preset_directory" ], "additional.csv" )):
115 shutil
. copyfile ( os
. path
. abspath ( os
. path
. join ( real_dir
, "data" , "preset" , "additional.csv" )), os
. path
. join ( config
[ "preset_directory" ], "additional.csv" ))