利用MongoDB作为存储层操作FHIR数据

fhirstore的Python项目详细描述


F仓库

利用mongoDB作为存储层来操作fhir资源的Python库。在

安装

pip install fhirstore

使用

^{pr2}$

引导数据库

  1. 启动数据库
  2. 根据提供的架构删除并重新创建所有集合
docker-compose up -d
python main.py

开发设置

  1. 创建一个虚拟环境并进入它
  2. 安装python依赖项
virtualenv .
. ./bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt

试验

可以使用以下方法运行测试:

python -m pytest

确保安装了开发依赖项。在

基准

基于在上公开的示例FHIR资源的基准可以使用以下方式运行:

python benchmark/benchmark.py

注意,为了运行基准测试,您需要一个MongoDB。在启动基准测试之前,可以通过运行docker-compose up来使用这个存储库的docker compose文件。在

在配备16GB RAM和i7(2.5GHz)处理器的机器上,benchamrk的结果是:

--- WRITES ---
insertions per second (on average): 267.17
average: 3.74 milliseconds
median: 1.66 milliseconds
min: 1.07 milliseconds
max: 724.65 milliseconds
spread: 0.00028004697751347234

--- READS ---
reads per second (on average): 378.93
average: 2.63 milliseconds
median: 1.50 milliseconds
min: 0.88 milliseconds
max: 481.18 milliseconds
spread: 0.0002154728657872756

在同一台机器上,下面是使用不同库fhirbase的同一基准测试的结果。后者依赖postgreSQL而不是MongoDB作为存储层。此外,它只支持FHIR资源3.3.0及以下版本。在

--- WRITES ---
insertions per second (on average): 152.38
average: 6.56 milliseconds
median: 4.43 milliseconds
min: 3.08 milliseconds
max: 158.88 milliseconds
spread: 7.568139030481407e-05

--- READS ---
reads per second (on average): 261.07
average: 3.83 milliseconds
median: 3.03 milliseconds
min: 2.17 milliseconds
max: 102.06 milliseconds
spread: 1.4565324857334904e-05

发布

首先,您需要安装twine

pip install --user --upgrade twine

确保您已在setup.py中突出了版本号,然后运行以下命令:

python setup.py sdist bdist_wheel
python -m twine upload dist/*

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Synth xml中的java设置JLabel图标   java全屏Flash应用程序测试需要外部戳   评测配置文件Java CPU负载   java如何显示布尔值?   java共享库与微服务?   使用bash脚本重定向java输出(liquibase)   java如何进行结构化日志记录?   属性JSF2的java绑定属性<h:dataTable>   java Android Restlet包装崩溃   java如果在一个事务中我们只在一个数据源上写,是否可以避免2PC或手动处理提交?(J2CA0030E)   java从哪里获得openCV的jar?   java正在尝试更新SQL数据库条目,但收到SQL语法错误。我怎么知道这里出了什么问题?   java如何在Firebase数据库值中添加空格   为什么在java中读取datainputstream时会出现EOF异常?   java STDERR将每个stacktrace行作为错误日志条目写入WildFly服务器。日志   java通过socket编写一个没有'ImageIO'的映像   java为什么JBoss会在出现错误时破坏连接池?   javafxjava如何查找当月的第一次登录   java这个Android项目给了我一个崩溃的机会,我正试图让这个项目有一个来自编辑文本的数字,并在文本视图中得到它两次