graph LR
Application_Core["Application Core"]
Authentication_Middleware["Authentication & Middleware"]
GraphQL_Server["GraphQL Server"]
Interactors_Business_Logic_["Interactors (Business Logic)"]
Persistence_Layer["Persistence Layer"]
Domain_Models["Domain Models"]
Data_Migration_Utilities["Data Migration & Utilities"]
Application_Core -- "initializes" --> Authentication_Middleware
Application_Core -- "configures" --> Persistence_Layer
Application_Core -- "serves" --> GraphQL_Server
Authentication_Middleware -- "uses" --> Domain_Models
Authentication_Middleware -- "authenticates requests for" --> GraphQL_Server
GraphQL_Server -- "invokes" --> Interactors_Business_Logic_
Interactors_Business_Logic_ -- "manipulates" --> Domain_Models
Interactors_Business_Logic_ -- "accesses data via" --> Persistence_Layer
Persistence_Layer -- "manages" --> Domain_Models
Data_Migration_Utilities -- "migrates" --> Persistence_Layer
Data_Migration_Utilities -- "transforms" --> Domain_Models
click Application_Core href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Application Core.md" "Details"
click Authentication_Middleware href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Authentication & Middleware.md" "Details"
click GraphQL_Server href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/GraphQL Server.md" "Details"
click Interactors_Business_Logic_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Interactors (Business Logic).md" "Details"
click Persistence_Layer href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Persistence Layer.md" "Details"
click Domain_Models href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Domain Models.md" "Details"
click Data_Migration_Utilities href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/medconb/Data Migration & Utilities.md" "Details"
The medconb application provides a GraphQL interface for managing medical concepts, including codelists, phenotypes, and workspaces. The core application sets up the server and integrates authentication, while business logic is handled by interactors that operate on domain models persisted through a SQLAlchemy-based layer. Utility components are available for data migration and ontology imports.
Responsible for setting up the main application, including logging, session management, and integrating with the server. It acts as the entry point for the application.
Related Classes/Methods:
medconb.backend.medconb.app:create_app(20:23)medconb.backend.medconb.app:_create_sessionmaker(26:39)medconb.backend.medconb.app:_create_sqlalchemy_sessionmaker(42:59)medconb.backend.medconb.log:setup_logging(23:42)medconb.backend.medconb.log:time_me(48:86)
Handles user authentication, supporting both Azure AD and development authenticators. It extracts claims and manages user loading and creation, ensuring secure access to the application.
Related Classes/Methods:
medconb.backend.medconb.middleware.AuthBackend:__init__(67:79)medconb.backend.medconb.middleware.DevAuthenticator:__init__(119:123)medconb.backend.medconb.middleware.DevAuthenticator:_configure_develop(125:132)medconb.backend.medconb.middleware.AzureADAuthenticator:__init__(175:187)medconb.backend.medconb.middleware.AzureADAuthenticator:_configure_ad(207:223)medconb.backend.medconb.middleware.AzureADAuthenticator:authenticate(243:261)medconb.backend.medconb.middleware.AzureADAuthenticator:_extract_claims(263:289)medconb.backend.medconb.middleware.AzureADAuthenticator:_load_user(291:332)medconb.backend.medconb.middleware.AzureADAuthenticator:_create_new_user(334:354)medconb.backend.medconb.middleware.AzureADAuthenticator:_init_new_user(356:530)
Provides the GraphQL interface for the application, handling HTTP and WebSocket requests. It integrates with the authentication backend and uses various resolvers to process queries and mutations.
Related Classes/Methods:
medconb.backend.medconb.server.SecureGraphQLHTTPHandler:graphql_http_server(64:65)medconb.backend.medconb.server:create_app(119:162)medconb.backend.medconb.server.SecureGraphQLWSHandler(68:76)medconb.backend.medconb.server.SecureStaticFiles(79:96)medconb.backend.medconb.graphql.query:resolve_paged_codes(160:190)medconb.backend.medconb.graphql.query:resolve_codes(197:225)medconb.backend.medconb.graphql.query:resolve_commit_author(229:241)medconb.backend.medconb.graphql.helper:get_sub_fields(90:103)medconb.backend.medconb.graphql.objects.ObjectType:bind_resolvers_to_graphql_type(65:91)medconb.backend.medconb.graphql.objects.ObjectType:_convert_resolver_to_InteractorResolver(93:127)medconb.backend.medconb.graphql.objects.QueryType:__init__(243:244)medconb.backend.medconb.graphql.objects.MutationType:__init__(250:251)
Consolidates all business logic interactors, including those for workspace, queries, codelists, and phenotypes. It handles operations like creating, updating, deleting, and querying various entities, ensuring proper permissions and data integrity.
Related Classes/Methods:
medconb.backend.medconb.interactors.workspace.MoveCollection:__call__(30:41)medconb.backend.medconb.interactors.workspace.CreateCollection:__call__(45:70)medconb.backend.medconb.interactors.workspace.UpdateCollection:__call__(74:124)medconb.backend.medconb.interactors.workspace.DeleteCollection:__call__(128:159)medconb.backend.medconb.interactors.workspace.SetCollectionPermissions:__call__(167:177)medconb.backend.medconb.interactors.workspace.ResolveContainerItemContainerHierarchy:__call__(184:185)medconb.backend.medconb.interactors.workspace.ResolveContainerItemContainerHierarchy:build_hierarchy(187:202)medconb.backend.medconb.interactors.workspace.ResolveContainerItemOwnerID:__call__(209:211)medconb.backend.medconb.interactors.workspace.ResolveContainerSpecName:__call__(218:221)medconb.backend.medconb.interactors.workspace.ResolveContainerSpecLocked:__call__(228:233)medconb.backend.medconb.interactors.workspace.ResolveContainerSpecVisibility:__call__(248:267)medconb.backend.medconb.interactors.query.SearchEntities:__call__(41:79)medconb.backend.medconb.interactors.query.Collection:__call__(88:94)medconb.backend.medconb.interactors.query.Phenotype:__call__(98:104)medconb.backend.medconb.interactors.query.Codelist:__call__(108:114)medconb.backend.medconb.interactors.query.Users:__call__(118:127)medconb.backend.medconb.interactors.codelist.BaseCodelistInteractor:_load_codelist(19:35)medconb.backend.medconb.interactors.codelist.CreateCodelist:__call__(43:72)medconb.backend.medconb.interactors.codelist.UpdateCodelist:__call__(80:99)medconb.backend.medconb.interactors.codelist.DeleteCodelist:__call__(103:126)medconb.backend.medconb.interactors.codelist.CloneCodelist:__call__(130:177)medconb.backend.medconb.interactors.codelist.MoveCodelist:__call__(181:211)medconb.backend.medconb.interactors.codelist.ImportCodelists:__call__(215:297)medconb.backend.medconb.interactors.codelist.ImportCodelists:_validate_input(299:329)medconb.backend.medconb.interactors.codelist.ImportCodelists:_validate_codesets(331:359)medconb.backend.medconb.interactors.codelist.CommitChanges:__call__(363:397)medconb.backend.medconb.interactors.codelist.StoreTransientChanges:__call__(401:435)medconb.backend.medconb.interactors.codelist.DiscardTransientChanges:__call__(439:454)medconb.backend.medconb.interactors.base.BaseInteractor:is_readable_by_current_user(34:44)medconb.backend.medconb.interactors.base.BaseInteractor:is_writable_by_current_user(46:56)medconb.backend.medconb.interactors.base.BaseInteractor:_must_get_collection_from_current_workspace(58:75)medconb.backend.medconb.interactors.base.BaseInteractor:_must_load_container(78:80)medconb.backend.medconb.interactors.base.BaseInteractor:_must_load_container_item(149:174)medconb.backend.medconb.interactors.base.BaseInteractor:_identify_ref(176:212)medconb.backend.medconb.interactors.base.BaseInteractor:_must_load_root_collection_of(214:222)medconb.backend.medconb.interactors.phenotype.PhenotypeInteractor:_must_load_phenotype(15:38)medconb.backend.medconb.interactors.phenotype.CreatePhenotype:__call__(42:80)medconb.backend.medconb.interactors.phenotype.UpdatePhenotype:__call__(84:146)medconb.backend.medconb.interactors.phenotype.DeletePhenotype:__call__(150:178)medconb.backend.medconb.interactors.phenotype.ClonePhenotype:__call__(182:237)
Handles the persistence of data using SQLAlchemy, including session management, ORM mapping, and caching mechanisms for properties and codes. It provides the interface for interacting with the database.
Related Classes/Methods:
medconb.backend.medconb.persistence.sqlalchemy.session.Session:handle_domain_container_item_init(98:120)medconb.backend.medconb.persistence.sqlalchemy.session.Session:user_(full file reference)medconb.backend.medconb.persistence.sqlalchemy.session.Session:collection_(full file reference)medconb.backend.medconb.persistence.sqlalchemy.session.Session:phenotype_(full file reference)medconb.backend.medconb.persistence.sqlalchemy.session.Session:codelist_(full file reference)medconb.backend.medconb.persistence.sqlalchemy.session.Session:ontology_(full file reference)medconb.backend.medconb.persistence.sqlalchemy.session:create_sessionmaker(175:203)medconb.backend.medconb.persistence.sqlalchemy.orm.PropertyBagType:process_result_value(62:69)medconb.backend.medconb.persistence.sqlalchemy.orm._ContainerItemAssociationList:_create(107:133)medconb.backend.medconb.persistence.sqlalchemy.orm.MutableSetOfCodeIds:coerce(269:276)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedCodeRepository:warmup(46:62)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedCodeRepository:get(92:94)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedCodeRepository:search_codes(113:115)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedPropertyRepository:__init__(119:128)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedPropertyRepository:_refresh_cache(138:160)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedPropertyRepository:get(165:171)medconb.backend.medconb.persistence.sqlalchemy.cache.CachedPropertyRepository:get_all(173:180)
Defines the core domain models and their behaviors, including codelists, changesets, authors, commits, codesets, collections, properties, ontologies, containers, importers, and users. It represents the business entities and their relationships.
Related Classes/Methods:
medconb.backend.medconb.domain.codelist.SetOfCodeIds:__or__(35:38)medconb.backend.medconb.domain.codelist.SetOfCodeIds:__sub__(48:51)medconb.backend.medconb.domain.codelist.Changeset:__init__(98:106)medconb.backend.medconb.domain.codelist.Changeset:__deepcopy__(108:113)medconb.backend.medconb.domain.codelist.Author:from_user(119:125)medconb.backend.medconb.domain.codelist.Commit:__deepcopy__(143:149)medconb.backend.medconb.domain.codelist.Codeset:to_changeset(168:173)medconb.backend.medconb.domain.codelist.Codesets:__add__(188:215)medconb.backend.medconb.domain.codelist.Codelist:codesets(240:243)medconb.backend.medconb.domain.codelist:squash_codelist(280:318)medconb.backend.medconb.domain.base:update_property_bag(91:158)medconb.backend.medconb.domain.ontology.Code:deserialize(37:38)medconb.backend.medconb.domain.container.OrderedContainer:to_spec(70:71)medconb.backend.medconb.domain.container.OrderedContainer:__contains__(74:74)medconb.backend.medconb.domain.container.OrderedContainer:add_or_move_item_after(95:99)medconb.backend.medconb.domain.container.OrderedContainer:remove_item(151:151)medconb.backend.medconb.domain.importer:import_codelist(30:87)medconb.backend.medconb.domain.user.Workspace:add_collection(76:78)medconb.backend.medconb.domain.user.Workspace:remove_collection(83:87)medconb.backend.medconb.domain.user.Workspace:move_collection_after(89:104)
Provides utility functions and scripts for data migration and ontology imports. It includes logic for asserting required properties, importing ontologies, and migrating existing ontology data.
Related Classes/Methods:
medconb.backend.helper.data_upgrader_v14:main(23:26)medconb.backend.helper.data_upgrader_v14:assert_required_properties_set_on_collections(51:84)medconb.backend.helper.data_upgrader_v14:assert_required_properties_set_on_phenotypes(87:121)medconb.backend.helper.data_upgrader_v14:sessionmaker(124:145)medconb.backend.helper.import_ontologies:main(79:83)medconb.backend.helper.import_ontologies:exec_text(86:87)medconb.backend.helper.import_ontologies:_main(94:234)medconb.backend.helper.import_ontologies:dfs(237:258)medconb.backend.helper.migrate_ontologies:main(459:463)medconb.backend.helper.migrate_ontologies:exec_text(466:467)medconb.backend.helper.migrate_ontologies:_main(474:697)medconb.backend.helper.migrate_ontologies:remove_invalid_codes(700:731)medconb.backend.helper.migrate_ontologies:dfs(826:849)