# Achilles tables

## 1.1 Introduction

The `Achilles` R package is used to provide descriptive statistics of an OMOP CDM database. There exist a total of 294 analyses, classified into 21 categories: General, Person, Observation Period, Visit Occurrence, Provider, Condition Occurrence, Death, Procedure Occurrence, Drug Exposure, Observation, Drug Era, Condition Era, Location, Care Site, Visit Detail, Payer Plan Period, Cost, Measurement, Completeness, Device Exposure, Note.

Analysis | Stratum | Group
--- | --- | ---
ID | Name | 1 | 2 | 3 | 4 | 5
General
0 | Source name | - | - | - | - | - | default; general
Person
1 | Number of persons | - | - | - | - | - | default; person
2 | Number of persons by gender | gender_concept_id | - | - | - | - | default; person
3 | Number of persons by year of birth | year_of_birth | - | - | - | - | default; person
4 | Number of persons by race | race_concept_id | - | - | - | - | default; person
5 | Number of persons by ethnicity | ethnicity_concept_id | - | - | - | - | default; person
7 | Number of persons with invalid provider_id | - | - | - | - | - | person
8 | Number of persons with invalid location_id | - | - | - | - | - | person
9 | Number of persons with invalid care_site_id | - | - | - | - | - | person
10 | Number of all persons by year of birth by gender | year_of_birth | gender_concept_id | - | - | - | default; person
11 | Number of non-deceased persons by year of birth by gender | year_of_birth | gender_concept_id | - | - | - | default; person
12 | Number of persons by race and ethnicity | race_concept_id | ethnicity_concept_id | - | - | - | default; person
101 | Number of persons by age, with age at first observation period | age | - | - | - | - | default; person
102 | Number of persons by gender by age, with age at first observation period | gender_concept_id | age | - | - | - | default; person
Observation Period
103 | Distribution of age at first observation period | - | - | - | - | - | default; observation period
104 | Distribution of age at first observation period by gender | gender_concept_id | - | - | - | - | default; observation period
105 | Length of observation (days) of first observation period | - | - | - | - | - | default; observation period
106 | Length of observation (days) of first observation period by gender | gender_concept_id | - | - | - | - | default; observation period
107 | Length of observation (days) of first observation period by age decile | age decile | - | - | - | - | default; observation period
108 | Number of persons by length of observation period, in 30d increments | Observation period length 30d increments | - | - | - | - | default; observation period
109 | Number of persons with continuous observation in each year | calendar year | - | - | - | - | default; observation period
110 | Number of persons with continuous observation in each month | calendar month | - | - | - | - | default; observation period
111 | Number of persons by observation period start month | calendar month | - | - | - | - | default; observation period
112 | Number of persons by observation period end month | calendar month | - | - | - | - | default; observation period
113 | Number of persons by number of observation periods | number of observation periods | - | - | - | - | default; observation period
114 | Number of persons with observation period before year-of-birth | - | - | - | - | - | observation period
115 | Number of persons with observation period end < observation period start | - | - | - | - | - | observation period
116 | Number of persons with at least one day of observation in each year by gender and age decile | calendar year | gender_concept_id | age decile | - | - | default; observation period
117 | Number of persons with at least one day of observation in each month | calendar month | - | - | - | - | default; observation period
118 | Number of observation periods with invalid person_id | - | - | - | - | - | observation period
119 | Number of observation period records by period_type_concept_id | period_type_concept_id | - | - | - | - | default; observation period
210 | Number of visit_occurrence records outside a valid observation period | - | - | - | - | - | default; observation period
230 | Number of visit_occurrence records inside valid observation period | - | - | - | - | - | observation period
231 | Proportion of people with at least one visit_occurrence record outside a valid observation period | Proportion | Number of people with a visit_occurrence record outside a valid observation period | Number of people in visit_occurrence | - | - | observation period
232 | Proportion of visit_occurrence records outside a valid observation period | Proportion | Number of visit_occurrence records outside a valid observation period | Number of visit_occurrence records | - | - | observation period
410 | Number of condition occurrence records outside valid observation period | - | - | - | - | - | observation period
430 | Number of condition_occurrence records inside a valid observation period | - | - | - | - | - | observation period
431 | Proportion of people with at least one condition_occurrence record outside a valid observation period | Proportion | Number of people with a condition_occurrence record outside a valid observation period | Number of people in condition_occurrence | - | - | observation period
432 | Proportion of condition_occurrence records outside a valid observation period | Proportion | Number of condition_occurrence records outside a valid observation period | Number of condition_occurrence records | - | - | observation period
510 | Number of death records outside valid observation period | - | - | - | - | - | observation period
530 | Number of death records inside a valid observation period | - | - | - | - | - | observation period
531 | Proportion of people with at least one death record outside a valid observation period | Proportion | Number of people with a death record outside a valid observation period | Number of people in death | - | - | observation period
532 | Proportion of death records that occur outside a valid observation period | Proportion | Number of records in death outside a valid observation period | Number of death records | - | - | observation period
610 | Number of procedure occurrence records outside valid observation period | - | - | - | - | - | observation period
630 | Number of procedure_occurrence records inside a valid observation period | - | - | - | - | - | default; observation period
631 | Proportion of people with at least one procedure_occurrence record outside a valid observation period | Proportion | Number of people with a procedure_occurrence record outside a valid observation period | Number of people in procedure_occurrence | - | - | observation period
632 | Proportion of procedure_occurrence records outside a valid observation period | Proportion | Number of records in procedure_occurrence outside a valid observation period | Number of procedure_occurrence records | - | - | observation period
710 | Number of drug exposure records outside valid observation period | - | - | - | - | - | observation period
730 | Number of drug_exposure records inside a valid observation period | - | - | - | - | - | observation period
731 | Proportion of people with at least one drug_exposure record outside a valid observation period | Proportion | Number of people with a drug_exposure record outside a valid observation period | Number of people in drug_exposure | - | - | observation period
732 | Proportion of drug_exposure records outside a valid observation period | Proportion | Number of records in drug_exposure outside a valid observation period | Number of drug_exposure records | - | - | observation period
810 | Number of observation records outside valid observation period | - | - | - | - | - | observation period
830 | Number of observation records inside a valid observation period | - | - | - | - | - | observation period
831 | Proportion of people with at least one observation record outside a valid observation period | Proportion | Number of people with a observation record outside a valid observation period | Number of people in observation | - | - | observation period
832 | Proportion of observation records outside a valid observation period | Proportion | Number of records in observation outside a valid observation period | Number of observation records | - | - | observation period
910 | Number of drug_era records outside valid observation period | - | - | - | - | - | observation period
930 | Number of drug_era records inside a valid observation period | - | - | - | - | - | observation period
931 | Proportion of people with at least one drug_era record outside a valid observation period | Proportion | Number of people with a drug_era record outside a valid observation period | Number of people in drug_era | - | - | observation period
932 | Proportion of drug_era records outside a valid observation period | Proportion | Number of records in drug_era outside a valid observation period | Number of drug_era records | - | - | observation period
1010 | Number of condition_era records outside a valid observation period | - | - | - | - | - | observation period
1030 | Number of condition_era records inside a valid observation period | - | - | - | - | - | observation period
1031 | Proportion of people with at least one condition_era record outside a valid observation period | Proportion | Number of people with a condition_era record outside a valid observation period | Number of people in condition_era | - | - | observation period
1032 | Proportion of condition_era records outside a valid observation period | Proportion | Number of records in condition_era outside a valid observation period | Number of condition_era records | - | - | observation period
1310 | Number of visit_detail records outside a valid observation period | - | - | - | - | - | observation period
1330 | Number of visit_detail records inside a valid observation period | - | - | - | - | - | observation period
1331 | Proportion of people with at least one visit_detail record outside a valid observation period | Proportion | Number of people with a visit_detail record outside a valid observation period | Number of people in visit_detail | - | - | observation period
1332 | Proportion of visit_detail records outside a valid observation period | Proportion | Number of records in visit_detail outside a valid observation period | Number of visit_detail records | - | - | observation period
1810 | Number of measurement records outside valid observation period | - | - | - | - | - | observation period
1830 | Number of visit_detail records inside a valid observation period | - | - | - | - | - | observation period
1831 | Proportion of people with at least one measurement record outside a valid observation period | Proportion | Number of people with a measurement record outside a valid observation period | Number of people in measurement | - | - | observation period
1832 | Proportion of measurement records outside a valid observation period | Proportion | Number of records in measurement outside a valid observation period | Number of measurement records | - | - | observation period
2110 | Number of device_exposure records outside valid observation period | - | - | - | - | - | observation period
2130 | Number of device_exposure records inside a valid observation period | - | - | - | - | - | observation period
2131 | Proportion of people with at least one device_exposure record outside a valid observation period | Proportion | Number of people with a device_exposure record outside a valid observation period | Number of people in device_exposure | - | - | observation period
2132 | Proportion of device_exposure records outside a valid observation period | Proportion | Number of records in device_exposure outside a valid observation period | Number of device_exposure records | - | - | observation period
Visit Occurrence
200 | Number of persons with at least one visit occurrence, by visit_concept_id | visit_concept_id | - | - | - | - | minimal; default; visit occurrence
201 | Number of visit occurrence records, by visit_concept_id | visit_concept_id | - | - | - | - | minimal; default; visit occurrence
202 | Number of persons by visit occurrence start month, by visit_concept_id | visit_concept_id | calendar month | - | - | - | default; visit occurrence
203 | Number of distinct visit occurrence concepts per person | - | - | - | - | - | default; visit occurrence
204 | Number of persons with at least one visit occurrence, by visit_concept_id by calendar year by gender by age decile | visit_concept_id | calendar year | gender_concept_id | age decile | - | default; visit occurrence
206 | Distribution of age by visit_concept_id | visit_concept_id | gender_concept_id | - | - | - | default; visit occurrence
207 | Number of visit records with invalid person_id | - | - | - | - | - | default; visit occurrence
209 | Number of visit records with invalid care_site_id | - | - | - | - | - | default; visit occurrence
211 | Number of visit records with end date < start date | - | - | - | - | - | visit occurrence
212 | Number of persons with at least one visit occurrence, by calendar year by gender by age decile | calendar year | gender_concept_id | age decile | - | - | default; visit occurrence
213 | Distribution of length of stay by visit_concept_id | visit_concept_id | - | - | - | - | default; visit occurrence
220 | Number of visit occurrence records by visit occurrence start month | calendar month | - | - | - | - | default; visit occurrence
221 | Number of persons by visit start year | calendar year | - | - | - | - | default; visit occurrence
225 | Number of visit_occurrence records by visit_source_concept_id | visit_source_concept_id | - | - | - | - | minimal; default; visit occurrence
226 | Number of records by domain by visit_concept_id | visit_concept_id | cdm_table_name | - | - | - | default; visit occurrence
Provider
300 | Number of providers | - | - | - | - | - | default; provider
301 | Number of providers by specialty concept_id | specialty_concept_id | - | - | - | - | default; provider
303 | Number of providers records by specialty_concept_id and visit_concept_id | specialty_concept_id | visit_concept_id | - | - | - | default; provider
325 | Number of provider records by specialty_source_concept_id | specialty_source_concept_id | - | - | - | - | default; provider
Condition Occurrence
400 | Number of persons with at least one condition occurrence, by condition_concept_id | condition_concept_id | - | - | - | - | minimal; default; condition occurrence
401 | Number of condition occurrence records, by condition_concept_id | condition_concept_id | - | - | - | - | minimal; default; condition occurrence
402 | Number of persons by condition occurrence start month, by condition_concept_id | condition_concept_id | calendar month | - | - | - | default; condition occurrence
403 | Number of distinct condition occurrence concepts per person | - | - | - | - | - | default; condition occurrence
404 | Number of persons with at least one condition occurrence, by condition_concept_id by calendar year by gender by age decile | condition_concept_id | calendar year | gender_concept_id | age decile | - | default; condition occurrence
405 | Number of condition occurrence records, by condition_concept_id by condition_type_concept_id | condition_concept_id | condition_type_concept_id | - | - | - | default; condition occurrence
406 | Distribution of age by condition_concept_id | condition_concept_id | gender_concept_id | - | - | - | default; condition occurrence
409 | Number of condition occurrence records with invalid person_id | - | - | - | - | - | condition occurrence
411 | Number of condition occurrence records with end date < start date | - | - | - | - | - | condition occurrence
412 | Number of condition occurrence records with invalid provider_id | - | - | - | - | - | condition occurrence
413 | Number of condition occurrence records with invalid visit_id | - | - | - | - | - | condition occurrence
414 | Number of condition occurrence records, by condition_status_concept_id | condition_status_concept_id | - | - | - | - | default; condition occurrence
415 | Number of condition occurrence records, by condition_type_concept_id | condition_type_concept_id | - | - | - | - | default; condition occurrence
416 | Number of condition occurrence records, by condition_status_concept_id, condition_type_concept_id | condition_status_concept_id | condition_type_concept_id | - | - | - | default; condition occurrence
420 | Number of condition occurrence records by condition occurrence start month | calendar month | - | - | - | - | default; condition occurrence
425 | Number of condition_occurrence records by condition_source_concept_id | condition_source_concept_id | - | - | - | - | minimal; default; condition occurrence
424 | Number of distinct people with co-occurring condition_occurrence condition_concept_id pairs | condition_concept_id | condition_concept_id | ranking | num_people | num_cases | condition occurrence
Death
500 | Number of persons with death, by cause_concept_id | cause_concept_id | - | - | - | - | default; death
501 | Number of records of death, by cause_concept_id | cause_concept_id | - | - | - | - | default; death
502 | Number of persons by death month | calendar month | - | - | - | - | default; death
504 | Number of persons with a death, by calendar year by gender by age decile | calendar year | gender_concept_id | age decile | - | - | default; death
505 | Number of death records, by death_type_concept_id | death_type_concept_id | - | - | - | - | default; death
506 | Distribution of age at death by gender | gender_concept_id | - | - | - | - | default; death
509 | Number of death records with invalid person_id | - | - | - | - | - | death
511 | Distribution of time from death to last condition | - | - | - | - | - | default; death
512 | Distribution of time from death to last drug | - | - | - | - | - | default; death
513 | Distribution of time from death to last visit | - | - | - | - | - | default; death
514 | Distribution of time from death to last procedure | - | - | - | - | - | default; death
515 | Distribution of time from death to last observation | - | - | - | - | - | default; death
525 | Number of death records by cause_source_concept_id | cause_source_concept_id | - | - | - | - | default; death
Procedure Occurrence
600 | Number of persons with at least one procedure occurrence, by procedure_concept_id | procedure_concept_id | - | - | - | - | minimal; default; procedure occurrence
601 | Number of procedure occurrence records, by procedure_concept_id | procedure_concept_id | - | - | - | - | minimal; default; procedure occurrence
602 | Number of persons by procedure occurrence start month, by procedure_concept_id | procedure_concept_id | calendar month | - | - | - | default; procedure occurrence
603 | Number of distinct procedure occurrence concepts per person | - | - | - | - | - | default; procedure occurrence
604 | Number of persons with at least one procedure occurrence, by procedure_concept_id by calendar year by gender by age decile | procedure_concept_id | calendar year | gender_concept_id | age decile | - | default; procedure occurrence
605 | Number of procedure occurrence records, by procedure_concept_id by procedure_type_concept_id | procedure_concept_id | procedure_type_concept_id | - | - | - | default; procedure occurrence
606 | Distribution of age by procedure_concept_id | procedure_concept_id | gender_concept_id | - | - | - | default; procedure occurrence
609 | Number of procedure occurrence records with invalid person_id | - | - | - | - | - | procedure occurrence
612 | Number of procedure occurrence records with invalid provider_id | - | - | - | - | - | procedure occurrence
613 | Number of procedure occurrence records with invalid visit_id | - | - | - | - | - | procedure occurrence
620 | Number of procedure occurrence records by procedure occurrence start month | calendar month | - | - | - | - | default; procedure occurrence
625 | Number of procedure_occurrence records by procedure_source_concept_id | procedure_source_concept_id | - | - | - | - | minimal; default; procedure occurrence
624 | Number of distinct people with co-occurring procedure_occurrence procedure_concept_id pairs | procedure_concept_id | procedure_concept_id | ranking | num_people | num_cases | procedure occurrence
691 | Percentage of total persons that have at least x procedures | procedure_concept_id | procedure_person | - | - | - | default; procedure occurrence
Drug Exposure
700 | Number of persons with at least one drug exposure, by drug_concept_id | drug_concept_id | - | - | - | - | minimal; default; drug exposure
701 | Number of drug exposure records, by drug_concept_id | drug_concept_id | - | - | - | - | minimal; default; drug exposure
702 | Number of persons by drug exposure start month, by drug_concept_id | drug_concept_id | calendar month | - | - | - | default; drug exposure
703 | Number of distinct drug exposure concepts per person | - | - | - | - | - | default; drug exposure
704 | Number of persons with at least one drug exposure, by drug_concept_id by calendar year by gender by age decile | drug_concept_id | calendar year | gender_concept_id | age decile | - | default; drug exposure
705 | Number of drug exposure records, by drug_concept_id by drug_type_concept_id | drug_concept_id | drug_type_concept_id | - | - | - | default; drug exposure
706 | Distribution of age by drug_concept_id | drug_concept_id | gender_concept_id | - | - | - | default; drug exposure
709 | Number of drug exposure records with invalid person_id | - | - | - | - | - | drug exposure
711 | Number of drug exposure records with end date < start date | - | - | - | - | - | drug exposure
712 | Number of drug exposure records with invalid provider_id | - | - | - | - | - | drug exposure
713 | Number of drug exposure records with invalid visit_id | - | - | - | - | - | drug exposure
715 | Distribution of days_supply by drug_concept_id | drug_concept_id | - | - | - | - | default; drug exposure
716 | Distribution of refills by drug_concept_id | drug_concept_id | - | - | - | - | default; drug exposure
717 | Distribution of quantity by drug_concept_id | drug_concept_id | - | - | - | - | default; drug exposure
720 | Number of drug exposure records by drug exposure start month | calendar month | - | - | - | - | default; drug exposure
725 | Number of drug_exposure records by drug_source_concept_id | drug_source_concept_id | - | - | - | - | minimal; default; drug exposure
724 | Number of distinct people with co-occurring drug_exposure drug_concept_id pairs | drug_concept_id | drug_concept_id | ranking | num_people | num_cases | drug exposure
791 | Percentage of total persons that have at least x drug exposures | drug_concept_id | drug_person | - | - | - | default; drug exposure
Observation
800 | Number of persons with at least one observation occurrence, by observation_concept_id | observation_concept_id | - | - | - | - | minimal; default; observation
801 | Number of observation occurrence records, by observation_concept_id | observation_concept_id | - | - | - | - | minimal; default; observation
802 | Number of persons by observation occurrence start month, by observation_concept_id | observation_concept_id | calendar month | - | - | - | default; observation
803 | Number of distinct observation occurrence concepts per person | - | - | - | - | - | default; observation
804 | Number of persons with at least one observation occurrence, by observation_concept_id by calendar year by gender by age decile | observation_concept_id | calendar year | gender_concept_id | age decile | - | default; observation
805 | Number of observation occurrence records, by observation_concept_id by observation_type_concept_id | observation_concept_id | observation_type_concept_id | - | - | - | default; observation
806 | Distribution of age by observation_concept_id | observation_concept_id | gender_concept_id | - | - | - | default; observation
807 | Number of observation occurrence records, by observation_concept_id and unit_concept_id | observation_concept_id | unit_concept_id | - | - | - | default; observation
809 | Number of observation records with invalid person_id | - | - | - | - | - | observation
812 | Number of observation records with invalid provider_id | - | - | - | - | - | observation
813 | Number of observation records with invalid visit_id | - | - | - | - | - | observation
814 | Number of observation records with no value (numeric, string, or concept) | - | - | - | - | - | default; observation
815 | Distribution of numeric values, by observation_concept_id and unit_concept_id | observation_concept_id | unit_concept_id | - | - | - | default; observation
820 | Number of observation records by observation start month | calendar month | - | - | - | - | default; observation
822 | Number of observation records, by observation_concept_id and value_as_concept_id | observation_concept_id | value_as_concept_id | - | - | - | default; observation
823 | Number of observation records, by observation_concept_id and qualifier_concept_id | observation_concept_id | qualifier_concept_id | - | - | - | default; observation
824 | Number of distinct people with co-occurring observation observation_concept_id pairs | observation_concept_id | observation_concept_id | ranking | num_people | num_cases | observation
825 | Number of observation records by observation_source_concept_id | observation_source_concept_id | - | - | - | - | minimal; default; observation
826 | Number of observation records by value_as_concept_id | value_as_concept_id | - | - | - | - | default; observation
827 | Number of observation records by unit_concept_id | unit_concept_id | - | - | - | - | default; observation
891 | Percentage of total persons that have at least x observations | observation_concept_id | observation_person | - | - | - | default; observation
Drug Era
900 | Number of persons with at least one drug era, by drug_concept_id | drug_concept_id | - | - | - | - | default; drug era
901 | Number of drug era records, by drug_concept_id | drug_concept_id | - | - | - | - | default; drug era
902 | Number of persons by drug era start month, by drug_concept_id | drug_concept_id | calendar month | - | - | - | default; drug era
903 | Number of distinct drug era concepts per person | - | - | - | - | - | default; drug era
904 | Number of persons with at least one drug era, by drug_concept_id by calendar year by gender by age decile | drug_concept_id | calendar year | gender_concept_id | age decile | - | default; drug era
906 | Distribution of age by drug_concept_id | drug_concept_id | gender_concept_id | - | - | - | default; drug era
907 | Distribution of drug era length, by drug_concept_id | drug_concept_id | - | - | - | - | default; drug era
908 | Number of drug eras without valid person | - | - | - | - | - | drug era
911 | Number of drug eras with end date < start date | - | - | - | - | - | drug era
920 | Number of drug era records by drug era start month | calendar month | - | - | - | - | default; drug era
Condition Era
1000 | Number of persons with at least one condition era, by condition_concept_id | condition_concept_id | - | - | - | - | default; condition era
1001 | Number of condition era records, by condition_concept_id | condition_concept_id | - | - | - | - | default; condition era
1002 | Number of persons by condition era start month, by condition_concept_id | condition_concept_id | calendar month | - | - | - | default; condition era
1003 | Number of distinct condition era concepts per person | - | - | - | - | - | default; condition era
1004 | Number of persons with at least one condition era, by condition_concept_id by calendar year by gender by age decile | condition_concept_id | calendar year | gender_concept_id | age decile | - | default; condition era
1006 | Distribution of age by condition_concept_id | condition_concept_id | gender_concept_id | - | - | - | default; condition era
1007 | Distribution of condition era length, by condition_concept_id | condition_concept_id | - | - | - | - | default; condition era
1008 | Number of condition eras without valid person | - | - | - | - | - | condition era
1011 | Number of condition eras with end date < start date | - | - | - | - | - | condition era
1020 | Number of condition era records by condition era start month | calendar month | - | - | - | - | default; condition era
Location
1100 | Number of persons by location 3-digit zip | 3-digit zip | - | - | - | - | default; location
1101 | Number of persons by location state | state | - | - | - | - | default; location
1102 | Number of care sites by location 3-digit zip | 3-digit zip | - | - | - | - | default; location
1103 | Number of care sites by location state | state | - | - | - | - | default; location
Care Site
1200 | Number of persons by place of service | place_of_service_concept_id | - | - | - | - | default; care site
1201 | Number of visits by place of service | place_of_service_concept_id | - | - | - | - | default; care site
1202 | Number of care sites by place of service | place_of_service_concept_id | - | - | - | - | default; care site
1203 | Number of visits by place of service discharge type | discharge_to_concept_id | - | - | - | - | default; care site
Visit Detail
1300 | Number of persons with at least one visit detail, by visit_detail_concept_id | visit_detail_concept_id | - | - | - | - | default; visit detail
1301 | Number of visit detail records, by visit_detail_concept_id | visit_detail_concept_id | - | - | - | - | default; visit detail
1302 | Number of persons by visit detail start month, by visit_detail_concept_id | visit_detail_concept_id | calendar month | - | - | - | default; visit detail
1303 | Number of distinct visit detail concepts per person | - | - | - | - | - | default; visit detail
1304 | Number of persons with at least one visit detail, by visit_detail_concept_id by calendar year by gender by age decile | visit_detail_concept_id | calendar year | gender_concept_id | age decile | - | default; visit detail
1306 | Distribution of age by visit_detail_concept_id | visit_detail_concept_id | gender_concept_id | - | - | - | default; visit detail
1307 | Number of visit records with invalid person_id | - | - | - | - | - | visit detail
1309 | Number of visit_detail records with invalid care_site_id | - | - | - | - | - | visit detail
1311 | Number of visit_detail records with end date < start date | - | - | - | - | - | visit detail
1312 | Number of persons with at least one visit detail, by calendar year by gender by age decile | calendar year | gender_concept_id | age decile | - | - | default; visit detail
1313 | Distribution of length of stay by visit_detail_concept_id | visit_detail_concept_id | - | - | - | - | default; visit detail
1320 | Number of visit detail records by visit detail start month | calendar month | - | - | - | - | default; visit detail
1321 | Number of persons by visit start year | calendar year | - | - | - | - | default; visit detail
1325 | Number of visit_detail records by visit_detail_source_concept_id | visit_detail_source_concept_id | - | - | - | - | default; visit detail
1326 | Number of records by domain by visit_detail_concept_id | visit_detail_source_concept_id | cdm_table_name | - | - | - | default; visit detail
Payer Plan Period
1406 | Length of payer plan (days) of first payer plan period by gender | gender_concept_id | - | - | - | - | default; payer plan period
1407 | Length of payer plan (days) of first payer plan period by age decile | age_decile | - | - | - | - | default; payer plan period
1408 | Number of persons by length of payer plan period, in 30d increments | payer plan period length 30d increments | - | - | - | - | default; payer plan period
1409 | Number of persons with continuous payer plan in each year | calendar year | - | - | - | - | default; payer plan period
1410 | Number of persons with continuous payer plan in each month | calendar month | - | - | - | - | default; payer plan period
1411 | Number of persons by payer plan period start month | calendar month | - | - | - | - | default; payer plan period
1412 | Number of persons by payer plan period end month | calendar month | - | - | - | - | default; payer plan period
1413 | Number of persons by number of payer plan periods | number of payer plan periods | - | - | - | - | default; payer plan period
1414 | Number of persons with payer plan period before year-of-birth | - | - | - | - | - | payer plan period
1415 | Number of persons with payer plan period end < payer plan period start | - | - | - | - | - | payer plan period
1425 | Number of payer_plan_period records by payer_source_concept_id | payer_source_concept_id | - | - | - | - | default; payer plan period
Cost
1502 | Distribution of paid_patient_copay, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1503 | Distribution of paid_patient_coinsurance, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1504 | Distribution of paid_patient_deductible, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1505 | Distribution of paid_by_payer, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1506 | Distribution of paid_by_primary, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1507 | Distribution of paid_by_patient, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1508 | Distribution of total_paid, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1509 | Distribution of paid_ingredient_cost, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1510 | Distribution of paid_dispensing_fee, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1511 | Distribution of total_cost, by drug_concept_id | drug_concept_id | - | - | - | - | cost
1602 | Distribution of paid_patient_copay, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1603 | Distribution of paid_patient_coinsurance, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1604 | Distribution of paid_patient_deductible, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1605 | Distribution of paid_by_payer, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1606 | Distribution of paid_by_primary, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1607 | Distribution of paid_by_patient, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1608 | Distribution of total paid, by procedure_concept_id | procedure_concept_id | - | - | - | - | cost
1610 | Number of records by revenue_code_concept_id | revenue_code_concept_id | - | - | - | - | cost
Measurement
1800 | Number of persons with at least one measurement occurrence, by measurement_concept_id | measurement_concept_id | - | - | - | - | minimal; default; measurement
1801 | Number of measurement occurrence records, by measurement_concept_id | measurement_concept_id | - | - | - | - | minimal; default; measurement
1802 | Number of persons by measurement occurrence start month, by measurement_concept_id | measurement_concept_id | calendar month | - | - | - | default; measurement
1803 | Number of distinct mesurement occurrence concepts per person | - | - | - | - | - | default; measurement
1804 | Number of persons with at least one mesurement occurrence, by measurement_concept_id by calendar year by gender by age decile | measurement_concept_id | calendar year | gender_concept_id | age decile | - | default; measurement
1805 | Number of measurement occurrence records, by measurement_concept_id by measurement_type_concept_id | measurement_concept_id | measurement_type_concept_id | - | - | - | default; measurement
1806 | Distribution of age by measurement_concept_id | measurement_concept_id | gender_concept_id | - | - | - | default; measurement
1807 | Number of measurement occurrence records, by measurement_concept_id and unit_concept_id | measurement_concept_id | unit_concept_id | - | - | - | default; measurement
1809 | Number of measurement records with invalid person_id | - | - | - | - | - | measurement
1811 | Number of measurement records with a valid value (with a mapped, non-null value_as_number) | - | - | - | - | - | default; measurement
1812 | Number of measurement records with invalid provider_id | - | - | - | - | - | measurement
1813 | Number of measurement records with invalid visit_id | - | - | - | - | - | measurement
1814 | Number of measurement records with no value (numeric, string, or concept) | - | - | - | - | - | default; measurement
1815 | Distribution of numeric values, by measurement_concept_id and unit_concept_id | measurement_concept_id | unit_concept_id | - | - | - | default; measurement
1816 | Distribution of low range, by measurement_concept_id and unit_concept_id | measurement_concept_id | unit_concept_id | - | - | - | default; measurement
1817 | Distribution of high range, by measurement_concept_id and unit_concept_id | measurement_concept_id | unit_concept_id | - | - | - | default; measurement
1818 | Number of measurement records below/within/above normal range, by measurement_concept_id and unit_concept_id | measurement_concept_id | unit_concept_id | measurement_range | - | - | default; measurement
1819 | Number of measurement records, by measurement_concept_id, with a valid value (with a mapped, non-null value_as_number) | measurement_concept_id | - | - | - | - | default; measurement
1820 | Number of measurement records by measurement start month | calendar month | - | - | - | - | default; measurement
1821 | Number of measurement records with no numeric value | - | - | - | - | - | default; measurement
1822 | Number of measurement records, by measurement_concept_id and value_as_concept_id | measurement_concept_id | value_as_concept_id | - | - | - | default; measurement
1823 | Number of measurement records, by measurement_concept_id and operator_concept_id | measurement_concept_id | operator_concept_id | - | - | - | default; measurement
1824 | Number of distinct people with co-occurring measurement measurement_concept_id pairs | measurement_concept_id | measurement_concept_id | ranking | num_people | num_cases | measurement
1825 | Number of measurement records by measurement_source_concept_id | measurement_source_concept_id | - | - | - | - | minimal; default; measurement
1826 | Number of measurement records by value_as_concept_id | value_as_concept_id | - | - | - | - | default; measurement
1827 | Number of measurement records by unit_concept_id | unit_concept_id | - | - | - | - | default; measurement
1833 | Proportion of measurement records inside a valid observation period and without a value | measurement_concept_id | Number of measurement records with no value for the given measurement_concept_id | proportion | - | - | measurement
1891 | Percentage of total persons that have at least x measurements | measurement_concept_id | measurement_person | - | - | - | default; measurement
Completeness
1900 | Source values mapped to concept_id 0 by table, by column, by source_value | table_name | column_name | source_value | - | - | default; completeness
2000 | Number of patients with at least 1 Dx and 1 Rx | - | - | - | - | - | default; completeness
2001 | Number of patients with at least 1 Dx and 1 Proc | - | - | - | - | - | default; completeness
2002 | Number of patients with at least 1 Meas, 1 Dx and 1 Rx | - | - | - | - | - | default; completeness
2003 | Number of patients with at least 1 Visit | - | - | - | - | - | default; completeness
2004 | Number of distinct patients that overlap between specific domains | domain_bit_string | proportion_of_overlap | - | - | - | default; completeness
2100 | Number of persons with at least one device exposure, by device_concept_id | device_concept_id | - | - | - | - | minimal; default; completeness
Device Exposure
2101 | Number of device exposure records, by device_concept_id | device_concept_id | - | - | - | - | minimal; default; device exposure
2102 | Number of persons by device records start month, by device_concept_id | device_concept_id | calendar month | - | - | - | default; device exposure
2104 | Number of persons with at least one device exposure, by device_concept_id by calendar year by gender by age decile | device_concept_id | calendar year | gender_concept_id | age decile | - | default; device exposure
2105 | Number of device exposure records, by device_concept_id by device_type_concept_id | device_concept_id | device_type_concept_id | - | - | - | default; device exposure
2106 | Distribution of age by device_concept_id | device_concept_id | gender_concept_id | - | - | - | default; device exposure
2120 | Number of device_exposure records by device_exposure start month | calendar month | - | - | - | - | default; device exposure
2125 | Number of device_exposure records by device_source_concept_id | device_source_concept_id | - | - | - | - | minimal; default; device exposure
2191 | Percentage of total persons that have at least x device exposures | device_concept_id | device_person | - | - | - | default; device exposure
Note
2200 | Number of persons with at least one note by note_type_concept_id | note_type_concept_id | - | - | - | - | default; note
2201 | Number of note records, by note_type_concept_id | note_type_concept_id | - | - | - | - | default; note

## 1.2 Run achilles analysis

You can create the Achilles tables using the function `buildAchillesTables()`. The achilles tables (`achilles_results`, `achilles_results_dist`, `achilles_analysis`) will be created in the write schema of your cdm object. You can choose what Achilles analyses to run using the `achillesId` argument providing a list of ids or a ‘group’ to identify several ids:

- `'all'` to run all the analyses.
- `'default'` to run the default Achilles analyses.
- `'minimal'` to run a subset of Achilles analyses that contains the concept counts of each table, used by packages like CodelistGenerator to find concept counts quickly.

Here you can see how we run achilles analyses in the ‘GiBleed’ synthetic dataset:

    library(omock)
    library(OmopConstructor)

    cdm <- mockCdmFromDataset(datasetName = "GiBleed", source = "duckdb")
    #> ℹ Loading bundled GiBleed tables from package data.
    #> ℹ Adding drug_strength table.
    #> ℹ Creating local <cdm_reference> object.
    #> ℹ Inserting <cdm_reference> into duckdb.
    cdm
    #>
    #> ── # OMOP CDM reference (duckdb) of GiBleed ────────────────────────────────────
    #> • omop tables: care_site, cdm_source, concept, concept_ancestor, concept_class,
    #> concept_relationship, concept_synonym, condition_era, condition_occurrence,
    #> cost, death, device_exposure, domain, dose_era, drug_era, drug_exposure,
    #> drug_strength, fact_relationship, location, measurement, metadata, note,
    #> note_nlp, observation, observation_period, payer_plan_period, person,
    #> procedure_occurrence, provider, relationship, source_to_concept_map, specimen,
    #> visit_detail, visit_occurrence, vocabulary
    #> • cohort tables: -
    #> • achilles tables: -
    #> • other tables: -

    cdm <- buildAchillesTables(cdm = cdm, achillesId = "minimal")
    #> ℹ Creating empty achilles_analysis table.
    #> ℹ Creating empty achilles_results table.
    #> ℹ Creating empty achilles_results_dist table.
    #> ℹ  1 of 21: Number of persons with at least one visit occurrence, by
    #>   visit_concept_id (achilles ID = 200).
    #> ℹ  2 of 21: Number of visit occurrence records, by visit_concept_id (achilles
    #>   ID = 201).
    #> ℹ  3 of 21: Number of visit_occurrence records by visit_source_concept_id
    #>   (achilles ID = 225).
    #> ℹ  4 of 21: Number of persons with at least one condition occurrence, by
    #>   condition_concept_id (achilles ID = 400).
    #> ℹ  5 of 21: Number of condition occurrence records, by condition_concept_id
    #>   (achilles ID = 401).
    #> ℹ  6 of 21: Number of condition_occurrence records by
    #>   condition_source_concept_id (achilles ID = 425).
    #> ℹ  7 of 21: Number of persons with at least one procedure occurrence, by
    #>   procedure_concept_id (achilles ID = 600).
    #> ℹ  8 of 21: Number of procedure occurrence records, by procedure_concept_id
    #>   (achilles ID = 601).
    #> ℹ  9 of 21: Number of procedure_occurrence records by
    #>   procedure_source_concept_id (achilles ID = 625).
    #> ℹ 10 of 21: Number of persons with at least one drug exposure, by
    #>   drug_concept_id (achilles ID = 700).
    #> ℹ 11 of 21: Number of drug exposure records, by drug_concept_id (achilles ID =
    #>   701).
    #> ℹ 12 of 21: Number of drug_exposure records by drug_source_concept_id (achilles
    #>   ID = 725).
    #> ℹ 13 of 21: Number of persons with at least one observation occurrence, by
    #>   observation_concept_id (achilles ID = 800).
    #> ℹ 14 of 21: Number of observation occurrence records, by observation_concept_id
    #>   (achilles ID = 801).
    #> ℹ 15 of 21: Number of observation records by observation_source_concept_id
    #>   (achilles ID = 825).
    #> ℹ 16 of 21: Number of persons with at least one measurement occurrence, by
    #>   measurement_concept_id (achilles ID = 1800).
    #> ℹ 17 of 21: Number of measurement occurrence records, by measurement_concept_id
    #>   (achilles ID = 1801).
    #> ℹ 18 of 21: Number of measurement records by measurement_source_concept_id
    #>   (achilles ID = 1825).
    #> ℹ 19 of 21: Number of persons with at least one device exposure, by
    #>   device_concept_id (achilles ID = 2100).
    #> ℹ 20 of 21: Number of device exposure records, by device_concept_id (achilles
    #>   ID = 2101).
    #> ℹ 21 of 21: Number of device_exposure records by device_source_concept_id
    #>   (achilles ID = 2125).
    cdm
    #>
    #> ── # OMOP CDM reference (duckdb) of GiBleed ────────────────────────────────────
    #> • omop tables: care_site, cdm_source, concept, concept_ancestor, concept_class,
    #> concept_relationship, concept_synonym, condition_era, condition_occurrence,
    #> cost, death, device_exposure, domain, dose_era, drug_era, drug_exposure,
    #> drug_strength, fact_relationship, location, measurement, metadata, note,
    #> note_nlp, observation, observation_period, payer_plan_period, person,
    #> procedure_occurrence, provider, relationship, source_to_concept_map, specimen,
    #> visit_detail, visit_occurrence, vocabulary
    #> • cohort tables: -
    #> • achilles tables: achilles_analysis, achilles_results, achilles_results_dist
    #> • other tables: -

    cdm$achilles_results
    #> # Source:   table<results.test_achilles_results> [?? x 7]
    #> # Database: DuckDB 1.5.0 [root@Darwin 25.3.0:R 4.4.1//private/var/folders/pl/k11lm9710hlgl02nvzx4z9wr0000gp/T/RtmpoRvJJC/file12699412d0e33.duckdb]
    #>    analysis_id stratum_1 stratum_2 stratum_3 stratum_4 stratum_5 count_value
    #>          <int> <chr>     <chr>     <chr>     <chr>     <chr>           <int>
    #>  1         200 9201      <NA>      <NA>      <NA>      <NA>              890
    #>  2         201 9201      <NA>      <NA>      <NA>      <NA>             1037
    #>  3         225 0         <NA>      <NA>      <NA>      <NA>             1037
    #>  4         400 4027663   <NA>      <NA>      <NA>      <NA>              802
    #>  5         400 372328    <NA>      <NA>      <NA>      <NA>             2025
    #>  6         400 4310024   <NA>      <NA>      <NA>      <NA>              388
    #>  7         400 4278672   <NA>      <NA>      <NA>      <NA>              510
    #>  8         400 40479422  <NA>      <NA>      <NA>      <NA>              107
    #>  9         400 140673    <NA>      <NA>      <NA>      <NA>               31
    #> 10         400 4280726   <NA>      <NA>      <NA>      <NA>               25
    #> # ℹ more rows

## 1.3 Differences with the Achilles R package

`OmopConstructor::buildAchillesTables()` and `OHDSI/Achilles::achilles()` both populate the same three output tables (`achilles_results`, `achilles_results_dist`, `achilles_analysis`) against an OMOP CDM database, but they follow fundamentally different design principles:

### 1.3.1 Execution Model

The most fundamental difference is where computation happens.

OHDSI/Achilles is SQL-first. Every analysis is a parameterised SQL template rendered by `SqlRender` and executed via `DatabaseConnector` (JDBC). R is purely an orchestrator — no CDM data ever enters R memory. This gives Achilles broad dialect coverage (PostgreSQL, SQL Server, Oracle, BigQuery, Redshift, Spark, DuckDB) and keeps performance independent of R’s memory constraints.

OmopConstructor is R-first. Analyses are expressed as a small vocabulary of configurable operations (`count`, `distribution`, `proportion`, `coocurrent`, `overlap`, `conceptDistribution`) executed through `dplyr`/`dbplyr` against a `cdm_reference` object. The database backend is abstracted by `CDMConnector`/`DBI`, so no Java runtime is required.

### 1.3.2 Small Cell Suppression

OHDSI/Achilles provides a `smallCellCount` parameter. Any result with a count below the specified threshold is suppressed before being written to `achilles_results`, supporting privacy-preserving characterisation out of the box.

OmopConstructor has no equivalent parameter. Suppression is not implemented at the `buildAchillesTables()` layer as results don’t leave the database. When retrieving data from the achilles tables tha packages apply their own min cell count suppression that cna be customised at every step.

### 1.3.3 Observation Period Consistency

In OHDSI/Achilles, the observation period filter is applied inconsistently across analyses. Some analyses count records or persons only within a valid observation period; others count regardless of observation period. This inconsistency has been reported in several open issues.

OmopConstructor makes the observation period filter an explicit, uniform operation (`observation start yes/no`) in the analysis configuration. Every analysis that involves an observation period check applies it in the same way, and analyses that do not require it simply omit the operation. This produces consistent behaviour across the full catalogue.