Commit a3cddf75 authored by Dan-Schaefer's avatar Dan-Schaefer

Code upload

parent a2fbc643
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</value>
</option>
<DB2CodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</DB2CodeStyleSettings>
<DerbyCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</DerbyCodeStyleSettings>
<H2CodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</H2CodeStyleSettings>
<HSQLCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</HSQLCodeStyleSettings>
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
</JetCodeStyleSettings>
<MSSQLCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</MSSQLCodeStyleSettings>
<MySQLCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</MySQLCodeStyleSettings>
<OracleCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</OracleCodeStyleSettings>
<PostgresCodeStyleSettings version="2">
<option name="USE_GENERIC_STYLE" value="true" />
</PostgresCodeStyleSettings>
<SQLiteCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</SQLiteCodeStyleSettings>
<SqlCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</SqlCodeStyleSettings>
<SybaseCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
</SybaseCodeStyleSettings>
</code_scheme>
</component>
\ No newline at end of file
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="12">
<item index="0" class="java.lang.String" itemvalue="pandas" />
<item index="1" class="java.lang.String" itemvalue="scipy" />
<item index="2" class="java.lang.String" itemvalue="thrift-sasl" />
<item index="3" class="java.lang.String" itemvalue="thriftpy" />
<item index="4" class="java.lang.String" itemvalue="impyla" />
<item index="5" class="java.lang.String" itemvalue="scikit-learn" />
<item index="6" class="java.lang.String" itemvalue="six" />
<item index="7" class="java.lang.String" itemvalue="protobuf" />
<item index="8" class="java.lang.String" itemvalue="googleapis-common-protos" />
<item index="9" class="java.lang.String" itemvalue="numpy" />
<item index="10" class="java.lang.String" itemvalue="google-cloud-dataproc" />
<item index="11" class="java.lang.String" itemvalue="google-api-core" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (mario)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/mario.iml" filepath="$PROJECT_DIR$/mario.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/sql/ddl.sql" dialect="MySQL" />
</component>
</project>
\ No newline at end of file
Install requirements
```
pip install -r requirements.txt
```
Run containers
```
docker-compose up
docker exec -it mario_db_1 bash
mysql db --password
```
Stop container and remove data
```
docker-compose down -v
```
\ No newline at end of file
{
"authored": "2022-04-14T07:17:20.234000+00:00",
"contained": [
{
"address": [
{
"text": "Fluffstr.24"
}
],
"birthDate": "1901-05-05",
"gender": "female",
"id": "45e62c8c-da69-4345-808f-e179049458e7",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "898888"
},
{
"type": {
"text": "Case Number"
},
"value": "4711111"
}
],
"name": [
{
"family": "Einhorn",
"given": [
"Anneliese"
]
}
],
"resourceType": "Patient"
}
],
"id": "3e86c863-9d61-49d0-93d5-e41578067dfa",
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "425e05b8-2655-4aff-95ac-499bf27c133b"
},
"item": [
{
"answer": [
{
"valueString": "Sprach-/ Sprechst\u00f6rung"
}
],
"linkId": "zna_neuro_frage_1",
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt?"
},
{
"answer": [
{
"valueString": "Zwischen 4 und 24 Stunden"
}
],
"linkId": "zna_neuro_frage_28",
"text": "Seit wann besteht die Sprach-/ Sprechst\u00f6rung?"
},
{
"answer": [
{
"valueString": "Ich kann/ konnte unverst\u00e4ndlich/ nicht verst\u00e4ndlich sprechen (\u201eWortsalat\u201c), mein Gespr\u00e4chspartner hat/hatte Schwierigkeiten, den Inhalt des Gesagten zu verstehen."
}
],
"linkId": "zna_neuro_frage_29",
"text": "Welche Aussage beschreibt die Beschwerden am besten?"
},
{
"answer": [
{
"valueString": "Starke Kopfschmerzen "
}
],
"linkId": "zna_neuro_frage_30",
"text": "Haben oder hatten Sie zus\u00e4tzlich eine oder mehrere der folgenden Beschwerden:"
},
{
"answer": [
{
"valueString": "Acetylsalicyls\u00e4ure (ASS)"
},
{
"valueString": "Marcumar"
},
{
"valueString": "Apixaban (Eliquis)"
},
{
"valueString": "Dabigatran (Pradaxa)"
},
{
"valueString": "Edoxaban (Lixiana)"
},
{
"valueString": "Rivaroxaban (Xarelto)"
}
],
"linkId": "zna_neuro_frage_31",
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?"
},
{
"answer": [
{
"valueString": "Nein"
}
],
"linkId": "zna_neuro_frage_53",
"text": "Ist bei Ihnen eine neurologische Erkrankung bekannt?"
}
],
"resourceType": "QuestionnaireResponse",
"source": {
"reference": "#45e62c8c-da69-4345-808f-e179049458e7"
},
"status": "completed"
}
\ No newline at end of file
{
"authored": "2022-04-14T07:18:03.081000+00:00",
"contained": [
{
"address": [
{
"text": "Fluffstr.24"
}
],
"birthDate": "1901-05-05",
"gender": "female",
"id": "45e62c8c-da69-4345-808f-e179049458e7",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "898888"
},
{
"type": {
"text": "Case Number"
},
"value": "4711111"
}
],
"name": [
{
"family": "Einhorn",
"given": [
"Anneliese"
]
}
],
"resourceType": "Patient"
}
],
"id": "934322fe-6d5c-4fe3-9dff-0aedb002fc1c",
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "425e05b8-2655-4aff-95ac-499bf27c133b"
},
"item": [
{
"answer": [
{
"valueString": "Krampfanfall"
}
],
"linkId": "zna_neuro_frage_1",
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt?"
},
{
"answer": [
{
"valueString": "Ja"
}
],
"linkId": "zna_neuro_frage_38",
"text": "Kommen Sie wegen eines stattgehabten Krampfanfalls in die Klinik? "
},
{
"answer": [
{
"valueString": "Innerhalb der letzten 12 Stunden"
}
],
"linkId": "zna_neuro_frage_40",
"text": "Wann war der Anfall?"
},
{
"answer": [
{
"valueString": "Ja"
}
],
"linkId": "zna_neuro_frage_41",
"text": "Hatten Sie mehr als einen Krampfanfall?"
},
{
"answer": [
{
"valueString": "3"
}
],
"linkId": "zna_neuro_frage_42",
"text": "Wie viele Krampfanf\u00e4lle hatten Sie?"
},
{
"answer": [
{
"valueString": "Nein"
}
],
"linkId": "zna_neuro_frage_43",
"text": "Ist bei Ihnen eine Epilepsie bekannt? "
},
{
"answer": [
{
"valueString": "Nein"
}
],
"linkId": "zna_neuro_frage_45",
"text": "Nehmen Sie regelm\u00e4\u00dfig ein Antiepileptikum (Medikament gegen epileptische Anf\u00e4lle) ein?"
},
{
"answer": [
{
"valueString": "Nein"
}
],
"linkId": "zna_neuro_frage_53",
"text": "Ist bei Ihnen eine neurologische Erkrankung bekannt?"
}
],
"resourceType": "QuestionnaireResponse",
"source": {
"reference": "#45e62c8c-da69-4345-808f-e179049458e7"
},
"status": "completed"
}
\ No newline at end of file
{
"resourceType": "QuestionnaireResponse",
"id": "e6f93635-cbd6-468b-9fb6-1fabde7b879b",
"contained": [
{
"resourceType": "Patient",
"id": "4ae96da4-e763-43b6-bced-cac45d6949db",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "0"
},
{
"type": {
"text": "Case Number"
},
"value": "0"
}
],
"name": [
{
"family": "Tepes",
"given": [
"Krul"
]
}
],
"gender": "female",
"birthDate": "1900-01-01",
"address": [
{
"text": "Musterstr"
}
]
}
],
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "087445ac-56e2-438b-9aa3-f144d7114307"
},
"status": "completed",
"authored": "2022-01-20T12:58:21.776000+00:00",
"source": {
"reference": "#4ae96da4-e763-43b6-bced-cac45d6949db"
},
"item": [
{
"linkId": "1",
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt (Bei Vorhandensein mehrerer Beschwerden kreuzen Sie bitte diejenige an, die im Vordergrund steht und zur Vorstellung hier Anlass gegeben hat.): ",
"answer": [
{
"valueString": "Schwindel"
}
]
},
{
"linkId": "2",
"text": "Seit wann besteht der Schwindel?",
"answer": [
{
"valueString": "Seit 4 Stunden oder k\u00fcrzer"
}
]
},
{
"linkId": "3",
"text": "Leiden Sie zus\u00e4tzlich unter \u00dcbelkeit/Erbrechen?",
"answer": [
{
"valueString": "Nein"
}
]
},
{
"linkId": "4",
"text": "Ist der Schwindel dauerhaft vorhanden?",
"answer": [
{
"valueString": "Ja"
}
]
},
{
"linkId": "5",
"text": "Tritt der Schwindel nur bei bestimmten Bewegungen auf (z. B. Umdrehen im Bett, B\u00fccken, Kopfneigung nach hinten)?",
"answer": [
{
"valueString": "Ja"
}
]
},
{
"linkId": "6",
"text": "Haben Sie zus\u00e4tzliche Beschwerden seit dem Auftreten des Schwindels? ",
"answer": [
{
"valueString": "Ja"
}
]
}
]
}
\ No newline at end of file
{
"authored": "2022-03-09T06:35:13.525000+00:00",
"contained": [
{
"address": [
{
"text": "Fluffstr.24 K\u00f6ln"
}
],
"birthDate": "1911-11-11",
"gender": "male",
"id": "6131dc2e-3b40-4af3-84e8-71591adf6a0a",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "124567"
},
{
"type": {
"text": "Case Number"
},
"value": "0124567"
}
],
"name": [
{
"family": "DangerousZwei",
"given": [
"FluffZwei"
]
}
],
"resourceType": "Patient"
}
],
"id": "e877f95a-df4e-4308-900a-9dd54142afbb",
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "c89b4c3f-221d-406f-9429-517a164b9035"
},
"item": [
{
"answer": [
{
"valueString": "2022-03-09"
}
],
"linkId": "Datum_1",
"text": "Heutiges Datum"
},
{
"answer": [
{
"valueString": "Zweiter Fragebogen"
}
],
"linkId": "Freitext_1",
"text": "Wie geht es Ihnen sonst?"
}
],
"resourceType": "QuestionnaireResponse",
"source": {
"reference": "#6131dc2e-3b40-4af3-84e8-71591adf6a0a"
},
"status": "completed"
}
\ No newline at end of file
This diff is collapsed.
{
"questions": [
{
"id": 1,
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt?",
"symptom": null,
"answers": [
"Schwindel",
"Kopfschmerzen",
"Schwäche/ Lähmung",
"Missempfindung (Kribbleln)/ Taubheit der Haut",
"Sprach-/ Sprechstörung",
"Sehstörung",
"Krampfanfall",
"Andere Beschwerden"
]
},
{
"id": 2,
"text": "Seit wann besteht der Schwindel?",
"symptom": "Schwindel",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 3,
"text": "Leiden Sie zusätzlich unter Übelkeit/ Erbrechen?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 4,
"text": "Ist der Schwindel dauerhaft vorhanden?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 5,
"text": "Tritt der Schwindel bei bestimmten Bewegungen auf (z. B. Umdrehen im Bett, Bücken, Kopfneigung nach hinten)?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 6,
"text": "Haben Sie zusätzliche Beschwerden seit dem Auftreten des Schwindels?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 7,
"text": "Welche der folgenden Beschwerden haben Sie zusätzlich?",
"symptom": "Schwindel",
"answers": [
"Doppelbilder",
"Probleme beim Sitzen, Stehen oder Gehen",
"Schluckstörung",
"Sprachstörung (z. B. undeutliches „verwaschenes“ Sprechen )",
"Einseitige Schwäche/ Lähmung oder Missempfindung",
"Einseitige Koordinationsstörung (z. B. vermehrte Ungeschicklichkeit einer Hand)",
"Brustenge/ -schmerzen",
"Luftnot"
]
},
{
"id": 8,
"text": "Wie Äußern sich die Doppelbilder konkret?",
"symptom": "Schwindel",
"answers": [
"Nebeneinanderstehend",
"Übereinanderstehend",
"Anders"
]
},
{
"id": 9,
"text": "Wann Äußern sich Ihre Probleme konkret?",
"symptom": "Schwindel",
"answers": [
"Beim Sitzen",
"Beim Gehen",
"Beim Stehen",
"Anders"
]
},
{
"id": 10,
"text": "Seit wann besteht der Kopfschmerz?",
"symptom": "Kopfschmerzen",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 11,
"text": "Sind die Schmerzen plötzlich oder innerhalb sehr kurzer Zeit (d. h. innerhalb einer Minute) aufgetreten?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 12,
"text": "In welchem Bereich des Kopfes?",
"symptom": "Kopfschmerzen",
"answers": [
"Hinterkopf",
"Seite/ Schläfe",
"Stirn/ Auge/ Gesicht",
"Gesamter Kopf"
]
},
{
"id": 13,
"text": "Wie stark sind die Schmerzen?",
"symptom": "Kopfschmerzen",
"answers": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
]
},
{
"id": 14,
"text": "Sind die Schmerzen hinsichtlich Ort ihres Auftretens, ihrer Stärke oder anderweitig anders als Kopfschmerzen, die Sie kennen?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 15,
"text": "Haben Sie Fieber?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja, gemessen und über 38°",
"Ja, gemessen und unter 38°",
"Nein, gemessen und kein Fieber",
"Nein, aber auch nicht gemessen",
"Unsicher, nicht gemessen aber fühle mich fiebrig"
]
},
{
"id": 16,
"text": "Hatten Sie kürzlich eine Kopfverletzung, einen Sturz auf den Kopf oder einen heftigen Anprall?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 17,
"text": "Ging den Kopfschmerzen eine körperliche Anstrengung (inkl. Husten/Niesen/Pressen/schweres Heben) voraus?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 18,
"text": "Haben Sie weitere Beschwerden zusätzlich zu den Kopfschmerzen?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 19,
"text": "Welche der folgenden Beschwerden haben Sie zusätzlich?",
"symptom": "Kopfschmerzen",
"answers": [
"Übelkeit/ Erbrechen",
"Lichtscheu",
"Schmerzen an einer Hals- oder Nackenseite",
"Sprachstörung (z. B. undeutliches „verwaschenes“ Sprechen)",
"Einseitige Schwäche/ Lähmung oder Missempfindung",
"Begleitende Schmerzen im Bereich eines Auges",
"Tränendes Auge oder verstopfte Nase",
"Sehstörung (z. B. Doppelbilder)"
]
},
{
"id": 20,
"text": "Seit wann besteht die Schwäche/Lähmung/ Missempfindung?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Zwischen 1 und 2 Wochen ohne Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 21,
"text": "Welche Beschwerden haben Sie?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Schwäche/Lähmung",
"Taubheit",
"Kribbeln"
]
},
{
"id": 22,
"text": "Wo sind Ihre Beschwerden?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Kopf/Gesicht – einseitig/beidseitig ",
"eine Körperhälfte (rechts/links)",
"eine Gesichtshälfte & eine Köperhälfte",
"beide Beine",
"gesamter Körper ohne Seitenbetonung"
]
},
{
"id": 23,
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Acetylsalicylsäure (ASS) ",
"Marcumar",
"Apixaban (Eliquis)",
"Dabigatran (Pradaxa)",
"Edoxaban (Lixiana)",
"Rivaroxaban (Xarelto)"
]
},
{
"id": 24,
"text": "Seit wann besteht die Sprach-/ Sprechstörung? ",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Zwischen 1 und 2 Wochen ohne Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 25,
"text": "Welche Aussage beschreibt die Beschwerden am besten?",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Ich kann/konnte nur undeutlich sprechen, mein Gesprächspartner versteht/verstand jedoch den Inhalt des Gesagten.",
"Ich kann/konnte unverständlich/nicht verständlich sprechen („Wortsalat“), mein Gesprächspartner hat/te Schwierigkeiten, den Inhalt des Gesagten zu verstehen.",
"Das Sprechen fällt/fiel mir schwer, ich muss nach Worten suchen \noder habe Probleme, die Wörter herauszubringen."
]
},
{
"id": 26,
"text": "Haben oder hatten Sie zusätzlich eine oder mehrere der folgenden Beschwerden:",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Einseitige Lähmung/Schwäche ",
"Sehstörung",
"Starke Kopfschmerzen,"
]
},
{
"id": 27,
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Acetylsalicylsäure (ASS)",
"Marcumar",
"Apixaban (Eliquis)",
"Dabigatran (Pradaxa)",
"Edoxaban (Lixiana)",
"Rivaroxaban (Xarelto)"
]
}
]
}
\ No newline at end of file
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: db
ports:
- 3306:3306
adminer:
image: adminer
restart: always
ports:
- 8080:8080
\ No newline at end of file
{
"questions": [
{
"id": 1,
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt?",
"symptom": null,
"answers": [
"Schwindel",
"Kopfschmerzen",
"Schwäche/ Lähmung",
"Missempfindung (Kribbleln)/ Taubheit der Haut",
"Sprach-/ Sprechstörung",
"Sehstörung",
"Krampfanfall",
"Andere Beschwerden"
]
},
{
"id": 2,
"text": "Seit wann besteht der Schwindel?",
"symptom": "Schwindel",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 3,
"text": "Leiden Sie zusätzlich unter Übelkeit/ Erbrechen?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 4,
"text": "Ist der Schwindel dauerhaft vorhanden?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 5,
"text": "Tritt der Schwindel bei bestimmten Bewegungen auf (z. B. Umdrehen im Bett, Bücken, Kopfneigung nach hinten)?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 6,
"text": "Haben Sie zusätzliche Beschwerden seit dem Auftreten des Schwindels?",
"symptom": "Schwindel",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 7,
"text": "Welche der folgenden Beschwerden haben Sie zusätzlich?",
"symptom": "Schwindel",
"answers": [
"Doppelbilder",
"Probleme beim Sitzen, Stehen oder Gehen",
"Schluckstörung",
"Sprachstörung (z. B. undeutliches „verwaschenes“ Sprechen )",
"Einseitige Schwäche/ Lähmung oder Missempfindung",
"Einseitige Koordinationsstörung (z. B. vermehrte Ungeschicklichkeit einer Hand)",
"Brustenge/ -schmerzen",
"Luftnot"
]
},
{
"id": 8,
"text": "Wie Äußern sich die Doppelbilder konkret?",
"symptom": "Schwindel",
"answers": [
"Nebeneinanderstehend",
"Übereinanderstehend",
"Anders"
]
},
{
"id": 9,
"text": "Wann Äußern sich Ihre Probleme konkret?",
"symptom": "Schwindel",
"answers": [
"Beim Sitzen",
"Beim Gehen",
"Beim Stehen",
"Anders"
]
},
{
"id": 10,
"text": "Seit wann besteht der Kopfschmerz?",
"symptom": "Kopfschmerzen",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 11,
"text": "Sind die Schmerzen plötzlich oder innerhalb sehr kurzer Zeit (d. h. innerhalb einer Minute) aufgetreten?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 12,
"text": "In welchem Bereich des Kopfes?",
"symptom": "Kopfschmerzen",
"answers": [
"Hinterkopf",
"Seite/ Schläfe",
"Stirn/ Auge/ Gesicht",
"Gesamter Kopf"
]
},
{
"id": 13,
"text": "Wie stark sind die Schmerzen?",
"symptom": "Kopfschmerzen",
"answers": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
]
},
{
"id": 14,
"text": "Sind die Schmerzen hinsichtlich Ort ihres Auftretens, ihrer Stärke oder anderweitig anders als Kopfschmerzen, die Sie kennen?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 15,
"text": "Haben Sie Fieber?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja, gemessen und über 38°",
"Ja, gemessen und unter 38°",
"Nein, gemessen und kein Fieber",
"Nein, aber auch nicht gemessen",
"Unsicher, nicht gemessen aber fühle mich fiebrig"
]
},
{
"id": 16,
"text": "Hatten Sie kürzlich eine Kopfverletzung, einen Sturz auf den Kopf oder einen heftigen Anprall?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 17,
"text": "Ging den Kopfschmerzen eine körperliche Anstrengung (inkl. Husten/Niesen/Pressen/schweres Heben) voraus?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 18,
"text": "Haben Sie weitere Beschwerden zusätzlich zu den Kopfschmerzen?",
"symptom": "Kopfschmerzen",
"answers": [
"Ja",
"Nein"
]
},
{
"id": 19,
"text": "Welche der folgenden Beschwerden haben Sie zusätzlich?",
"symptom": "Kopfschmerzen",
"answers": [
"Übelkeit/ Erbrechen",
"Lichtscheu",
"Schmerzen an einer Hals- oder Nackenseite",
"Sprachstörung (z. B. undeutliches „verwaschenes“ Sprechen)",
"Einseitige Schwäche/ Lähmung oder Missempfindung",
"Begleitende Schmerzen im Bereich eines Auges",
"Tränendes Auge oder verstopfte Nase",
"Sehstörung (z. B. Doppelbilder)"
]
},
{
"id": 20,
"text": "Seit wann besteht die Schwäche/Lähmung/ Missempfindung?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Zwischen 1 und 2 Wochen ohne Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 21,
"text": "Welche Beschwerden haben Sie?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Schwäche/Lähmung",
"Taubheit",
"Kribbeln"
]
},
{
"id": 22,
"text": "Wo sind Ihre Beschwerden?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Kopf/Gesicht – einseitig/beidseitig ",
"eine Körperhälfte (rechts/links)",
"eine Gesichtshälfte & eine Köperhälfte",
"beide Beine",
"gesamter Körper ohne Seitenbetonung"
]
},
{
"id": 23,
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?",
"symptom": "Schwäche/ Lähmung",
"answers": [
"Acetylsalicylsäure (ASS) ",
"Marcumar",
"Apixaban (Eliquis)",
"Dabigatran (Pradaxa)",
"Edoxaban (Lixiana)",
"Rivaroxaban (Xarelto)"
]
},
{
"id": 24,
"text": "Seit wann besteht die Sprach-/ Sprechstörung?",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Seit 4 Stunden oder kürzer",
"Zwischen 4 und 24 Stunden",
"Innerhalb der letzten 6 Tage oder länger mit kürzlicher Verschlimmerung",
"Zwischen 1 und 2 Wochen ohne Verschlimmerung",
"Länger ohne kürzliche Verschlimmerung"
]
},
{
"id": 25,
"text": "Welche Aussage beschreibt die Beschwerden am besten?",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Ich kann/konnte nur undeutlich sprechen, mein Gesprächspartner versteht/verstand jedoch den Inhalt des Gesagten.",
"Ich kann/ konnte unverständlich/ nicht verständlich sprechen („Wortsalat“), mein Gesprächspartner hat/hatte Schwierigkeiten, den Inhalt des Gesagten zu verstehen.",
"Das Sprechen fällt/fiel mir schwer, ich muss nach Worten suchen \noder habe Probleme, die Wörter herauszubringen."
]
},
{
"id": 26,
"text": "Haben oder hatten Sie zusätzlich eine oder mehrere der folgenden Beschwerden:",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Einseitige Lähmung/Schwäche ",
"Sehstörung",
"Starke Kopfschmerzen"
]
},
{
"id": 27,
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?",
"symptom": "Sprach-/ Sprechstörung",
"answers": [
"Acetylsalicylsäure (ASS)",
"Marcumar",
"Apixaban (Eliquis)",
"Dabigatran (Pradaxa)",
"Edoxaban (Lixiana)",
"Rivaroxaban (Xarelto)"
]
},
{
"id": 28,
"text": "Heutiges Datum",
"symptom": null,
"answers": ["2022-03-09"]
},
{
"id": 29,
"text": "Wie geht es Ihnen sonst?",
"symptom": null,
"answers": ["Zweiter Fragebogen"]
},
{
"id": 30,
"text": "Ist bei Ihnen eine neurologische Erkrankung bekannt?",
"symptom": null,
"answers": ["Ja", "Nein"]
}
]
}
\ No newline at end of file
{
"authored": "2022-03-09T06:35:13.525000+00:00",
"contained": [
{
"address": [
{
"text": "Fluffstr.24 K\u00f6ln"
}
],
"birthDate": "1911-11-11",
"gender": "male",
"id": "6131dc2e-3b40-4af3-84e8-71591adf6a0a",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "124567"
},
{
"type": {
"text": "Case Number"
},
"value": "0124567"
}
],
"name": [
{
"family": "DangerousZwei",
"given": [
"FluffZwei"
]
}
],
"resourceType": "Patient"
}
],
"id": "e877f95a-df4e-4308-900a-9dd54142afbb",
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "c89b4c3f-221d-406f-9429-517a164b9035"
},
"item": [
{
"answer": [
{
"valueString": "2022-03-09"
}
],
"linkId": "Datum_1",
"text": "Heutiges Datum"
},
{
"answer": [
{
"valueString": "Zweiter Fragebogen"
}
],
"linkId": "Freitext_1",
"text": "Wie geht es Ihnen sonst?"
}
],
"resourceType": "QuestionnaireResponse",
"source": {
"reference": "#6131dc2e-3b40-4af3-84e8-71591adf6a0a"
},
"status": "completed"
}
\ No newline at end of file
{
"authored": "2022-04-14T07:17:20.234000+00:00",
"contained": [
{
"address": [
{
"text": "Fluffstr.24"
}
],
"birthDate": "1901-05-05",
"gender": "female",
"id": "45e62c8c-da69-4345-808f-e179049458e7",
"identifier": [
{
"type": {
"text": "Patient Number"
},
"value": "898888"
},
{
"type": {
"text": "Case Number"
},
"value": "4711111"
}
],
"name": [
{
"family": "Einhorn",
"given": [
"Anneliese"
]
}
],
"resourceType": "Patient"
}
],
"id": "3e86c863-9d61-49d0-93d5-e41578067dfa",
"identifier": {
"type": {
"text": "Questionnaire Id"
},
"value": "425e05b8-2655-4aff-95ac-499bf27c133b"
},
"item": [
{
"answer": [
{
"valueString": "Sprach-/ Sprechst\u00f6rung"
}
],
"linkId": "zna_neuro_frage_1",
"text": "Wegen welcher der folgenden Beschwerden haben Sie heute die Notaufnahme aufgesucht oder wurden von einem Arzt in die Notaufnahme geschickt?"
},
{
"answer": [
{
"valueString": "Zwischen 4 und 24 Stunden"
}
],
"linkId": "zna_neuro_frage_28",
"text": "Seit wann besteht die Sprach-/ Sprechst\u00f6rung?"
},
{
"answer": [
{
"valueString": "Ich kann/ konnte unverst\u00e4ndlich/ nicht verst\u00e4ndlich sprechen (\u201eWortsalat\u201c), mein Gespr\u00e4chspartner hat/hatte Schwierigkeiten, den Inhalt des Gesagten zu verstehen."
}
],
"linkId": "zna_neuro_frage_29",
"text": "Welche Aussage beschreibt die Beschwerden am besten?"
},
{
"answer": [
{
"valueString": "Starke Kopfschmerzen"
}
],
"linkId": "zna_neuro_frage_30",
"text": "Haben oder hatten Sie zus\u00e4tzlich eine oder mehrere der folgenden Beschwerden:"
},
{
"answer": [
{
"valueString": "Acetylsalicyls\u00e4ure (ASS)"
},
{
"valueString": "Marcumar"
},
{
"valueString": "Apixaban (Eliquis)"
},
{
"valueString": "Dabigatran (Pradaxa)"
},
{
"valueString": "Edoxaban (Lixiana)"
},
{
"valueString": "Rivaroxaban (Xarelto)"
}
],
"linkId": "zna_neuro_frage_31",
"text": "Nehmen Sie derzeit eines der folgenden Medikamente ein?"
},
{
"answer": [
{
"valueString": "Nein"
}
],
"linkId": "zna_neuro_frage_53",
"text": "Ist bei Ihnen eine neurologische Erkrankung bekannt?"
}
],
"resourceType": "QuestionnaireResponse",
"source": {
"reference": "#45e62c8c-da69-4345-808f-e179049458e7"
},
"status": "completed"
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.8 (mario)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
PyMySQL==1.0.2
cryptography==37.0.2
pytest==7.1.2
CREATE TABLE IF NOT EXISTS Symptom
(
symptom_id INT NOT NULL AUTO_INCREMENT,
symptom VARCHAR(50) NOT NULL,
symptom_description VARCHAR(100) NOT NULL,
PRIMARY KEY (symptom_id)
);
CREATE TABLE IF NOT EXISTS Patient
(
patient_id INT NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
address VARCHAR(100) NOT NULL,
gender VARCHAR(100) NOT NULL,
birth_date DATE NOT NULL,
PRIMARY KEY (patient_id)
);
# CREATE TABLE IF NOT EXISTS Patient_Symptom
# (
# date DATE NOT NULL,
# patient_id INT NOT NULL,
# symptom_id INT NOT NULL,
# PRIMARY KEY (date, patient_id),
# FOREIGN KEY (patient_id) REFERENCES Patient (patient_id),
# FOREIGN KEY (symptom_id) REFERENCES Symptom (symptom_id)
# );
CREATE TABLE IF NOT EXISTS Question
(
question_id INT NOT NULL AUTO_INCREMENT,
question_text VARCHAR(255) NOT NULL,
PRIMARY KEY (question_id)
);
CREATE TABLE IF NOT EXISTS Symptom_Question
(
symptom_id INT NOT NULL,
question_id INT NOT NULL,
PRIMARY KEY (symptom_id, question_id),
FOREIGN KEY (symptom_id) REFERENCES Symptom (symptom_id),
FOREIGN KEY (question_id) REFERENCES Question (question_id)
);
CREATE TABLE IF NOT EXISTS Answer
(
answer_id INT NOT NULL AUTO_INCREMENT,
answer_text VARCHAR(255) NOT NULL,
PRIMARY KEY (answer_id)
);
CREATE TABLE IF NOT EXISTS Question_Answer
(
question_id INT NOT NULL,
answer_id INT NOT NULL,
PRIMARY KEY (question_id, answer_id),
FOREIGN KEY (question_id) REFERENCES Question (question_id),
FOREIGN KEY (answer_id) REFERENCES Answer (answer_id)
);
CREATE TABLE IF NOT EXISTS Questionnaire
(
questionnaire_id VARCHAR(50),
patient_id INT NOT NULL,
PRIMARY KEY (questionnaire_id),
FOREIGN KEY (patient_id) REFERENCES Patient (patient_id)
);
CREATE TABLE IF NOT EXISTS Questionnaire_Response
(
questionnaire_id VARCHAR(50) NOT NULL,
question_id INT NOT NULL,
answer_id INT NOT NULL,
PRIMARY KEY (questionnaire_id, question_id, answer_id),
FOREIGN KEY (questionnaire_id) REFERENCES Questionnaire (questionnaire_id),
FOREIGN KEY (question_id) REFERENCES Question (question_id),
FOREIGN KEY (answer_id) REFERENCES Answer (answer_id)
);
CREATE TABLE IF NOT EXISTS Waiting_Queue
(
patient_id INT NOT NULL AUTO_INCREMENT,
start_time DATETIME NOT NULL,
end_TIME DATETIME NULL,
PRIMARY KEY (patient_id, start_time),
FOREIGN KEY (patient_id) REFERENCES Patient (patient_id)
);
import json
import pymysql.cursors
def get_query_result(sql, data=None):
with pymysql.connect(host='localhost', user='root', password='test', database='db') as conn:
with conn.cursor() as cursor:
cursor.execute(sql, data)
return cursor.fetchall()
def execute_query(sql, data=None):
with pymysql.connect(host='localhost', user='root', password='test', database='db') as conn:
with conn.cursor() as cursor:
cursor.execute(sql, data)
conn.commit()
def get_questions(path):
with open(path, 'r') as f:
questions_json = json.load(f)
questions = questions_json['questions']
return questions
def create_tables():
with open('../sql/ddl.sql', 'r') as f:
sql = f.read()
for stmt in sql.split(';'):
if stmt.strip():
execute_query(stmt)
def insert_question_answer_data(questions):
inserted_answers = set()
inserted_symptoms = set()
for question in questions:
sql = "INSERT IGNORE INTO `Question` (`question_id`, `question_text`) VALUES (%s, %s)"
execute_query(sql, (question['id'], question['text']))
symptom = question['symptom']
if question['symptom'] not in inserted_symptoms:
inserted_symptoms.add(symptom)
sql = "INSERT IGNORE INTO `Symptom` (`symptom`) VALUES (%s)"
execute_query(sql, (symptom,))
for answer in question['answers']:
if answer not in inserted_answers:
inserted_answers.add(answer)
sql = "INSERT IGNORE INTO `Answer` (`answer_text`) VALUES (%s)"
execute_query(sql, (answer,))
answer_id = get_query_result(f"SELECT * FROM Answer WHERE answer_text = '{answer}'")[0][0]
sql = "INSERT IGNORE INTO `Question_Answer` (`question_id`, `answer_id`) VALUES (%s, %s)"
execute_query(sql, (question['id'], answer_id))
if symptom:
symptom_id = get_query_result(f"SELECT * FROM Symptom WHERE symptom = '{symptom}'")[0][0]
sql = "INSERT IGNORE INTO `Symptom_Question` (`symptom_id`, `question_id`) VALUES (%s, %s)"
execute_query(sql, (symptom_id, question['id']))
def get_questionnaire_responses():
responses = []
with open('../json/response_1.json', 'r') as f:
responses.append(json.load(f))
with open('../json/response_2.json', 'r') as f:
responses.append(json.load(f))
return responses
def insert_patient_data(questionnaire_responses):
for response in questionnaire_responses:
questionnaire_id = None
if response['identifier']['type']['text'] == 'Questionnaire Id':
questionnaire_id = response['identifier']['value']
for patient in response.get('contained', []):
patient_id = None
for identifier in patient['identifier']:
if identifier['type']['text'] == 'Patient Number':
patient_id = identifier['value']
sql = "INSERT IGNORE INTO `Patient` (`patient_id`, `first_name`, `last_name`, `address`, `gender`, `birth_date`) VALUES (%s, %s, %s, %s, %s, %s)"
execute_query(sql, (patient_id, patient['name'][0]['given'], patient['name'][0]['family'],
patient['address'][0]['text'], patient['gender'], patient['birthDate']))
sql = "INSERT IGNORE INTO `Questionnaire` (`questionnaire_id`, `patient_id`) VALUES (%s, %s)"
execute_query(sql, (questionnaire_id, patient_id))
for item in response.get('item', []):
question_text = item['text']
question_id = get_query_result(f"SELECT * FROM Question WHERE question_text = '{question_text}'")[0][0]
for answer in item['answer']:
answer_text = answer['valueString']
answer_id = get_query_result(f"SELECT * FROM Answer WHERE answer_text = '{answer_text}'")[0][0]
sql = "INSERT IGNORE INTO `Questionnaire_Response` (`questionnaire_id`, `question_id`, `answer_id`) VALUES (%s, %s, %s)"
execute_query(sql, (questionnaire_id, question_id, answer_id))
def main():
create_tables()
questions = get_questions('../json/questions.json')
insert_question_answer_data(questions)
questionnaire_responses = get_questionnaire_responses()
insert_patient_data(questionnaire_responses)
if __name__ == '__main__':
main()
import pytest
import main
import pymysql.cursors
def get_query_result(sql, data=None):
with pymysql.connect(host='localhost', user='root', password='test', database='db') as conn:
with conn.cursor() as cursor:
cursor.execute(sql, data)
return cursor.fetchall()
def test_empty_questions_array():
"""Tests behavior of question parser function when input is empty"""
questions = main.get_questions('../json/questions_empty.json')
assert len(questions) == 0
def test_all_tables_created():
"""Tests if all tables from ddl.sql file are created successfully"""
main.create_tables()
table_count = get_query_result('SHOW TABLES IN db')[0][0]
assert table_count == 10
def test_question_answer_data_inserted():
"""Tests if question and answer data are inserted into the DB"""
main.create_tables()
questions = main.get_questions('../json/questions_empty.json')
main.insert_question_answer_data(questions)
question_count = get_query_result('SELECT COUNT(*) FROM Question')[0][0]
assert question_count > 0
answer_count = get_query_result('SELECT COUNT(*) FROM Answer')[0][0]
assert answer_count > 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment