diff --git a/nbs/01_mts.ipynb b/nbs/01_mts.ipynb
new file mode 100644
index 0000000..ea4780a
--- /dev/null
+++ b/nbs/01_mts.ipynb
@@ -0,0 +1,173 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# mts\n",
+ "\n",
+ "> mts ist ein Web Tool, welches Rechnungen aus einem bestehenden CRM/ERP in das im Schweizer Gesundheitswesen verwendete GeneralInvoice-XML-Format umwandelt und via MediData an die Invalidenversicherung (IV) weiterreicht. Daten-Empfänger für alle IV-Stellen der Schweiz ist die Zentrale Ausgleichsstelle ZAS. \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#| default_exp matlon_mts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#| hide\n",
+ "#| echo: false\n",
+ "%load_ext autoreload\n",
+ "%autoreload 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#| hide\n",
+ "from nbdev.showdoc import *\n",
+ "from IPython.display import Markdown\n",
+ "from matlon.model import *\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "(Because this is a tool specifically for the Swiss healthcare system, this page is in German instead of English.)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Wozu mts?\n",
+ "Zitat von der [ZAS-Website](https://www.zas.admin.ch/zas/de/home/partenaires-et-institutions-/paiement-des-prestations-individuelles-avs-ai/information-a-l-attention-des-fournisseurs-de-prestations.html):\n",
+ "\n",
+ "> \"Die ZAS strebt langfristig eine fast ausschliesslich elektronische Bearbeitung von Rechnungen für individuelle AHV/IV-Leistungen an.\"\n",
+ "\n",
+ "Leistungserbringer, deren Software nicht in der Lage ist, Rechnungen in das GeneralInvoice-XML-Format zu exportieren und zu übermitteln, stellt dies vor grosse Herausforderungen. Sie müssen entweder auf eine neue Software umsteigen, oder die Rechnungen nochmals mit allen Details manuell in einem Web-Formular erfassen.\n",
+ "\n",
+ "Mit __mts__ bietet matlon ein schlankes Tool an, welches alle notwendigen Rechnungsdaten aus dem vorhandenen CRM/ERP exportiert, validiert und in das GeneralInvoice-XML-Format umwandelt. mts orchestriert die anschliessende Übermittlung dieser Daten via MediData-Netz an die ZAS und die Verarbeitung und Quittierung allfälliger Rückweisungs-Meldungen der ZAS / IV-Stellen.\n",
+ "\n",
+ "Screenshot:\n",
+ "![mts Dashboard](mts1.jpg)\n",
+ "\n",
+ "## Welche CRM/ERP-Systeme werden unterstützt?\n",
+ "Wir programmieren im Rahmen eines Projekts einen Adapter, der exakt zu Ihrem vorhandenen System und den dortigen Datenstrukturen passt.\n",
+ "Für [b-at.ch](https://www.b-at.ch) haben wir beispielsweise einen Adapter geschrieben, der die Daten aus der [Teamleader](https://www.teamleader.eu)-Software exportiert.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Diagramme\n",
+ "## Sequenzdiagramm\n",
+ "```{mermaid}\n",
+ "sequenceDiagram\n",
+ " actor User as Benutzer\n",
+ " participant CRM as CRM
z.B. Teamleader\n",
+ " participant mts as mts
CRM Daten zu generalInvoice XML Format
Daten-Konverter Plattform für Leistungsabrechnungen\n",
+ " participant MediData\n",
+ " participant D as Empfänger
z.B. IV/ZAS\n",
+ " User->>CRM: Rechnung erstellen\n",
+ " mts->>+CRM: neue Rechnungen abholen\n",
+ " mts->>+mts: Rechnungen validieren und als XML aufbereiten\n",
+ " activate mts\n",
+ " User->>mts: Prüfen und Freigabe\n",
+ " mts->>MediData: Rechnung übermitteln\n",
+ " mts->>CRM: Status-Notiz erstellen\n",
+ " deactivate mts\n",
+ " MediData->>+D: Rechnung weiterreichen\n",
+ " D->>D: Rechnung prüfen, falls abgewiesen: Nachricht\n",
+ " D->>+MediData: Resultat zurückmelden\n",
+ " activate mts\n",
+ " mts->>+MediData: Resultate und Nachrichten abholen\n",
+ " mts->>+CRM: Status-Notiz erstellen\n",
+ " deactivate mts\n",
+ " User->>mts: Nachrichten ansehen und Quittieren\n",
+ "```\n",
+ "## Statusdiagramm\n",
+ "```{mermaid}\n",
+ "stateDiagram-v2\n",
+ " [*] --> ignoriert: Ignorieren Aktion\n",
+ " [*] --> registriert: Sync Aktion\n",
+ " registriert --> validiert: Validierung erfolgreich\n",
+ " registriert --> Validierung_fehlgeschlagen: Validierungsfehler\n",
+ " Validierung_fehlgeschlagen --> validiert: Sync Aktion\n",
+ " validiert --> exportiert_zu_MediData: Zu MediData hochladen Aktion\n",
+ " validiert --> validiert: Sync Aktion\n",
+ " validiert --> ignoriert: Ignorieren Aktion\n",
+ " validiert --> Export_zu_MediData_fehlgeschlagen: Zu MediData hochladen Aktion, MediData nicht erreichbar\n",
+ " exportiert_zu_MediData --> akzeptiert: Zahlungseingang\n",
+ " exportiert_zu_MediData --> zurückgewiesen: Antwort oder Notifikation\n",
+ " Export_zu_MediData_fehlgeschlagen --> exportiert_zu_MediData: Zu MediData hochladen Aktion\n",
+ " zurückgewiesen --> [*]: Nachdem Antwort oder Notifikation bestätigt wurde\n",
+ " akzeptiert --> [*]\n",
+ " ignoriert --> [*]\n",
+ " \n",
+ " note right of registriert: temporärer Übergangsstatus\n",
+ " \n",
+ " classDef transient stroke-dasharray: 5 5, fill: white\n",
+ " class registriert transient\n",
+ "```\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Interessiert?\n",
+ "Kontaktieren Sie [Andri Krämer](mailto:akraemer@matlon.ch).\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Nützliche Links\n",
+ "- [ZAS Infos zur elektronischen Rechnungsstellung AHV/IV](https://www.zas.admin.ch/zas/de/home/partenaires-et-institutions-/paiement-des-prestations-individuelles-avs-ai/information-a-l-attention-des-fournisseurs-de-prestations/fournisseur_de_prestations.html)\n",
+ "- [Forum Datenaustausch: Elektronische Kommunikation im Gesundheitswesen](https://www.forum-datenaustausch.ch/de/)\n",
+ "- [MediData](https://www.medidata.ch/md/web/de/)\n",
+ "- [b-at AG Beratung assistive Technologien](https://www.b-at.ch) (Referenzkunde)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#| hide\n",
+ "import nbdev; nbdev.nbdev_export()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "python3",
+ "language": "python",
+ "name": "python3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/nbs/10_andri.ipynb b/nbs/10_andri.ipynb
index 493644a..5708e00 100644
--- a/nbs/10_andri.ipynb
+++ b/nbs/10_andri.ipynb
@@ -312,6 +312,18 @@
" i += 1\n"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#| echo: false\n",
+ "if i < len(projects):\n",
+ " display(Markdown(project_to_markdown(projects[i])))\n",
+ " i += 1\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
diff --git a/nbs/index.ipynb b/nbs/index.ipynb
index 47a177c..ebebece 100644
--- a/nbs/index.ipynb
+++ b/nbs/index.ipynb
@@ -22,8 +22,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "As a kid, whenever someone asked what I wanted to be when I grew up, I’d always say, 'an inventor.' Starting October 23, 2024, I'll be documenting my projects. So stay tuned and follow me as the website grows! \n",
+ "As a kid, whenever someone asked what I wanted to be when I grew up, I’d always say, 'an inventor.' Here, I am documenting my projects. So stay tuned and follow me as the website grows! \n",
"\n",
+ "* 2025-01-31: [mts](/01_mts.ipynb) ermöglicht Leistungserbringern, Rechnungen aus ihrem bestehenden CMS/ERP im GeneralInvoice-XML-Format auf elektronischem Weg via MediData an die Invalidenversicherung (IV) zu senden\n",
"* 2024-11-16: [Running Wheel Tracker](/10_andri.ipynb#running-wheel-tracker) Pet cage upgraded for the IoT era\n",
"* 2024-11-14: [Andri's CV](/11_andri_cv.ipynb) Joyfully bound to the endless journey of learning\n",
"* 2024-11-08: [chat-export, 2024-](/10_andri.ipynb#chat-export) My father asked me how he could print his WhatsApp chat history with my late brother. I had to realize that this was not possible, and there was no useful free tool to archive or print a chat in a nice format. So, I wrote one.\n",
diff --git a/nbs/mts1.jpg b/nbs/mts1.jpg
new file mode 100644
index 0000000..73e8053
Binary files /dev/null and b/nbs/mts1.jpg differ
diff --git a/nbs/projects.json b/nbs/projects.json
index 4cef49c..0d300e6 100644
--- a/nbs/projects.json
+++ b/nbs/projects.json
@@ -109,6 +109,12 @@
"year_start": 2024,
"quote": "Write assessment reports for assistive technologies using AI",
"description": "batGPT is an AI tool for writing assessment reports for assistive technologies, using large language models (LLMs). By selecting keywords and entering short text fragments, a draft report is generated, which can then be manually completed and refined. The screenshot shows an example of such a draft\n\n ![Screenshot of batGPT: Input on the left, generated output on the right.](batgpt1.jpg)\n\nThis application was developed for [b-at Beratung assistive Technologien](https://b-at.ch) in 2024 and is being enhhanced and improved regularly, using the latest AI models and capabilities."
+ },{
+ "title": "mts",
+ "categories": ["miscellaneous"],
+ "year_start": 2025,
+ "quote": "A tool for electronic billing in the Swiss healthcare system",
+ "description": "There's a dedicated page for this project (in German): [mts](/01_mts.ipynb)"
},{
"title": "chat-export",
"categories": ["miscellaneous"],
diff --git a/nbs/sidebar.yml b/nbs/sidebar.yml
index 9083898..8440069 100644
--- a/nbs/sidebar.yml
+++ b/nbs/sidebar.yml
@@ -2,6 +2,7 @@ website:
sidebar:
contents:
- index.ipynb
+ - 01_mts.ipynb
- section: Andri Krämer
contents:
- 10_andri.ipynb