diff --git a/NTO/Healthcare/entities/Diagnosis.ttl b/NTO/Healthcare/entities/Diagnosis.ttl
new file mode 100644
index 0000000000..3186549174
--- /dev/null
+++ b/NTO/Healthcare/entities/Diagnosis.ttl
@@ -0,0 +1,95 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:Diagnosis
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "Diagnosis";
+ dcterms:description "A clinical diagnosis attached to a patient (and optionally a visit). Carries ICD code, free-text diagnosis description, leading-diagnosis and chronic flags. Source-of-truth: pf_diagnosis (17 cols).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:fileIcd
+ ogit.Healthcare:fileDiag
+ ogit.Healthcare:fileText
+ ogit.Healthcare:createDate
+ ogit.Healthcare:dbSpezId
+ ogit.Healthcare:fileLd
+ ogit.Healthcare:fileKd
+ ogit.Healthcare:fileDate
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:fileIcd
+ ogit.Healthcare:createDate
+ ogit.Healthcare:fileLd
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ [ ogit:relates ogit.Healthcare:Visit ]
+ );
+.
+
+ogit.Healthcare:fileIcd
+ a ogit:Property;
+ rdfs:label "fileIcd";
+ dcterms:description "ICD-10 code for the diagnosis (pf_diagnosis.file_icd).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_icd";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:fileDiag
+ a ogit:Property;
+ rdfs:label "fileDiag";
+ dcterms:description "Short diagnosis label (pf_diagnosis.file_diag).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_diag";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:fileText
+ a ogit:Property;
+ rdfs:label "fileText";
+ dcterms:description "Free-text clinical description (pf_diagnosis.file_Text).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_Text";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:createDate
+ a ogit:Property;
+ rdfs:label "createDate";
+ dcterms:description "Entry creation timestamp (pf_diagnosis.d_createdate).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.d_createdate";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:dbSpezId
+ a ogit:Property;
+ rdfs:label "dbSpezId";
+ dcterms:description "Specialty FK -> combo_spez.id (pf_diagnosis.db_spezid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.db_spezid";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:fileLd
+ a ogit:Property;
+ rdfs:label "fileLd";
+ dcterms:description "Leading-diagnosis flag (pf_diagnosis.file_ld).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_ld";
+ ogit:type "xsd:boolean" .
+
+ogit.Healthcare:fileKd
+ a ogit:Property;
+ rdfs:label "fileKd";
+ dcterms:description "Chronic-diagnosis flag (pf_diagnosis.file_kd).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_kd";
+ ogit:type "xsd:boolean" .
+
+ogit.Healthcare:fileDate
+ a ogit:Property;
+ rdfs:label "fileDate";
+ dcterms:description "Clinical event date the diagnosis refers to (pf_diagnosis.file_date).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_diagnosis.file_date";
+ ogit:type "xsd:dateTime" .
diff --git a/NTO/Healthcare/entities/LabValue.ttl b/NTO/Healthcare/entities/LabValue.ttl
new file mode 100644
index 0000000000..d2e2cc63bb
--- /dev/null
+++ b/NTO/Healthcare/entities/LabValue.ttl
@@ -0,0 +1,62 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:LabValue
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "LabValue";
+ dcterms:description "A laboratory measurement for a patient. LOINC-coded test (loincid) with a numeric value (werte) and lab-internal id. Source-of-truth: pf_laboratory_values (9 cols).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_laboratory_values";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:createDate
+ ogit.Healthcare:labId
+ ogit.Healthcare:loincId
+ ogit.Healthcare:werte
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:createDate
+ ogit.Healthcare:loincId
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ [ ogit:relates ogit.Healthcare:loincRef ]
+ );
+.
+
+ogit.Healthcare:labId
+ a ogit:Property;
+ rdfs:label "labId";
+ dcterms:description "Laboratory FK / partner identifier (pf_laboratory_values.labid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_laboratory_values.labid";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:loincId
+ a ogit:Property;
+ rdfs:label "loincId";
+ dcterms:description "LOINC reference code identifier (pf_laboratory_values.loincid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_laboratory_values.loincid";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:werte
+ a ogit:Property;
+ rdfs:label "werte";
+ dcterms:description "Numeric measured value (pf_laboratory_values.werte).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_laboratory_values.werte";
+ ogit:type "xsd:float" .
+
+ogit.Healthcare:loincRef
+ a ogit:Property;
+ rdfs:label "loincRef";
+ dcterms:description "Out-of-namespace reference to LOINC concept. Carried as a property reference rather than an in-namespace entity since LOINC is governed externally.";
+ dcterms:source "loinc:";
+ ogit:type "xsd:anyURI" .
diff --git a/NTO/Healthcare/entities/Medication.ttl b/NTO/Healthcare/entities/Medication.ttl
new file mode 100644
index 0000000000..f27b605fc7
--- /dev/null
+++ b/NTO/Healthcare/entities/Medication.ttl
@@ -0,0 +1,124 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:Medication
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "Medication";
+ dcterms:description "A prescribed / dispensed medication for a patient. Carries product id, dose, interval, daily dose, dose unit, stop reason, start/stop dates. Source-of-truth: pat_medication (25 cols).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:filePraepId
+ ogit.Healthcare:fileMedicineName
+ ogit.Healthcare:fileMedicineDose
+ ogit.Healthcare:fileMedicineTyp
+ ogit.Healthcare:fileStart
+ ogit.Healthcare:fileStop
+ ogit.Healthcare:fileNotice
+ ogit.Healthcare:medicationInterval
+ ogit.Healthcare:medicationDailyDose
+ ogit.Healthcare:medicationStopReason
+ ogit.Healthcare:medicationDoseUnit
+ ogit.Healthcare:dbSourceDb
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:filePraepId
+ ogit.Healthcare:fileMedicineName
+ ogit.Healthcare:fileStart
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ [ ogit:relates ogit.Healthcare:combo_medication_typ ]
+ [ ogit:relates ogit.Healthcare:combo_medication_interval ]
+ [ ogit:relates ogit.Healthcare:combo_medication_dailydose ]
+ [ ogit:relates ogit.Healthcare:combo_medication_dose_unit ]
+ [ ogit:relates ogit.Healthcare:combo_medication_stop_reason ]
+ );
+.
+
+ogit.Healthcare:filePraepId
+ a ogit:Property;
+ rdfs:label "filePraepId";
+ dcterms:description "Drug-product identifier in the medicines master (pat_medication.file_praepid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_praepid";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:fileMedicineName
+ a ogit:Property;
+ rdfs:label "fileMedicineName";
+ dcterms:description "Trade / display name of the medicine (pat_medication.file_medicine_name).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_medicine_name";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:fileMedicineDose
+ a ogit:Property;
+ rdfs:label "fileMedicineDose";
+ dcterms:description "Numeric per-administration dose (pat_medication.file_medicine_dose).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_medicine_dose";
+ ogit:type "xsd:float" .
+
+ogit.Healthcare:fileMedicineTyp
+ a ogit:Property;
+ rdfs:label "fileMedicineTyp";
+ dcterms:description "Medicine type FK -> combo_medication_typ.id (pat_medication.file_medicine_typ).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_medicine_typ";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:fileStart
+ a ogit:Property;
+ rdfs:label "fileStart";
+ dcterms:description "Treatment start date (pat_medication.file_start).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_start";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:fileStop
+ a ogit:Property;
+ rdfs:label "fileStop";
+ dcterms:description "Treatment stop date (pat_medication.file_stop).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_stop";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:fileNotice
+ a ogit:Property;
+ rdfs:label "fileNotice";
+ dcterms:description "Free-text notice attached to the prescription (pat_medication.file_notice).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.file_notice";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:medicationInterval
+ a ogit:Property;
+ rdfs:label "medicationInterval";
+ dcterms:description "Interval-of-administration FK -> combo_medication_interval.id (pat_medication.pf_medication_interval).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.pf_medication_interval";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:medicationDailyDose
+ a ogit:Property;
+ rdfs:label "medicationDailyDose";
+ dcterms:description "Daily-dose FK -> combo_medication_dailydose.id (pat_medication.pf_medication_dailydose).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.pf_medication_dailydose";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:medicationStopReason
+ a ogit:Property;
+ rdfs:label "medicationStopReason";
+ dcterms:description "Stop-reason FK -> combo_medication_stop_reason.id (pat_medication.pf_medication_stop_reason).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.pf_medication_stop_reason";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:medicationDoseUnit
+ a ogit:Property;
+ rdfs:label "medicationDoseUnit";
+ dcterms:description "Dose-unit FK -> combo_medication_dose_unit.id (pat_medication.pf_medication_dose_unit).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pat_medication.pf_medication_dose_unit";
+ ogit:type "xsd:integer" .
diff --git a/NTO/Healthcare/entities/Patient.ttl b/NTO/Healthcare/entities/Patient.ttl
new file mode 100644
index 0000000000..93d94b6ed8
--- /dev/null
+++ b/NTO/Healthcare/entities/Patient.ttl
@@ -0,0 +1,166 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:Patient
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "Patient";
+ dcterms:description "A patient record in a clinical practice. Identified by an internal id, scoped to a tenant (clinic), with demographic, contact, and specialty fields. Source-of-truth: praxis_patient (30 cols).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:firstname
+ ogit.Healthcare:lastname
+ ogit.Healthcare:birth
+ ogit.Healthcare:sexm
+ ogit.Healthcare:sexf
+ ogit.Healthcare:sexd
+ ogit.Healthcare:ethnic
+ ogit.Healthcare:mail
+ ogit.Healthcare:mobil
+ ogit.Healthcare:country
+ ogit.Healthcare:zip
+ ogit.Healthcare:place
+ ogit.Healthcare:street
+ ogit.Healthcare:spez
+ ogit.Healthcare:title1
+ ogit.Healthcare:title2
+ ogit.Healthcare:anomize
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:lastname
+ ogit.Healthcare:birth
+ ogit.Healthcare:mail
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit:Tenant ]
+ );
+.
+
+ogit.Healthcare:firstname
+ a ogit:Property;
+ rdfs:label "firstname";
+ dcterms:description "Patient given name (praxis_patient.p_firstname).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_firstname";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:lastname
+ a ogit:Property;
+ rdfs:label "lastname";
+ dcterms:description "Patient family name (praxis_patient.p_lastname).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_lastname";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:birth
+ a ogit:Property;
+ rdfs:label "birth";
+ dcterms:description "Patient date of birth (praxis_patient.p_birth).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_birth";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:sexm
+ a ogit:Property;
+ rdfs:label "sexm";
+ dcterms:description "Boolean: patient identifies as male (praxis_patient.p_sexm).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_sexm";
+ ogit:type "xsd:boolean" .
+
+ogit.Healthcare:sexf
+ a ogit:Property;
+ rdfs:label "sexf";
+ dcterms:description "Boolean: patient identifies as female (praxis_patient.p_sexf).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_sexf";
+ ogit:type "xsd:boolean" .
+
+ogit.Healthcare:sexd
+ a ogit:Property;
+ rdfs:label "sexd";
+ dcterms:description "Boolean: patient identifies as diverse (praxis_patient.p_sexd).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_sexd";
+ ogit:type "xsd:boolean" .
+
+ogit.Healthcare:ethnic
+ a ogit:Property;
+ rdfs:label "ethnic";
+ dcterms:description "Self-declared ethnicity (praxis_patient.p_ethnic).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_ethnic";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:mail
+ a ogit:Property;
+ rdfs:label "mail";
+ dcterms:description "Patient email (praxis_patient.p_mail).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_mail";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:mobil
+ a ogit:Property;
+ rdfs:label "mobil";
+ dcterms:description "Patient mobile phone (praxis_patient.p_mobil).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_mobil";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:country
+ a ogit:Property;
+ rdfs:label "country";
+ dcterms:description "Patient country (praxis_patient.p_country).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_country";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:zip
+ a ogit:Property;
+ rdfs:label "zip";
+ dcterms:description "Postal code (praxis_patient.p_zip).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_zip";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:place
+ a ogit:Property;
+ rdfs:label "place";
+ dcterms:description "City / place of residence (praxis_patient.p_place).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_place";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:street
+ a ogit:Property;
+ rdfs:label "street";
+ dcterms:description "Street address (praxis_patient.p_street).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_street";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:spez
+ a ogit:Property;
+ rdfs:label "spez";
+ dcterms:description "Specialty / profile assigned to the patient (praxis_patient.p_spez).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_spez";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:title1
+ a ogit:Property;
+ rdfs:label "title1";
+ dcterms:description "Honorific title (praxis_patient.p_title1).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_title1";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:title2
+ a ogit:Property;
+ rdfs:label "title2";
+ dcterms:description "Academic title (praxis_patient.p_title2).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_title2";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:anomize
+ a ogit:Property;
+ rdfs:label "anomize";
+ dcterms:description "Anonymisation flag for research export (praxis_patient.p_anomize).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient.p_anomize";
+ ogit:type "xsd:boolean" .
diff --git a/NTO/Healthcare/entities/Treatment.ttl b/NTO/Healthcare/entities/Treatment.ttl
new file mode 100644
index 0000000000..2379c82542
--- /dev/null
+++ b/NTO/Healthcare/entities/Treatment.ttl
@@ -0,0 +1,57 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:Treatment
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "Treatment";
+ dcterms:description "A therapy / treatment record attached to a patient. Free-text-driven (keyword + Text), provenance-aware (db_sourcedb). Source-of-truth: pf_therapy (16 cols).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_therapy";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:fileKeyword
+ ogit.Healthcare:fileText
+ ogit.Healthcare:createDate
+ ogit.Healthcare:fileDate
+ ogit.Healthcare:dbSpezId
+ ogit.Healthcare:dbSourceDb
+ ogit.Healthcare:dbSourceId
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:fileKeyword
+ ogit.Healthcare:createDate
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ );
+.
+
+ogit.Healthcare:fileKeyword
+ a ogit:Property;
+ rdfs:label "fileKeyword";
+ dcterms:description "Therapy keyword / short label (pf_therapy.file_keyword).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_therapy.file_keyword";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:dbSourceDb
+ a ogit:Property;
+ rdfs:label "dbSourceDb";
+ dcterms:description "Provenance: name of the source database the row was imported from (pf_therapy.db_sourcedb).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_therapy.db_sourcedb";
+ ogit:type "xsd:string" .
+
+ogit.Healthcare:dbSourceId
+ a ogit:Property;
+ rdfs:label "dbSourceId";
+ dcterms:description "Provenance: row id in the source database (pf_therapy.db_sourceid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_therapy.db_sourceid";
+ ogit:type "xsd:integer" .
diff --git a/NTO/Healthcare/entities/Visit.ttl b/NTO/Healthcare/entities/Visit.ttl
new file mode 100644
index 0000000000..acb5afaa6d
--- /dev/null
+++ b/NTO/Healthcare/entities/Visit.ttl
@@ -0,0 +1,86 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:Visit
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "Visit";
+ dcterms:description "A patient visit / waiting-room session — login, doctor assignment, priority, time-in-waiting and logout. Source-of-truth: praxis_patient_waitingroom.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:waitingroomId
+ ogit.Healthcare:toDocId
+ ogit.Healthcare:loginAt
+ ogit.Healthcare:logoutAt
+ ogit.Healthcare:timeInWaiting
+ ogit.Healthcare:priority
+ ogit.Healthcare:noticeForDoc
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:loginAt
+ ogit.Healthcare:toDocId
+ ogit.Healthcare:priority
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ );
+.
+
+ogit.Healthcare:waitingroomId
+ a ogit:Property;
+ rdfs:label "waitingroomId";
+ dcterms:description "FK to praxis_waitingroom (praxis_patient_waitingroom.praxis_waitingroomid).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.praxis_waitingroomid";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:toDocId
+ a ogit:Property;
+ rdfs:label "toDocId";
+ dcterms:description "Doctor assigned to handle the visit (praxis_patient_waitingroom.p_to_doc_id).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_to_doc_id";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:loginAt
+ a ogit:Property;
+ rdfs:label "loginAt";
+ dcterms:description "Patient login time into waiting room (praxis_patient_waitingroom.p_login).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_login";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:logoutAt
+ a ogit:Property;
+ rdfs:label "logoutAt";
+ dcterms:description "Patient logout / visit-end time (praxis_patient_waitingroom.p_logout).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_logout";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:timeInWaiting
+ a ogit:Property;
+ rdfs:label "timeInWaiting";
+ dcterms:description "Computed waiting duration in minutes (praxis_patient_waitingroom.p_time_in_waiting).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_time_in_waiting";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:priority
+ a ogit:Property;
+ rdfs:label "priority";
+ dcterms:description "Visit triage priority (praxis_patient_waitingroom.p_priority).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_priority";
+ ogit:type "xsd:integer" .
+
+ogit.Healthcare:noticeForDoc
+ a ogit:Property;
+ rdfs:label "noticeForDoc";
+ dcterms:description "Free-text reception notice for the doctor (praxis_patient_waitingroom.p_notice_for_doc).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:praxis_patient_waitingroom.p_notice_for_doc";
+ ogit:type "xsd:string" .
diff --git a/NTO/Healthcare/entities/VitalSign.ttl b/NTO/Healthcare/entities/VitalSign.ttl
new file mode 100644
index 0000000000..4e0c944535
--- /dev/null
+++ b/NTO/Healthcare/entities/VitalSign.ttl
@@ -0,0 +1,60 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:VitalSign
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Entity;
+ rdfs:label "VitalSign";
+ dcterms:description "A patient vital-sign measurement. Modelled here as the base class for the pf_vital_* family — the canonical / minimal source-of-truth is pf_vital_bloodpressure (id, pid, datum, sys, dia, pulse). Subclasses (pf_vital_dynmodule, pf_vital_temperature, etc.) extend with module-specific columns.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_vital_bloodpressure";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ );
+ ogit:optional-attributes (
+ ogit.Healthcare:datum
+ ogit.Healthcare:bloodPressureSystolic
+ ogit.Healthcare:bloodPressureDiastolic
+ ogit.Healthcare:pulse
+ );
+ ogit:indexed-attributes (
+ ogit.Healthcare:datum
+ );
+ ogit:allowed (
+ [ ogit:belongs ogit.Healthcare:Patient ]
+ );
+.
+
+ogit.Healthcare:datum
+ a ogit:Property;
+ rdfs:label "datum";
+ dcterms:description "Measurement timestamp (pf_vital_bloodpressure.datum).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_vital_bloodpressure.datum";
+ ogit:type "xsd:dateTime" .
+
+ogit.Healthcare:bloodPressureSystolic
+ a ogit:Property;
+ rdfs:label "bloodPressureSystolic";
+ dcterms:description "Systolic blood pressure in mmHg (pf_vital_bloodpressure.sys).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_vital_bloodpressure.sys";
+ ogit:type "xsd:float" .
+
+ogit.Healthcare:bloodPressureDiastolic
+ a ogit:Property;
+ rdfs:label "bloodPressureDiastolic";
+ dcterms:description "Diastolic blood pressure in mmHg (pf_vital_bloodpressure.dia).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_vital_bloodpressure.dia";
+ ogit:type "xsd:float" .
+
+ogit.Healthcare:pulse
+ a ogit:Property;
+ rdfs:label "pulse";
+ dcterms:description "Pulse rate (bpm) (pf_vital_bloodpressure.pulse).";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:pf_vital_bloodpressure.pulse";
+ ogit:type "xsd:float" .
diff --git a/NTO/Healthcare/enumerations/combo_addtreatment.ttl b/NTO/Healthcare/enumerations/combo_addtreatment.ttl
new file mode 100644
index 0000000000..f7b7eb15e6
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_addtreatment.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_addtreatment
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_addtreatment";
+ dcterms:description "Enumeration of additional-treatment categories attached to a clinical record. Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_addtreatment";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_medication_dailydose.ttl b/NTO/Healthcare/enumerations/combo_medication_dailydose.ttl
new file mode 100644
index 0000000000..27a37ae8cf
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_medication_dailydose.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_medication_dailydose
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_medication_dailydose";
+ dcterms:description "Enumeration of medication daily-dose patterns. Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_medication_dailydose";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_medication_dose_unit.ttl b/NTO/Healthcare/enumerations/combo_medication_dose_unit.ttl
new file mode 100644
index 0000000000..b2b4e57c97
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_medication_dose_unit.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_medication_dose_unit
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_medication_dose_unit";
+ dcterms:description "Enumeration of medication dose units (mg, ml, IU, etc.). Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_medication_dose_unit";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_medication_interval.ttl b/NTO/Healthcare/enumerations/combo_medication_interval.ttl
new file mode 100644
index 0000000000..57e7d33ae8
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_medication_interval.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_medication_interval
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_medication_interval";
+ dcterms:description "Enumeration of medication administration intervals (e.g. once-a-day, twice-a-day, weekly). Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_medication_interval";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_medication_stop_reason.ttl b/NTO/Healthcare/enumerations/combo_medication_stop_reason.ttl
new file mode 100644
index 0000000000..d787d1dc6c
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_medication_stop_reason.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_medication_stop_reason
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_medication_stop_reason";
+ dcterms:description "Enumeration of reasons for stopping a medication (cured, side-effect, replaced, etc.). Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_medication_stop_reason";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_medication_typ.ttl b/NTO/Healthcare/enumerations/combo_medication_typ.ttl
new file mode 100644
index 0000000000..ccbab9fcac
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_medication_typ.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_medication_typ
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_medication_typ";
+ dcterms:description "Enumeration of medication types (oral / IV / topical / etc.). Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_medication_typ";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/Healthcare/enumerations/combo_spez.ttl b/NTO/Healthcare/enumerations/combo_spez.ttl
new file mode 100644
index 0000000000..9880edf7d3
--- /dev/null
+++ b/NTO/Healthcare/enumerations/combo_spez.ttl
@@ -0,0 +1,28 @@
+@prefix ogit: .
+@prefix ogit.Healthcare: .
+@prefix owl: .
+@prefix rdfs: .
+@prefix dcterms: .
+@prefix xsd: .
+
+ogit.Healthcare:combo_spez
+ a rdfs:Class;
+ rdfs:subClassOf ogit:Enumeration;
+ rdfs:label "combo_spez";
+ dcterms:description "Enumeration of medical specialties / Fachrichtungen used to scope diagnoses, therapies and patient profiles. Values populated as a follow-on import from MedCare-rs.";
+ dcterms:source "AdaWorldAPI/MedCare-rs/.MYSQL/Struktur.sql:combo_spez";
+ dcterms:creator "claude-ogit-bootstrap";
+ ogit:scope "NTO";
+ ogit:parent ogit:Node;
+ ogit:mandatory-attributes (
+ ogit:id
+ ogit:name
+ );
+ ogit:optional-attributes (
+ );
+ ogit:indexed-attributes (
+ ogit:name
+ );
+ ogit:allowed (
+ );
+.
diff --git a/NTO/WorkOrder/entities/Article.ttl b/NTO/WorkOrder/entities/Article.ttl
index 294057c936..2e7b3cdaa3 100644
--- a/NTO/WorkOrder/entities/Article.ttl
+++ b/NTO/WorkOrder/entities/Article.ttl
@@ -21,6 +21,7 @@ ogit.WorkOrder:Article
ogit.WorkOrder:ekPreis
ogit.WorkOrder:mwstSatz
ogit.WorkOrder:lieferant
+ ogit.WorkOrder:lieferantAnr
ogit.WorkOrder:aktiv
);
ogit:indexed-attributes (
@@ -75,3 +76,17 @@ ogit.WorkOrder:lieferant
dcterms:description "Supplier name (Lieferant) the article is normally sourced from. Free-form string; not a relation to a separate Supplier class in the current source.";
dcterms:source "AdaWorldAPI/WoA/models.py:Article.lieferant";
.
+
+ogit.WorkOrder:lieferantAnr
+ a rdfs:Property;
+ rdfs:label "lieferantAnr";
+ dcterms:description "Supplier-side article number (Lieferanten-Artikelnummer). Used when reordering: the artikelnr is the tenant-local code, lieferantAnr is the SKU at the supplier.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Article.lieferant_anr";
+.
+
+ogit.WorkOrder:aktiv
+ a rdfs:Property;
+ rdfs:label "aktiv";
+ dcterms:description "Active flag (aktiv). Boolean; false hides the article from the new-position picker without deleting historical references. Default true.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Article.aktiv";
+.
diff --git a/NTO/WorkOrder/entities/Customer.ttl b/NTO/WorkOrder/entities/Customer.ttl
index b97a827c82..4785542a16 100644
--- a/NTO/WorkOrder/entities/Customer.ttl
+++ b/NTO/WorkOrder/entities/Customer.ttl
@@ -17,17 +17,25 @@ ogit.WorkOrder:Customer
ogit:optional-attributes (
ogit.WorkOrder:kdnr
ogit.WorkOrder:firma
+ ogit.WorkOrder:anrede
ogit.WorkOrder:vorname
ogit.WorkOrder:nachname
+ ogit.WorkOrder:mailAnrede
ogit:email
ogit.WorkOrder:telefon
ogit.WorkOrder:strasse
+ ogit.WorkOrder:adresszusatz
ogit.WorkOrder:plz
ogit.WorkOrder:ort
ogit.WorkOrder:iban
ogit.WorkOrder:taxId
ogit.WorkOrder:zahlungsziel
ogit.WorkOrder:stundensatz
+ ogit.WorkOrder:fahrtKm
+ ogit.WorkOrder:fahrtKosten
+ ogit.WorkOrder:notizen
+ ogit.WorkOrder:aktiv
+ ogit.WorkOrder:createdAt
);
ogit:indexed-attributes (
ogit:id
@@ -124,3 +132,59 @@ ogit.WorkOrder:stundensatz
dcterms:description "Hourly rate (Stundensatz) in the tenant's currency, used by labour line items. Float, default 60.0.";
dcterms:source "AdaWorldAPI/WoA/models.py:Customer.stundensatz";
.
+
+ogit.WorkOrder:anrede
+ a rdfs:Property;
+ rdfs:label "anrede";
+ dcterms:description "Form of address (Anrede). One of: Herr, Frau, Firma. Drives salutation rendering on the document.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.anrede";
+.
+
+ogit.WorkOrder:mailAnrede
+ a rdfs:Property;
+ rdfs:label "mailAnrede";
+ dcterms:description "Email salutation override (mail_anrede). Free-text override for the opening line of automated mails (e.g. 'Sehr geehrte Frau Mueller'). When empty, derived from anrede + nachname.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.mail_anrede";
+.
+
+ogit.WorkOrder:adresszusatz
+ a rdfs:Property;
+ rdfs:label "adresszusatz";
+ dcterms:description "Address line 2 (Adresszusatz). Optional second address line for c/o, building, suite, etc.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.adresszusatz";
+.
+
+ogit.WorkOrder:fahrtKm
+ a rdfs:Property;
+ rdfs:label "fahrtKm";
+ dcterms:description "One-way travel distance in kilometres (Fahrt km). Multiplied by Order.anfahrten and fahrtKosten to compute the trip-cost line item.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.fahrt_km";
+.
+
+ogit.WorkOrder:fahrtKosten
+ a rdfs:Property;
+ rdfs:label "fahrtKosten";
+ dcterms:description "Per-kilometre travel cost in the tenant's currency (Fahrt Kosten). Float; default 0.0. Used together with fahrtKm and Order.anfahrten to compute trip-cost line items.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.fahrt_kosten";
+.
+
+ogit.WorkOrder:notizen
+ a rdfs:Property;
+ rdfs:label "notizen";
+ dcterms:description "Free-text customer notes (Notizen). Internal-only; not printed on customer-facing documents. Distinct from Order.notizen which is per-order.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.notizen";
+.
+
+ogit.WorkOrder:aktiv
+ a rdfs:Property;
+ rdfs:label "aktiv";
+ dcterms:description "Active flag (aktiv). Boolean; false marks the customer as archived. The Python views filter on aktiv = true for the default customer list.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.aktiv";
+.
+
+ogit.WorkOrder:createdAt
+ a rdfs:Property;
+ rdfs:label "createdAt";
+ dcterms:description "Customer row creation timestamp. ISO-8601, set on first insert. Mirrors the global ogit:created-at semantically; declared workspace-scoped to keep the projection consistent across WoA entities.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:Customer.created_at";
+.
diff --git a/NTO/WorkOrder/entities/Order.ttl b/NTO/WorkOrder/entities/Order.ttl
index 9d86a91edb..0422834d58 100644
--- a/NTO/WorkOrder/entities/Order.ttl
+++ b/NTO/WorkOrder/entities/Order.ttl
@@ -24,6 +24,20 @@ ogit.WorkOrder:Order
ogit.WorkOrder:mwstBetrag
ogit.WorkOrder:bruttoSumme
ogit.WorkOrder:bezahlt
+ ogit.WorkOrder:zeitStart
+ ogit.WorkOrder:zeitEnde
+ ogit.WorkOrder:anfahrten
+ ogit.WorkOrder:mitarbeiter
+ ogit.WorkOrder:pauseStunden
+ ogit.WorkOrder:zusatzStunden
+ ogit.WorkOrder:notizen
+ ogit.WorkOrder:internNotizen
+ ogit.WorkOrder:bezahltAm
+ ogit.WorkOrder:mahnstufe
+ ogit.WorkOrder:letzteMahnung
+ ogit.WorkOrder:unterschrift
+ ogit.WorkOrder:createdAt
+ ogit.WorkOrder:updatedAt
);
ogit:indexed-attributes (
ogit:id
@@ -95,3 +109,101 @@ ogit.WorkOrder:bezahlt
dcterms:description "Payment-received flag. Boolean; true once the order has been settled by the customer.";
dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.bezahlt";
.
+
+ogit.WorkOrder:zeitStart
+ a rdfs:Property;
+ rdfs:label "zeitStart";
+ dcterms:description "Engagement start (Zeit Start). Begin of the on-site / labour window for this Order; ISO-8601 timestamp.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.zeit_start";
+.
+
+ogit.WorkOrder:zeitEnde
+ a rdfs:Property;
+ rdfs:label "zeitEnde";
+ dcterms:description "Engagement end (Zeit Ende). End of the on-site / labour window for this Order; ISO-8601 timestamp.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.zeit_ende";
+.
+
+ogit.WorkOrder:anfahrten
+ a rdfs:Property;
+ rdfs:label "anfahrten";
+ dcterms:description "Number of approach trips (Anfahrten) charged to the Order. Integer count used by the trip-cost derivation against Customer.fahrtKm / fahrtKosten.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.anfahrten";
+.
+
+ogit.WorkOrder:mitarbeiter
+ a rdfs:Property;
+ rdfs:label "mitarbeiter";
+ dcterms:description "Crew on site (Mitarbeiter). Free-form short label or comma-separated names; the Python source keeps it as a string column rather than a User-relation join because crew composition is often informal.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.mitarbeiter";
+.
+
+ogit.WorkOrder:pauseStunden
+ a rdfs:Property;
+ rdfs:label "pauseStunden";
+ dcterms:description "Break time in hours (Pause). Subtracted from (zeitEnde - zeitStart) when the labour total is computed.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.pause_h";
+.
+
+ogit.WorkOrder:zusatzStunden
+ a rdfs:Property;
+ rdfs:label "zusatzStunden";
+ dcterms:description "Extra hours (Zusatzstunden) added on top of the (zeitEnde - zeitStart - pauseStunden) computation. Used for after-hours work or punch-list additions.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.zusatz_h";
+.
+
+ogit.WorkOrder:notizen
+ a rdfs:Property;
+ rdfs:label "notizen";
+ dcterms:description "Customer-facing notes (Notizen). Free-text block printed on the document below the position list.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.notizen";
+.
+
+ogit.WorkOrder:internNotizen
+ a rdfs:Property;
+ rdfs:label "internNotizen";
+ dcterms:description "Internal notes (interne Notizen). Free-text block visible only to staff; never printed on the customer-facing document.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.intern_notizen";
+.
+
+ogit.WorkOrder:bezahltAm
+ a rdfs:Property;
+ rdfs:label "bezahltAm";
+ dcterms:description "Payment date (bezahlt am). ISO-8601 date set when the bezahlt flag is flipped from false to true. Drives the close-of-books reconciliation.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.bezahlt_am";
+.
+
+ogit.WorkOrder:mahnstufe
+ a rdfs:Property;
+ rdfs:label "mahnstufe";
+ dcterms:description "Dunning level (Mahnstufe). Integer 0-3: 0 = nothing sent, 1-3 = three escalation tiers per the Mahnwesen workflow.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.mahnstufe";
+.
+
+ogit.WorkOrder:letzteMahnung
+ a rdfs:Property;
+ rdfs:label "letzteMahnung";
+ dcterms:description "Date of the most recent dunning notice (letzte Mahnung). ISO-8601 date, advanced when mahnstufe is incremented.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.letzte_mahnung";
+.
+
+ogit.WorkOrder:unterschrift
+ a rdfs:Property;
+ rdfs:label "unterschrift";
+ dcterms:description "Customer signature blob (Unterschrift). Base64-encoded bitmap captured at on-site checkout; not printed in PDF rendering by default.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.unterschrift";
+.
+
+ogit.WorkOrder:createdAt
+ a rdfs:Property;
+ rdfs:label "createdAt";
+ dcterms:description "Order row creation timestamp. ISO-8601, set on first insert. Distinct from datum (the document's effective date).";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.created_at";
+.
+
+ogit.WorkOrder:updatedAt
+ a rdfs:Property;
+ rdfs:label "updatedAt";
+ dcterms:description "Order row last-modified timestamp. ISO-8601, advanced on every UPDATE. Distinct from datum and bezahltAm.";
+ dcterms:source "AdaWorldAPI/WoA/models.py:WorkOrder.updated_at";
+.