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}