SQLAlchemy models and DDL and ERD generation from chop-dbhi/data-models style JSON endpoints.
6.2K
SQLAlchemy models and DDL and ERD generation for chop-dbhi/data-models style JSON endpoints.
Web service available at http://dmsa.a0b.io/
In your shell, hopefully within a virtualenv:
pip install dmsa
In python:
from dmsa.omop.v5.models import Base
for tbl in Base.metadata.sorted_tables():
print tbl.name
Or:
from dmsa.pedsnet.v2.models import Person, VisitPayer
print VisitPayer.columns
These models are dynamically generated at runtime from JSON endpoints provided by chop-dbhi/data-models-service, which reads data stored in chop-dbhi/data-models. It should be simple to add modules for any additional data models that become available, but the currently provided ones are:
omop.v4.modelsomop.v5.modelspedsnet.v1.modelspedsnet.v2.modelsi2b2.v1_7.modelsi2b2.pedsnet.v2.modelspcornet.v1.modelspcornet.v2.modelspcornet.v3.modelsUse of the included Dockerfile is highly recommended to avoid installing DBMS and graphing specific system requirements.
The following DBMS dialects are supported when generating DDL:
postgresqlmysqlmssqloracleRetrieve the image:
docker pull dbhi/data-models-sqlalchemy
Usage for DDL generation:
docker run --rm dbhi/data-models-sqlalchemy ddl -h
Generate OMOP V5 DDL for Oracle:
docker run --rm dbhi/data-models-sqlalchemy ddl omop v5 oracle
Usage for ERD generation:
docker run --rm dbhi/data-models-sqlalchemy erd -h
Generate i2b2 PEDSnet V2 ERD (the image will land at ./erd/i2b2_pedsnet_v2_erd.png):
docker run --rm -v $(pwd)/erd:/erd dbhi/data-models-sqlalchemy erd i2b2_pedsnet v2 /erd/i2b2_pedsnet_v2_erd.png
The graphviz graphing package supports a number of other output formats, listed here (link pending), which are interpreted from the passed extension.
Install the system requirements (see Dockerfile for details):
graphviz for ERD generationinstantclient-basic and -sdk and libaio1 for Oracle DDL generationlibpq-dev for PostgreSQL DDL generationunixodbc-dev for MS SQL Server DDL generationInstall the python requirements, hopefully within a virtualenv (see Dockerfile for details):
pip install cx-Oracle # for Oracle DDL generation
pip install psycopg2 # for PostgreSQL DDL generation
pip install PyMySQL # for MySQL DDL generation
pip install pyodbc # for MS SQL Server DDL generation
Install the data-models-sqlalchemy python package:
pip install dmsa
Usage for DDL generation:
dmsa ddl -h
Generate OMOP V5 DDL for Oracle:
dmsa ddl omop v5 oracle
Usage for ERD generation:
dmsa erd -h
Generate i2b2 PEDSnet V2 ERD (the image will land at ./erd/i2b2_pedsnet_v2_erd.png):
mkdir erd
dmsa erd i2b2_pedsnet v2 ./erd/i2b2_pedsnet_v2_erd.png
The web service uses a simple Flask debug server for now. It exposes the following endpoints:
/<model>/<version>/ddl/<dialect>/table, constraint, or index elements at /<model>/<version>/ddl/<dialect>/<elements>/<model>/<version>/erd/Usage:
docker run dbhi/data-models-sqlalchemy start -h
Run:
docker run dbhi/data-models-sqlalchemy # Uses Dockerfile defaults of 0.0.0.0:80
Install Flask:
pip install Flask
Usage:
dmsa start -h
Run:
dmsa start # Uses Flask defaults of 127.0.0.1:5000
Content type
Image
Digest
Size
592.9 MB
Last updated
almost 9 years ago
docker pull dbhi/data-models-sqlalchemy