jak złapać zebrę?

Jeśli słyszysz stukot kopyt, myśl, że to konie, a nie zebry.
Ten wpis jest bardzo długi i z każdym metrem nudniejszy. Nie możesz zasnąć? A, to przepraszam (zapraszam).

Przyznaję, że z lenistwa rzuciłem na barki programistów mojego ulubionego (bo już nie ma innej alternatywy – wiąże nas wieloletnia umowa lub wizja migracji gorsza niż kataklizm), a więc kontynuując: mojego ulubionego dostawcy oprogramowania problem z pewnym zestawem świadczeń.

Zestaw jak zestaw, cykl rehabilitacyjny pacjenta. Na każdy z 10 dni zabiegowych pacjent podpisywał oświadczenie, że jest ubezpieczony. Ma to odwzorowanie w danych elektronicznych rejestru medycznego. Na oko wszystko było OK, ale maszyna w NFZ przeżuła i wypluła mi ten zestaw z powrotem z komunikatem: 50201084 – Przekazane daty oświadczenia wykraczają poza zakres czasowy zestawu świadczeń. Wtedy zgłupiałem. Przyjrzałem się uważniej i na drugie oko było tak samo poprawnie. Są jeszcze mądrzejsi ode mnie, pomyślałem z pokorą i wystawiłem zgłoszenie błędu do konsultantów oprogramowania.

Najpierw musiałem udowodnić, że przekazałem do analizy właściwe pliki i wyjaśnić, jak działa komunikacja z NFZ, którą realizuje ich program. Program A rejestruje dane, a B wysyła. Program C komunikuje je ze sobą, ale on się tu nie liczy. Zarówno program A jak i B mógłby być samowystarczalny, ale kupiliśmy opcję bardziej wypasioną (z innymi modułami zajmującymi połowę alfabetu). Po miesiącu leniwej dyskusji doszliśmy do porozumienia: nie mogę nic poprawić w B, bo mam do tego A, więc powinienem zgłosić problem do innego działu. O, naiwny! Czemu uznałeś te fakty za oczywiste? To, że jesteś ich klientem, nie oznacza, że konsultanci wiedzą, z jakich programów korzystasz!

Czas mijał, a ja zgłosiłem problem do działu A. Konsultant po dogłębnej analizie dwóch sposobów przepchnięcia danych do NFZ stwierdził, że nie mogę posługiwać się jednym oświadczeniem na cały okres, bo pacjent deklaruje w nim, że był ubezpieczony również w sobotę i niedzielę, a wtedy przecież nie miał zabiegów. Niestety, wpadłem na to wcześniej, ale nic to nie dało.

Ten sposób konsultant wykluczył…

Sposób z oświadczeniem na każdy dzień oddzielnie jest właściwy, ale nie działa. Należy zastosować pewien mechanizm, który z programu B usunie zestaw (program B wyśle żądanie usunięcia do NFZ) i utworzy go pod innym identyfikatorem. Bezradnie zaprotestowałem, minęło tyle czasu, że NFZ cokolwiek nie zamknął możliwości usuwania, ale dodać na pewno nic nie pozwoli. Konsultant, w akcie rozpaczy, zaproponował jeszcze jedno rozwiązanie.

To, które wykluczyliśmy już na początku.

Po wyczerpaniu wszystkich pomysłów stwierdził, że błąd jest po stronie NFZ. Po równie bezowocnych rozmowach z NFZ poprosiłem o ręczne potwierdzenie poprawności zestawu, co się nie wydarzyło, zgłoszenie zamknąłem i próbowałem o wszystkim zapomnieć.

Napięcie rośnie, prawda? Minęło pół roku i miałem nagle trzy nowe zestawy z takim błędem. Przy kolejnym zgłoszeniu okazało się, że są jakieś opcje systemu, które należy sprawdzić. Sprawdziłem, były od początku poprawne. Zastosowaliśmy więc numer z usunięciem i stworzeniem zestawu od nowa, przy czym mechanizm tworzenia powinien był rozbić okresy na pojedyncze dni i wtedy wszyscy dowiedzieliśmy się, że tak właśnie robi, ale nie w przypadku rehabilitacji.

Kolejnym genialnym pomysłem było wpuszczenie konsultantów do naszej piaskownicy. Po przekazaniu wszystkich oświadczeń RODO itp. czekałem ponad miesiąc, aż pokonane zostaną problemy techniczne związane z dostępem VPN do naszej fortecy. W końcu weszli popularnym kanałem komunikacyjnym i stwierdzili, że dział produkcji przeanalizował dany przypadek i w raporcie wszystko wygląda prawidłowo i nie wiedzą, dlaczego NFZ zwraca taki błąd. Po czym zaproponowali jeszcze jeden sposób.

Ten sam, który wykluczyli jeszcze w pierwszym zgłoszeniu.

Oraz oświadczyli, że bezpośrednio z NFZ kontaktować się nie mogą, więc dalej muszę osobiście pośredniczyć. Mój kontakt z NFZ zaowocował nowymi rewelacjami. Podobno struktura naszego komunikatu jest zupełnie inna, niż pozostałych świadczeniodawców. Wg NFZ poprawne są (jeżeli dobrze zrozumiałem) następujące rozwiązania:

+ zestaw świadczeń
I________ jedno świadczenie od dnia rozpoczęcia do końca cyklu
I________ a w nim lista produktów jednostkowych
+ koniec zestawu

albo:

+ zestaw świadczeń
I________ jedno świadczenie dla 1 dnia cyklu
I________ lista produktów jednostkowych
I________ jedno świadczenie dla 2 dnia cyklu
I________ lista produktów jednostkowych
I________ jedno świadczenie dla 3 dnia cyklu
I________ lista produktów jednostkowych
I________ jedno świadczenie dla 4 dnia cyklu
I________ lista produktów jednostkowych
I________ jedno świadczenie dla x dnia cyklu
I________ lista produktów jednostkowych
+ koniec zestawu

Przekazywany przez nas komunikat dzieli świadczenia wg pracowników realizujących i struktura jest następująca:

+ zestaw świadczeń
I________ jedno świadczenie dla 1 pracownika w datach granicznych, pomiędzy którymi coś wykonywał
I________ lista produktów jednostkowych
I________ jedno świadczenie dla 2 pracownika w datach granicznych, pomiędzy którymi coś wykonywał
I________ lista produktów jednostkowych
I________ jedno świadczenie dla 3 pracownika w datach granicznych, pomiędzy którymi coś wykonywał
I________ lista produktów jednostkowych
+ koniec zestawu

Zakresy dat świadczeń pracowników mogą nakładać się na siebie. Struktura, też mi coś. Od strony programu A czyli rejestracji nic takiego nie było. Tam było po prostu kilkadziesiąt oddzielnych wizyt dla każdego zabiegu z osobna i miałem już dość podmieniania w każdym z nich oświadczenia na inne. Inne czyli takie samo, ale lepsze.

Odkrycie, z którego nic nie wynikało, bo program B po prostu robił komunikat taki jaki robił i już. Nie da się wsadzić palca między te trybiki i coś pogrzebać…

W sprawę wtrąciło się moje osobiste Kierownictwo, któremu napisałem raport z ponad półrocznego pertraktowania z konsultantami i NFZ, z którego jasno wynikało, że skoro nic nie osiągnąłem, to dlatego, że nic nie robiłem. Może niepotrzebnie próbowałem zmieścić się na jednej stronie.

Tu, przy okazji, wychodzi na jaw mój brak wyczucia scenicznego, bo kto jak kto, ale Kierownictwo powinno mieć bardziej spektakularne wejście. Tym bardziej, że w rzeczywistości rzeczywiście było bardziej. nie wiem dlaczego nie jestem w stanie zaakceptować myśli przewodniej: ja się na tym nie znam i wcale nie muszę, a tym masz to po prostu zrobić, bo po to tu jesteś, a jak sobie nie radzisz, to się zwolnij. Przyznaję, bardzo długi transparent. A jak pięknie powiewa w strumieniu oracji o mojej nieodpowiedzialności, niesubordynacji, ignorancji i bezmyślności (siedzisz i coś tam klikasz i nic z tego nie wynika).

A nieprawda! Moje eksperymenty doprowadziły do sytuacji, że gdy poprzednio zestaw był wczytywany do maszyny NFZ i potem odrzucany, to teraz uzyskałem sytuację, że nie dochodzi nawet do wczytania. Odrzucany jest natychmiast, a komunikat błędu zmienił się na 50201063 – Data wystawienia oświadczenia wcześniejsza niż którakolwiek z dat rozpoczynających wykonanie świadczenia.

Co tu się rozpisywać, z krótkiej, żołnierskiej rozmowy z NFZ, Kierownictwo dowiedziało się, że już dwa miesiące temu otrzymałem sugestię, co należy zrobić, ale nie zastosowałem się do niej: trzeba po prostu wszystko usunąć i wpisać od nowa. Radykalizm przeciwko mojemu rozbabraniu. Stanowczo zaprotestowałem. Do licha, pomyślałem po cichu, nawet jeżeli ten wariacki sposób okaże się skuteczny, to po prostu jako metoda jest nie do przyjęcia! Poza tym nie pozwoli wykryć przyczyny problemu. Poza tym nie jest mój (i nie mógłby być w żadnych okolicznościach, to nie mój styl)!

Zacząłem spisywać wszystkie fakty i przypuszczenia. Tknęło mnie, że może istnieją też tacy pacjenci, których jednak NFZ zaakceptował. Pewnie, że istnieją! Im bardziej się zagłębiałem w problem, tym szybciej padały wszelkie hipotezy i pomysły i tym bardziej sprawa wymykała się jakimkolwiek regułom i prawidłowościom. Dwa razy byłem już w stu procentach pewien, że uzyskałem rozwiązanie, zanim jeszcze cokolwiek kliknąłem. Po wczytaniu komunikatów zwrotnych – w stu procentach pewien, że nie…

Najwyższa pora zacząć myśleć, chociaż pojawił się cień nadziei, że mnie w końcu zwolnią z pracy i żal to zaprzepaścić…

Zacząłem się zastanawiać, czy ja przypadkiem nie próbuję złapać zebry…

Cały czas konsultanci i NFZ wypatrywali czegoś niezwykłego, a może to po prostu zwykły błąd? Mało tego, może treść komunikatu błędu wprost mówiła o przyczynie mojego problemu! Koń jaki jest, każdy widzi – odkrył Benedykt Chmielowski w Nowych Atenach. Warto było czytać, bo się to okazało najtrafniejszą wskazówką.

Zacząłem przeglądać wszystko od nowa. Najistotniejszą cechą był brak sensu w tym wszystkim, brak jakiejkolwiek reguły powstawania błędu. Im głębsza analiza, tym większa wydawała się jego przypadkowość. Ale po której stronie tak naprawdę powstaje? Sięgnąłem po stare i nowe raporty. Tego gąszczu danych, który przesyłałem im do analizy nikt nie czytał. Otwierałem kolejne pliki XML i porównywałem cyfrę z cyfrą. Okazało się w końcu, że program B po prostu oszukuje. Nie wiem jaki ma w tym cel, ale z poziomu programu B dane są inne niż z poziomu A. Niektóre dni były reprezentowane przez bezsensownie podpięte dokumenty, np. 28 czerwiec miał przypięty 4 kwiecień. Można było klikać i klikać, bo w A wszystko w porządeczku!  Posprzątałem, wysłałem, błędu nie ma.

A zebra? Nie, to żaluzje rzucały taki cień!

Reklamy
Ten wpis został opublikowany w kategorii Bez kategorii, informatyzacja, cyfryzacja i inne cuda, po godzinach, z ukosa. Dodaj zakładkę do bezpośredniego odnośnika.

Co o tym myślisz?

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s