Skip to content

Commit b8163e4

Browse files
BFD-4190: Refactor Coverage endpoints and add additional test cases (#2779)
Co-authored-by: MahiFentaye <168698136+MahiFentaye@users.noreply.github.com>
1 parent 0b88f42 commit b8163e4

67 files changed

Lines changed: 2702 additions & 499 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/bfd-model/bfd-model-idr/sample-data/generator/generator_util.py

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -112,22 +112,22 @@ def gen_bene_sk(self):
112112
if bene_sk in self.used_bene_sk:
113113
return self.gen_bene_sk()
114114
return bene_sk
115-
115+
116116
def generate_bene_xref(self, new_bene_sk, old_bene_sk):
117117

118118
bene_hicn_num = str(random.randint(1000, 100000000)) + random.choice(string.ascii_letters)
119119

120120
#10% chance for invalid xref.
121121
kill_cred_cd = 1 if random.randint(1, 10) == 1 else 2
122-
122+
123123
efctv_ts = self.fake.date_time_between_dates(
124124
datetime.date(year=2017, month=5, day=20),
125125
datetime.datetime.now() - datetime.timedelta(days=1)
126126
)
127127
src_rec_ctre_ts = self.fake.date_time_between_dates(efctv_ts, datetime.datetime.now() - datetime.timedelta(days=1))
128128
insrt_ts = self.fake.date_time_between_dates(efctv_ts, datetime.datetime.now() - datetime.timedelta(days=1))
129129
updt_ts = self.fake.date_time_between_dates(insrt_ts, datetime.datetime.now() - datetime.timedelta(days=1))
130-
130+
131131
xref_row = {
132132
"BENE_SK": str(new_bene_sk),
133133
"BENE_XREF_SK": str(old_bene_sk),
@@ -210,13 +210,13 @@ def handle_mbis(self, patient, num_mbis, custom_first_mbi=None):
210210
if previous_mbi and previous_mbi != current_mbi:
211211
historical_patient = copy.deepcopy(patient)
212212
historical_patient["BENE_MBI_ID"] = previous_mbi
213-
historical_patient["IDR_LTST_TRANS_FLG"] = "N"
214-
213+
historical_patient["IDR_LTST_TRANS_FLG"] = "N"
214+
215215
self.set_timestamps(historical_patient, obslt_dt)
216216
historical_patient["IDR_TRANS_OBSLT_TS"] = str(obslt_dt) + "T00:00:00.000000+0000"
217217
self.bene_hstry_table.append(historical_patient)
218218

219-
219+
220220
previous_obslt_dt = obslt_dt # Store for next iteration
221221
else:
222222
# For the last MBI, no obsolescence date
@@ -230,13 +230,27 @@ def handle_mbis(self, patient, num_mbis, custom_first_mbi=None):
230230
patient["BENE_MBI_ID"] = current_mbi
231231

232232
def generate_coverages(self, patient):
233+
parts = random.choices([['A'], ['B'], ['A', 'B'], []], weights=[0.2, 0.2, 0.5, 0.1])[0]
234+
include_tp = random.random() > 0.2
235+
expired = random.random() < 0.2
236+
future = random.random() < 0.2
237+
self._generate_coverages(patient, coverage_parts=parts, include_tp=include_tp, expired=expired, future=future)
238+
239+
def _generate_coverages(self, patient, coverage_parts, include_tp, expired, future):
240+
now = datetime.date.today()
241+
if expired:
242+
medicare_start_date = now - datetime.timedelta(days=730)
243+
medicare_end_date = now - datetime.timedelta(days=365)
244+
elif future:
245+
medicare_start_date = now + datetime.timedelta(days=365)
246+
medicare_end_date = now + datetime.timedelta(days=730)
247+
else:
248+
medicare_start_date = parse(self.mbi_table[patient['BENE_MBI_ID']]['BENE_MBI_EFCTV_DT']).date()
249+
medicare_end_date = datetime.date(9999, 12, 31)
233250
mdcr_stus_cd = '~'
234251
while(mdcr_stus_cd in ('0','~','00')):
235252
mdcr_stus_cd = random.choice(self.code_systems['BENE_MDCR_STUS_CD'])
236253

237-
medicare_start_date = self.mbi_table[patient['BENE_MBI_ID']]['BENE_MBI_EFCTV_DT']
238-
medicare_end_date = '9999-12-31'
239-
#STUS
240254
stus_row = {"BENE_SK":patient['BENE_SK'],
241255
'IDR_LTST_TRANS_FLG':'Y',
242256
'BENE_MDCR_STUS_CD': mdcr_stus_cd,
@@ -263,8 +277,8 @@ def generate_coverages(self, patient):
263277
'BENE_RNG_END_DT': medicare_end_date
264278
}
265279
self.mdcr_rsn.append(rsn_row)
266-
for coverage_type in ['A','B']:
267-
280+
281+
for coverage_type in coverage_parts:
268282
#ENTLMT
269283
entlmt_row = {"BENE_SK":patient['BENE_SK'],
270284
'IDR_LTST_TRANS_FLG':'Y',
@@ -280,7 +294,7 @@ def generate_coverages(self, patient):
280294
}
281295
self.mdcr_entlmt.append(entlmt_row)
282296
#TP
283-
if(random.randint(0,10)==10):
297+
if include_tp:
284298
tp_row = {"BENE_SK":patient['BENE_SK'],
285299
'IDR_LTST_TRANS_FLG':'Y',
286300
'BENE_TP_TYPE_CD': coverage_type,
@@ -464,27 +478,25 @@ def save_output_files(self):
464478
df.to_csv("out/SYNTHETIC_BENE_MDCR_ENTLMT.csv", index=False)
465479
df = pd.json_normalize(self.mdcr_tp)
466480
df.to_csv("out/SYNTHETIC_BENE_TP.csv", index=False)
467-
481+
468482
df = pd.json_normalize(self.mdcr_rsn)
469483
df.to_csv("out/SYNTHETIC_BENE_MDCR_ENTLMT_RSN.csv", index=False)
470-
484+
485+
df = pd.json_normalize(self.bene_xref_table)
486+
df.to_csv("out/SYNTHETIC_BENE_XREF.csv", index=False)
487+
471488
df = pd.json_normalize(self.bene_cmbnd_dual_mdcr)
472-
if(df.size>0):
473-
df.to_csv("out/SYNTHETIC_BENE_CMBND_DUAL_MDCR.csv", index=False)
489+
df.to_csv("out/SYNTHETIC_BENE_CMBND_DUAL_MDCR.csv", index=False)
474490

475491
df = pd.json_normalize(self.bene_xref_table)
476-
if(df.size>0):
477-
df.to_csv("out/SYNTHETIC_BENE_XREF.csv", index=False)
492+
df.to_csv("out/SYNTHETIC_BENE_XREF.csv", index=False)
478493

479494
# Save new synthetic data tables
480495
df = pd.json_normalize(self.bene_lis)
481-
if(df.size>0):
482-
df.to_csv("out/SYNTHETIC_BENE_LIS.csv", index=False)
496+
df.to_csv("out/SYNTHETIC_BENE_LIS.csv", index=False)
483497

484498
df = pd.json_normalize(self.bene_mapd_enrlmt_rx)
485-
if(df.size>0):
486-
df.to_csv("out/SYNTHETIC_BENE_MAPD_ENRLMT_RX.csv", index=False)
499+
df.to_csv("out/SYNTHETIC_BENE_MAPD_ENRLMT_RX.csv", index=False)
487500

488501
df = pd.json_normalize(self.bene_mapd_enrlmt)
489-
if(df.size>0):
490-
df.to_csv("out/SYNTHETIC_BENE_MAPD_ENRLMT.csv", index=False)
502+
df.to_csv("out/SYNTHETIC_BENE_MAPD_ENRLMT.csv", index=False)

apps/bfd-model/bfd-model-idr/sample-data/generator/patient_generator.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,23 @@
102102

103103
# Handle sex code
104104
if pd.notna(row.get("BENE_SEX_CD")):
105-
patient["BENE_SEX_CD"] = str(int(row["BENE_SEX_CD"]))
105+
# Safely handle non-numeric sex codes
106+
sex_code = str(row["BENE_SEX_CD"])
107+
if sex_code.isdigit():
108+
patient["BENE_SEX_CD"] = str(int(sex_code))
109+
else:
110+
patient["BENE_SEX_CD"] = sex_code
106111
else:
107112
patient["BENE_SEX_CD"] = str(random.randint(1, 2))
108113

109114
# Handle race code
110115
if pd.notna(row.get("BENE_RACE_CD")):
111-
patient["BENE_RACE_CD"] = str(int(row["BENE_RACE_CD"]))
116+
# Safely handle non-numeric race codes to prevent ValueError
117+
race_code = str(row["BENE_RACE_CD"])
118+
if race_code.isdigit():
119+
patient["BENE_RACE_CD"] = str(int(race_code))
120+
else:
121+
patient["BENE_RACE_CD"] = race_code
112122
else:
113123
patient["BENE_RACE_CD"] = random.choice(
114124
["~", "0", "1", "2", "3", "4", "5", "6", "7", "8"]

apps/bfd-pipeline/bfd-pipeline-idr/bfd.sql

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,33 @@ HAVING COUNT(DISTINCT bene_xref_efctv_sk) > 1;
420420
-- required to refresh view with CONCURRENTLY
421421
CREATE UNIQUE INDEX ON idr.overshare_mbis (bene_mbi_id);
422422

423+
CREATE VIEW idr.valid_beneficiary AS
424+
SELECT *
425+
FROM idr.beneficiary b
426+
WHERE NOT EXISTS(SELECT 1 FROM idr.overshare_mbis om WHERE om.bene_mbi_id = b.bene_mbi_id);
427+
428+
-- we use NOW() - 12 hours to represent "anywhere in the world" time
429+
430+
CREATE VIEW idr.beneficiary_status_current AS
431+
SELECT * FROM idr.beneficiary_status
432+
WHERE idr_ltst_trans_flg = 'Y' AND mdcr_stus_bgn_dt <= NOW() - INTERVAL '12 hours' and mdcr_stus_end_dt >= NOW() - INTERVAL '12 hours';
433+
434+
-- entitlement data is a bit weird because there can be multiple active records with no discernable difference
435+
-- when this happens, we take the one with the more recent begin date
436+
CREATE VIEW idr.beneficiary_entitlement_current AS
437+
SELECT DISTINCT ON (bene_sk, bene_mdcr_entlmt_type_cd, bene_rng_bgn_dt) *
438+
FROM idr.beneficiary_entitlement
439+
WHERE idr_ltst_trans_flg = 'Y' AND bene_rng_bgn_dt <= NOW() - INTERVAL '12 hours' AND bene_rng_end_dt >= NOW() - INTERVAL '12 hours'
440+
ORDER BY bene_sk, bene_mdcr_entlmt_type_cd, bene_rng_bgn_dt DESC;
441+
442+
CREATE VIEW idr.beneficiary_third_party_current AS
443+
SELECT * FROM idr.beneficiary_third_party
444+
WHERE idr_ltst_trans_flg = 'Y' AND bene_rng_bgn_dt <= NOW() - INTERVAL '12 hours' AND bene_rng_end_dt >= NOW() - INTERVAL '12 hours';
445+
446+
CREATE VIEW idr.beneficiary_entitlement_reason_current AS
447+
SELECT * FROM idr.beneficiary_entitlement_reason
448+
WHERE idr_ltst_trans_flg = 'Y' AND bene_rng_bgn_dt <= NOW() - INTERVAL '12 hours' AND bene_rng_end_dt >= NOW() - INTERVAL '12 hours';
449+
423450
CREATE OR REPLACE FUNCTION idr.refresh_overshare_mbis()
424451
RETURNS VOID AS $$
425452
DECLARE comment_sql TEXT;

apps/bfd-pipeline/bfd-pipeline-idr/load_synthetic.py

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -34,45 +34,54 @@
3434

3535
def load_from_csv(conn: psycopg.Connection, src_folder: str) -> None:
3636
for table in tables:
37-
file = f"{src_folder}/{table['csv_name']}"
38-
try:
39-
with Path(file).open() as f:
40-
reader = csv.DictReader(f)
41-
sql_table = table["table"]
42-
full_table = f"cms_vdm_view_mdcr_prd.{sql_table}"
43-
with conn.cursor() as cur:
44-
# fetch the list of columns from the database and filter them out
45-
# so we don't get errors trying to insert extra columns
46-
db_columns = cur.execute(
47-
f"""
48-
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
49-
WHERE table_name = '{sql_table}'
50-
""" # type: ignore
51-
)
52-
db_columns = [typing.cast(str, col[0]).lower() for col in db_columns]
37+
with conn.cursor() as cur:
38+
# Clear out any previous data
39+
sql_table = table["table"]
40+
full_table = f"cms_vdm_view_mdcr_prd.{sql_table}"
41+
cur.execute(f"TRUNCATE TABLE {full_table}") # type: ignore
42+
file = table["csv_name"]
43+
_load_file(cur, src_folder, file, sql_table, full_table)
44+
conn.commit()
5345

54-
cols = [
55-
col
56-
for col in typing.cast(typing.Iterable[str], reader.fieldnames)
57-
if col.lower().strip() in db_columns
58-
]
59-
# Clear out any previous data
60-
cur.execute(f"TRUNCATE TABLE {full_table}") # type: ignore
61-
cols_str = ",".join(cols)
62-
with cur.copy(
63-
f"COPY {full_table} ({cols_str}) FROM STDIN" # type: ignore
64-
) as copy:
65-
for row in reader:
66-
copy.write_row([row[c] if row[c] else None for c in cols])
67-
conn.commit()
68-
except OSError as e:
69-
print(f"Unable to load file, skipping: {e}")
46+
47+
def _load_file(
48+
cur: psycopg.Cursor, src_folder: str, file: str, sql_table: str, full_table: str
49+
) -> None:
50+
for match in Path(src_folder).glob(f"./**/{file}"):
51+
print(f"loading {match}")
52+
with match.open() as f:
53+
reader = csv.DictReader(f)
54+
# skip empty files
55+
if reader.fieldnames is None:
56+
continue
57+
58+
# fetch the list of columns from the database and filter them out
59+
# so we don't get errors trying to insert extra columns
60+
db_columns = cur.execute(
61+
f"""
62+
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
63+
WHERE table_name = '{sql_table}'
64+
""" # type: ignore
65+
)
66+
db_columns = [typing.cast(str, col[0]).lower() for col in db_columns]
67+
68+
cols = [
69+
col
70+
for col in typing.cast(typing.Iterable[str], reader.fieldnames)
71+
if col.lower().strip() in db_columns
72+
]
73+
cols_str = ",".join(cols)
74+
with cur.copy(
75+
f"COPY {full_table} ({cols_str}) FROM STDIN" # type: ignore
76+
) as copy:
77+
for row in reader:
78+
copy.write_row([row[c] if row[c] else None for c in cols])
7079

7180

7281
if __name__ == "__main__":
7382
baseDir = (
7483
sys.argv[1]
75-
if len(sys.argv) > 1
84+
if len(sys.argv) > 1 and sys.argv[1] != ""
7685
else "../../bfd-model/bfd-model-idr/sample-data/generator/out"
7786
)
7887
load_from_csv(

apps/bfd-pipeline/bfd-pipeline-idr/run-db.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ docker exec -u postgres bfd-idr-db psql idr bfd -f docker-entrypoint-initdb.d/mo
4141
docker exec -u postgres bfd-idr-db psql idr bfd -f docker-entrypoint-initdb.d/bfd.sql
4242

4343
uv sync
44-
BFD_DB_ENDPOINT=localhost BFD_DB_USERNAME=bfd BFD_DB_PASSWORD=InsecureLocalDev uv run python ./load_synthetic.py
44+
BFD_DB_ENDPOINT=localhost BFD_DB_USERNAME=bfd BFD_DB_PASSWORD=InsecureLocalDev uv run python ./load_synthetic.py "$1"
4545

4646
echo
4747
echo Schema created successfully.
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
BENE_SK,BENE_XREF_EFCTV_SK,BENE_MBI_ID,BENE_LAST_NAME,BENE_1ST_NAME,BENE_MIDL_NAME,BENE_BRTH_DT,BENE_DEATH_DT,BENE_VRFY_DEATH_DAY_SW,BENE_SEX_CD,BENE_RACE_CD,BENE_LINE_1_ADR,BENE_LINE_2_ADR,BENE_LINE_3_ADR,BENE_LINE_4_ADR,BENE_LINE_5_ADR,BENE_LINE_6_ADR,GEO_ZIP_PLC_NAME,GEO_ZIP5_CD,GEO_USPS_STATE_CD,CNTCT_LANG_CD,IDR_TRANS_EFCTV_TS,IDR_INSRT_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,,IDR_LTST_TRANS_FLG
2-
181968400,405764107,8Z73WV0QC20,Erdapfel,Bluey,Caroline,1967-03-19,,~,2,2,1970 S University Blvd,,,,,,Mobile,36609,AL,SPA,2023-08-15 15:47:22.203391,2024-01-12 02:41:38.810329,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
3-
405764107,405764107,8Z73WV0QC20,Erdapfel,Bluey,Caroline,1967-03-19,,~,2,2,1970 S University Blvd,,,,,,Mobile,36609,AL,SPA,2024-03-30 06:52:39.094875,2024-05-28 20:14:30.616999,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
4-
517782585,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
5-
848484848,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
6-
121212121,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
7-
878934873,178083966,9OJ2CG2UC85,Jones,Abby,,1922-04-01,,~,1,6,2904 61st,,,,,,Galveston,77551,TX,~,2024-06-04 18:32:49.034231,2024-12-10 12:27:50.972975,9999-12-31T00:00:00.000000+0000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
8-
792872340,178083966,9OJ2CG2UC85,Jones,Abby,,1922-04-01,,~,1,6,2904 61st,,,,,,Galveston,77551,TX,~,2024-06-04 18:32:49.034231,2024-12-10 12:27:50.972975,9999-12-31T00:00:00.000000+0000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,N
9-
178083966,178083966,9OJ2CG2UC85,Jones,Abby,,1922-04-01,,~,1,6,2904 61st,,,,,,Galveston,77551,TX,~,2023-09-12 01:53:35.572554,2025-04-26 14:53:59.117910,9999-12-31T00:00:00.000000+0000,9999-12-31 00:00:00.000000,2017-10-16T00:00:00.000000+0000,Y
1+
BENE_SK,BENE_XREF_EFCTV_SK,BENE_MBI_ID,BENE_LAST_NAME,BENE_1ST_NAME,BENE_MIDL_NAME,BENE_BRTH_DT,BENE_DEATH_DT,BENE_VRFY_DEATH_DAY_SW,BENE_SEX_CD,BENE_RACE_CD,BENE_LINE_1_ADR,BENE_LINE_2_ADR,BENE_LINE_3_ADR,BENE_LINE_4_ADR,BENE_LINE_5_ADR,BENE_LINE_6_ADR,GEO_ZIP_PLC_NAME,GEO_ZIP5_CD,GEO_USPS_STATE_CD,CNTCT_LANG_CD,IDR_TRANS_EFCTV_TS,IDR_INSRT_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,IDR_LTST_TRANS_FLG
2+
517782585,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,Y
3+
848484848,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,Y
4+
121212121,517782585,2B19C89AA35,Heeler,Alex,Joey,1959-03-14,,~,1,4,14152 ND-27,,,,,,Lisbon,58054,ND,~,2024-06-12 01:06:49.588129,2024-11-05 18:51:29.174693,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000,Y
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
BENE_MBI_ID,BENE_MBI_EFCTV_DT,BENE_MBI_OBSLT_DT,IDR_TRANS_EFCTV_TS,IDR_INSRT_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS
22
8Z73WV0QC20,2020-04-21,2020-05-25,2022-07-10 09:11:52.588300,2023-05-07 17:37:59.821448,9999-12-31 00:00:00.000000,9999-12-31 00:00:00.000000
3+
6ON6NC8FE68,2018-05-26,,2025-05-01 00:54:57.522606,2025-06-19 07:52:45.281868,2025-07-26 01:27:07.535318,9999-12-31T00:00:00.000000+0000
4+
5OK1QQ8NJ30,2020-08-28,,2023-01-18 01:20:27.014616,2023-03-17 16:42:55.020162,2025-01-11 00:25:20.362510,9999-12-31T00:00:00.000000+0000
5+
7LG8FN9CN12,2018-06-27,2019-12-02,2022-04-06 14:13:33.515499,2022-08-24 19:31:44.287376,2022-09-12 15:42:33.371732,9999-12-31T00:00:00.000000+0000
6+
3I21NG6VA25,2019-12-03,,2021-11-09 15:36:32.736388,2022-03-21 15:16:04.746919,2023-09-25 02:13:00.511983,9999-12-31T00:00:00.000000+0000
7+
1L26RW8YW56,2019-11-23,,2024-11-02 04:41:30.464743,2025-08-03 04:46:22.915689,2025-08-03 06:36:16.375394,9999-12-31T00:00:00.000000+0000
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
BENE_SK,BENE_MDCR_ENTLMT_TYPE_CD,BENE_MDCR_ENRLMT_RSN_CD,BENE_MDCR_ENTLMT_STUS_CD,IDR_TRANS_EFCTV_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,BENE_RNG_BGN_DT,BENE_RNG_END_DT,idr_ltst_trans_flg,idr_insrt_ts
1+
BENE_SK,BENE_MDCR_ENTLMT_TYPE_CD,BENE_MDCR_ENRLMT_RSN_CD,BENE_MDCR_ENTLMT_STUS_CD,IDR_TRANS_EFCTV_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,BENE_RNG_BGN_DT,BENE_RNG_END_DT,IDR_LTST_TRANS_FLG,IDR_INSRT_TS
22
181968400,A,P,Y,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,2024-01-01T00:00:00.000000+0000,2099-12-31T00:00:00.000000+0000,Y,2024-01-01
3-
405764107,A,P,Y,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,2024-01-01T00:00:00.000000+0000,2099-12-31T00:00:00.000000+0000,Y,2024-01-01
4-
405764107,B,P,Y,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,2024-01-01T00:00:00.000000+0000,2099-12-31T00:00:00.000000+0000,Y,2024-01-01
3+
517782585,A,A,Y,2018-02-21T00:00:00.000000+0003,2022-06-16T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0004,2022-06-16T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,Y,2024-01-04
4+
517782585,B,B,Y,2018-02-21T00:00:00.000000+0004,2022-06-16T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0005,2022-06-16T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,Y,2024-01-05
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
BENE_SK,BENE_RNG_BGN_DT,BENE_RNG_END_DT,IDR_TRANS_EFCTV_TS,IDR_INSRT_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,BENE_MDCR_ENTLMT_RSN_CD,idr_ltst_trans_flg
1+
BENE_SK,BENE_RNG_BGN_DT,BENE_RNG_END_DT,IDR_TRANS_EFCTV_TS,IDR_INSRT_TS,IDR_UPDT_TS,IDR_TRANS_OBSLT_TS,BENE_MDCR_ENTLMT_RSN_CD,IDR_LTST_TRANS_FLG
22
181968400,2024-01-01T00:00:00.000000+0000,2099-12-31T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,0,Y
3-
405764107,2024-01-01T00:00:00.000000+0000,2099-12-31T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,2018-02-21T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,0,Y
3+
517782585,2024-01-01T00:00:00.000000+0002,2022-06-16T00:00:00.000000+0000,2022-06-16T00:00:00.000000+0000,2022-06-16T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0002,1,Y
4+
289169129,2024-01-01T00:00:00.000000+0006,2022-03-03T00:00:00.000000+0000,2022-03-03T00:00:00.000000+0000,2022-03-03T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0000,9999-12-31T00:00:00.000000+0006,2,Y

0 commit comments

Comments
 (0)