# sassoftware/ci360-cdm-loader-sas architecture

> Architecture diagram of the GitHub repository sassoftware/ci360-cdm-loader-sas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sassoftware/ci360-cdm-loader-sas
- Repository: https://github.com/sassoftware/ci360-cdm-loader-sas

## Overview

This repository is a SAS Customer Intelligence 360 CDM loader: users configure and run it against data sets downloaded separately, loading them into a third-party database. Database setup is a separate documented step, with DDL to create, alter, or drop tables for multiple database engines and CDM schema versions. The tree identifies loader macro responsibilities, but no source excerpts were provided, so internal calls and sequencing among those macros cannot be verified; the edges below are limited to relationships stated in the README.

Main entry points: [`macros/cdm_main.sas`](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_main.sas) (Main loader), [`ddl/ci_cdm3_ddl_oracle.sas`](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_ddl_oracle.sas) (Table creation DDL), [`ddl/ci_cdm3_alter_ddl_oracle.sas`](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_alter_ddl_oracle.sas) (Schema alter DDL), [`ddl/ci_cdm3_drop_oracle.sas`](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_drop_oracle.sas) (Table removal DDL)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Inputs and setup"]
  node_downloaded["Downloaded CDM data"]
  node_config["Loader configuration<br/>[config.txt]"]
end

subgraph group_loader["Loader macros"]
  node_launch["Launch and credentials<br/>[cdm_launch.sas]"]
  node_main["Main loader<br/>[cdm_main.sas]"]
  node_preprocess["Preprocessing"]
  node_validate["Schema validation"]
  node_libraries["Library verification"]
  node_range["Data range"]
  node_history["History lookup"]
  node_keys["Key building<br/>[cdm_build_keys.sas]"]
  node_load["Database loading<br/>[cdm_load.sas]"]
  node_datastep["Data-step loading"]
  node_oracle["Oracle loading"]
  node_history_update["History updates"]
  node_postprocess["Postprocessing"]
end

subgraph group_schema["Database schema DDL"]
  node_create_ddl["Table creation DDL"]
  node_alter_ddl["Schema alter DDL"]
  node_drop_ddl["Table removal DDL"]
end

node_user(("Loader operator"))
node_database[("Target database")]

node_user -->|"configures and runs"| node_launch
node_downloaded -->|"provides input"| node_main
node_main -->|"loads data"| node_database
node_create_ddl -->|"creates tables"| node_database
node_alter_ddl -->|"updates schema"| node_database
node_drop_ddl -->|"drops tables"| node_database

click node_config "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/config/config.txt"
click node_launch "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_launch.sas"
click node_main "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_main.sas"
click node_preprocess "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_preprocessing.sas"
click node_validate "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_validate_schemas.sas"
click node_libraries "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_verify_libraries.sas"
click node_range "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_get_data_range.sas"
click node_history "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_get_history.sas"
click node_keys "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_build_keys.sas"
click node_load "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load.sas"
click node_datastep "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load_datastep.sas"
click node_oracle "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load_oracle.sas"
click node_history_update "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_update_history.sas"
click node_postprocess "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_postprocessing.sas"
click node_create_ddl "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_ddl_oracle.sas"
click node_alter_ddl "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_alter_ddl_oracle.sas"
click node_drop_ddl "https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_drop_oracle.sas"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_downloaded,node_config toneBlue
class node_launch,node_main,node_preprocess,node_validate,node_libraries,node_range,node_history,node_keys,node_load,node_datastep,node_oracle,node_history_update,node_postprocess,node_database toneAmber
class node_create_ddl,node_alter_ddl,node_drop_ddl toneMint
class node_user toneIndigo
```

## Components

### Inputs and setup

- **Downloaded CDM data**
- [Loader configuration](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/config/config.txt): `config/config.txt`

### Loader macros

- [Launch and credentials](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_launch.sas): `macros/cdm_launch.sas`
- [Main loader](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_main.sas): `macros/cdm_main.sas`
- [Preprocessing](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_preprocessing.sas): `macros/cdm_preprocessing.sas`
- [Schema validation](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_validate_schemas.sas): `macros/cdm_validate_schemas.sas`
- [Library verification](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_verify_libraries.sas): `macros/cdm_verify_libraries.sas`
- [Data range](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_get_data_range.sas): `macros/cdm_get_data_range.sas`
- [History lookup](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_get_history.sas): `macros/cdm_get_history.sas`
- [Key building](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_build_keys.sas): `macros/cdm_build_keys.sas`
- [Database loading](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load.sas): `macros/cdm_load.sas`
- [Data-step loading](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load_datastep.sas): `macros/cdm_load_datastep.sas`
- [Oracle loading](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_load_oracle.sas): `macros/cdm_load_oracle.sas`
- [History updates](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_update_history.sas): `macros/cdm_update_history.sas`
- [Postprocessing](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/macros/cdm_postprocessing.sas): `macros/cdm_postprocessing.sas`

### Database schema DDL

- [Table creation DDL](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_ddl_oracle.sas): `ddl/ci_cdm3_ddl_oracle.sas`
- [Schema alter DDL](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_alter_ddl_oracle.sas): `ddl/ci_cdm3_alter_ddl_oracle.sas`
- [Table removal DDL](https://github.com/sassoftware/ci360-cdm-loader-sas/blob/main/ddl/ci_cdm3_drop_oracle.sas): `ddl/ci_cdm3_drop_oracle.sas`

### Other components

- **Loader operator**
- **Target database**

## Connections

- Loader operator → Launch and credentials: configures and runs (evidence: `README.md`)
- Downloaded CDM data → Main loader: provides input (evidence: `README.md`)
- Main loader → Target database: loads data (evidence: `README.md`)
- Table creation DDL → Target database: creates tables (evidence: `README.md`)
- Schema alter DDL → Target database: updates schema (evidence: `README.md`)
- Table removal DDL → Target database: drops tables (evidence: `README.md`)
