code wiki / (root) / nx_medbill_civic_gate.nx

nx_medbill_civic_gate.nx source

↩ module page · 115 lines · 6282 B

1// nx_medbill_civic_gate.nx -- ADV5 GATE: issue->channel routing never guesses; expected-response 2// windows come from the DATA pack; the case ledger round-trips and updates on the sovereign seg-store; 3// follow-up dates ride the shared leap-safe calendar; the MOVEMENT verdict is computed mechanically 4// (MOVING / PENDING / OVERDUE-UNRESPONSIVE / CLOSED-NO-ACTION); letters carry their load-bearing content 5// and stay NEUTRAL (the representative letter names no party and asks for a written, trackable answer). 6// Hermetic store under /tmp. Exits 0 iff ALL pass. license_tier: ORIGINAL 7import "nx_syscalls.nx" 8import "nx_medbill_codes.nx" 9import "nx_medbill_civic.nx" 10 11func g_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 12func g_putn(v: i64) -> i64 { 13 if v == 0 { sys_write(1, "0" as *u8, 1); return 0 } 14 var m: i64 = v 15 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 16 let d: *u8 = sys_mmap(24) 17 var k: i64 = 0 18 while m > 0 { d[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 19 let r: *u8 = sys_mmap(24) 20 var i: i64 = 0 21 while k > 0 { k = k - 1; r[i] = d[k]; i = i + 1 } 22 sys_write(1, r, i) 23 return 0 24} 25func chk(name: *u8, got: i64, want: i64, st: *i64) -> i64 { 26 if got == want { st[0] = st[0] + 1; g_puts(" PASS " as *u8); g_puts(name); g_puts("\n" as *u8) } 27 else { st[1] = st[1] + 1; g_puts(" FAIL " as *u8); g_puts(name); g_puts(" got=" as *u8); g_putn(got); g_puts(" want=" as *u8); g_putn(want); g_puts("\n" as *u8) } 28 return 0 29} 30 31func main() -> i64 { 32 let st: *i64 = sys_mmap(16) as *i64 33 st[0] = 0 34 st[1] = 0 35 let CH: *u8 = "knowledge/medbill/civic_channels.list\x00" as *u8 36 37 // ---- routing: right body per issue, never guesses ---- 38 chk("insurer misconduct -> DOI (1)" as *u8, cv_route(1), 1, st) 39 chk("surprise-billing violation -> CMS-NSA (2)" as *u8, cv_route(2), 2, st) 40 chk("501(r) not honored -> IRS 13909 (4)" as *u8, cv_route(3), 4, st) 41 chk("abusive collection/credit -> CFPB (5)" as *u8, cv_route(4), 5, st) 42 chk("suspected fraud -> HHS-OIG (6)" as *u8, cv_route(5), 6, st) 43 chk("reform story -> representative (7)" as *u8, cv_route(6), 7, st) 44 chk("unknown issue -> -1 (no guessing)" as *u8, cv_route(9), 0 - 1, st) 45 46 // ---- expected-response windows from the DATA pack ---- 47 chk("CFPB window = 15 days (data)" as *u8, cv_expect(CH, 5), 15, st) 48 chk("IRS window = 120 days (data)" as *u8, cv_expect(CH, 4), 120, st) 49 chk("unknown channel -> -1" as *u8, cv_expect(CH, 99), 0 - 1, st) 50 51 // ---- case ledger on a hermetic store ---- 52 let pfx: *u8 = sys_mmap(64) 53 var pp: i64 = 0 54 let pre: *u8 = "/tmp/civic_\x00" as *u8 55 while pre[pp] != (0 as u8) { pfx[pp] = pre[pp]; pp = pp + 1 } 56 var m: i64 = sys_now_us() 57 let tmp: *u8 = sys_mmap(32) 58 var kk: i64 = 0 59 while m > 0 { tmp[kk] = (48 + (m % 10)) as u8; m = m / 10; kk = kk + 1 } 60 while kk > 0 { kk = kk - 1; pfx[pp] = tmp[kk]; pp = pp + 1 } 61 pfx[pp] = 45 as u8 62 pp = pp + 1 63 pfx[pp] = 0 as u8 64 65 chk("open case (issue 2, sent 20250310) rc=0" as *u8, cv_case_open(pfx, "case1\x00" as *u8, 2, 20250310), 0, st) 66 let rec: *u8 = sys_mmap(512) 67 var l: i64 = cv_get(pfx, "case1\x00" as *u8, rec, 512) 68 var t: i64 = 0 69 if l > 0 { t = 1 } 70 chk("case round-trips" as *u8, t, 1, st) 71 chk(" field issue = 2" as *u8, cv_f(rec, 0), 2, st) 72 chk(" field channel = 2 (derived)" as *u8, cv_f(rec, 1), 2, st) 73 chk(" field sent = 20250310" as *u8, cv_f(rec, 2), 20250310, st) 74 chk(" field status = 1 SENT" as *u8, cv_f(rec, 3), 1, st) 75 chk("update to RESPONDED rc=0" as *u8, cv_case_set(pfx, "case1\x00" as *u8, 3, 20250401), 0, st) 76 cv_get(pfx, "case1\x00" as *u8, rec, 512) 77 chk(" status now 3" as *u8, cv_f(rec, 3), 3, st) 78 chk(" status date 20250401" as *u8, cv_f(rec, 4), 20250401, st) 79 chk(" sent date preserved" as *u8, cv_f(rec, 2), 20250310, st) 80 chk("unknown case -> -1" as *u8, cv_get(pfx, "nope\x00" as *u8, rec, 512), 0 - 1, st) 81 chk("open with unknown issue -> -1" as *u8, cv_case_open(pfx, "bad\x00" as *u8, 9, 20250310), 0 - 1, st) 82 83 // ---- follow-up + movement verdicts (mechanical) ---- 84 chk("follow-up 20250310 + 60d = 20250509" as *u8, cv_followup(20250310, 60), 20250509, st) 85 chk("in-window unanswered -> PENDING (2)" as *u8, cv_verdict(1, 20250310, 60, 20250401), 2, st) 86 chk("window passed unanswered -> OVERDUE-UNRESPONSIVE (3)" as *u8, cv_verdict(1, 20250310, 60, 20250601), 3, st) 87 chk("responded -> MOVING (1)" as *u8, cv_verdict(3, 20250310, 60, 20250601), 1, st) 88 chk("no-action close -> 4" as *u8, cv_verdict(5, 20250310, 60, 20250601), 4, st) 89 90 // ---- letters: load-bearing + neutral ---- 91 let letter: *u8 = sys_mmap(16384) 92 cv_letter(2, letter) 93 chk("NSA complaint names the federal help desk" as *u8, mbc_contains(letter, "No Surprises Help Desk\x00" as *u8), 1, st) 94 cv_letter(3, letter) 95 chk("501(r) referral names Form 13909" as *u8, mbc_contains(letter, "13909\x00" as *u8), 1, st) 96 chk("501(r) referral notes the IRS no-report gap + AG copy" as *u8, mbc_contains(letter, "Attorney General\x00" as *u8), 1, st) 97 cv_letter(5, letter) 98 chk("OIG report grounds in the documented audit" as *u8, mbc_contains(letter, "attached audit\x00" as *u8), 1, st) 99 cv_letter(6, letter) 100 chk("representative letter demands a WRITTEN response" as *u8, mbc_contains(letter, "written response\x00" as *u8), 1, st) 101 chk("representative letter tracks responsiveness" as *u8, mbc_contains(letter, "track responsiveness\x00" as *u8), 1, st) 102 chk("NEUTRAL: names no party (Democrat absent)" as *u8, mbc_contains(letter, "Democrat\x00" as *u8), 0, st) 103 chk("NEUTRAL: names no party (Republican absent)" as *u8, mbc_contains(letter, "Republican\x00" as *u8), 0, st) 104 cv_letter(9, letter) 105 chk("unknown issue letter refuses (never guesses)" as *u8, mbc_contains(letter, "never guesses\x00" as *u8), 1, st) 106 107 g_puts("nx_medbill_civic_gate: PASS=" as *u8) 108 g_putn(st[0]) 109 g_puts(" FAIL=" as *u8) 110 g_putn(st[1]) 111 g_puts("\n" as *u8) 112 if st[1] == 0 { g_puts("ADV5 nx_medbill_civic: GREEN\n" as *u8); return 0 } 113 g_puts("ADV5 nx_medbill_civic: RED\n" as *u8) 114 return 1 115}