diff --git a/forms/dnpm-formulare.osc b/forms/dnpm-formulare.osc index fc4510b..31a4c3b 100644 --- a/forms/dnpm-formulare.osc +++ b/forms/dnpm-formulare.osc @@ -1,7 +1,7 @@ - 2023-09-25Z + 2023-09-26Z OnkoStar 2.11.1.6 @@ -6309,11 +6309,11 @@ true 20119 - d2689561-8119-4907-b2e3-ce63e5fafef0 - 225 + 21334cad-91c9-4817-9cba-550b544cd71a + 226 true - + datefield AnmeldedatumMTB Anmeldedatum für das MTB @@ -6374,12 +6374,12 @@ false 0 20119 - a73e3f8e-6681-496b-a6de-7a8a35a98d1c + f04e7767-885d-43bf-ab0f-11a665ac6635 5 false false - + combobox AnsprechenLetzteLinie Ansprechen @@ -6440,12 +6440,12 @@ false 0 20119 - dd386d81-4c41-4ecc-bde4-61bac1e46e68 + 9bbcd7c3-649a-4a0c-9771-7a5d312126fa 9 false false - + textfield AnzahlTherapielinien Anzahl durchlaufener Therapielinien @@ -6503,12 +6503,12 @@ false 0 20119 - 2afc71ea-d1fd-43b1-8b3e-261dd0d4d16d + 90fe4610-48e6-44f0-8c7c-3aa09c470e33 9 false false - + section Bereich1 frühere Tumorerkrankung @@ -6570,12 +6570,12 @@ false 0 20119 - b25c05c8-635f-445f-9a35-b7006ac94a89 + 8a0f3c04-c447-4bdb-a204-610ccd815718 10 false false - + section Bereich2 Patientendaten @@ -6632,12 +6632,12 @@ false 0 20119 - 02df67e0-c499-4cad-b0fb-067ff34e3448 + 64caa683-bd17-4b40-a442-b67df1981df8 3 false false - + section Bereich3 Diagnose @@ -6694,12 +6694,12 @@ false 0 20119 - 9026316b-5efe-434f-8fc5-293ce72dd865 + 149201f6-2943-4547-942d-38664a70dd32 4 false false - + section Bereich4 aktueller Status @@ -6756,12 +6756,12 @@ false 0 20119 - b5431ba1-1b4d-44f2-9975-de2d799b85b1 + 1a32ce78-357d-4788-b9e9-4498478e4220 5 false false - + section Bereich6 Vortherapien @@ -6818,12 +6818,12 @@ false 0 20119 - cdbeee08-2d99-4aaa-a0ff-bcd3a7b95c4c + e2ec1c66-662f-4a5d-be73-80f8f26d4384 3 false false - + section Bereich7 Letzte Therapielinie @@ -6880,12 +6880,12 @@ false 0 20119 - 8d17980d-4130-48e0-8077-0e8db3eac01b + ad733a7f-97dd-4458-90b5-b8ee1f0bc54f 3 false false - + section Consent Consent @@ -6942,12 +6942,12 @@ false 0 20119 - 4c794582-99c0-4335-b7ae-c4a8b654388e + 87fd88f8-41a9-43bb-82ad-0e8a5601b218 2 false false - + formReference ConsentDNPM Consent DNPM @@ -7013,12 +7013,12 @@ false 0 20119 - ea0c60c9-e635-4e06-82c8-99bb3ea46a81 + 10d1c6dd-92fe-497e-9c17-e8e74e190ab9 25 false false - + datefield ConsentDatumEinwilligungDNPM Datum der Einwilligung @@ -7076,12 +7076,12 @@ false 0 20119 - c0fc40e4-1dc5-4e91-acda-eac86cebe8bb + 27731944-bac5-41ba-904c-9c394699d9ca 4 false false - + formReference ConsentMTB Consent MTB-Register @@ -7140,12 +7140,12 @@ false 0 20119 - 3b851328-3771-49ab-8440-c0080de746d2 + 899c0fe9-cc97-4890-9ea1-d93858ab8e17 4 false false - + combobox ConsentStatusEinwilligungDNPM Einwilligung Datenübermittlung @@ -7203,7 +7203,7 @@ false 0 20119 - da6e7fb7-0d7a-4882-aa4e-bc62c52985ae + 1fc0bc0b-3a98-4faa-9c3f-4219b761efce 5 false false @@ -7266,12 +7266,12 @@ false 0 20119 - 1af042e1-e35a-4e93-9dce-cc52cede995e + 48440f9e-0781-4111-ab4a-5d290da76188 3 false false - + datefield DatumErstdiagnose Datum der Erstdiagnose @@ -7332,12 +7332,12 @@ false 0 20119 - 631a08c4-393e-4540-9c15-1494d5dd769b + 0a35bbcf-620e-49c6-95ef-4bd89611e9df 7 false false - + datefield DatumProgression Datum der Progression @@ -7398,7 +7398,7 @@ false 0 20119 - 937d4334-dc22-4eb9-802e-8555fb9520b9 + 9ef3c9c5-3252-4818-a5e9-73710d93cf64 9 false false @@ -7464,12 +7464,12 @@ false 0 20119 - 533505ed-d133-4877-ad6f-ac593d3c9ecc + ff98f67f-2da0-4d6e-83a9-2fbde14c942c 4 false false - + lookup FruehereTumorDiagnose Diagnose @@ -7538,12 +7538,12 @@ false 0 20119 - 07eb9cc5-a8f8-4989-a65e-6cc8b4b074fe + 8bbb5df6-e0ea-4753-9d01-9cc669b0a58e 8 false false - + textfield FruehereTumoreAlter Erkrankungsalter @@ -7611,12 +7611,12 @@ false 0 20119 - f8dea6de-d9a3-4595-be87-3d06220e276d + 468993be-c6e5-4f14-9620-bc31000a988c 6 false false - + combobox FruehereTumorerkrankung Frühere Tumorerkrankung @@ -7677,12 +7677,12 @@ false 0 20119 - a4fcb0fc-a4c4-4851-b4b9-6b5620f42947 + 443131de-901c-4ea3-a804-5594fe76707c 4 false false - + datefield Geburtsdatum Geburtsdatum @@ -7740,12 +7740,12 @@ false 0 20119 - 7ff011a7-8a10-4e01-8f21-f4fcd2f7321e + 547d5622-dc27-4520-b839-ab05417a12d3 3 false false - + combobox Geschlecht Geschlecht @@ -7803,12 +7803,12 @@ false 0 20119 - 54ae1eb7-05c0-48b1-b86d-877554021067 + e6f369fc-fb92-4317-a529-4c12008928b0 4 false false - + combobox GrundTherapieende Grund für Therapieende @@ -7869,7 +7869,7 @@ false 0 20119 - cddf97d5-e725-4bc3-a5a1-d4ea598d5b29 + 3802c1f6-a638-4e77-8dca-eac43605e861 9 false false @@ -7935,12 +7935,12 @@ false 0 20119 - c63b461c-2233-4e42-962f-31a2bae0c661 + 0c4e08e9-7ef5-4052-9124-d42a5df09930 3 false false - + lookup ICD10 ICD-10 @@ -8002,12 +8002,12 @@ false 0 20119 - 363bcb92-681f-4662-b677-1cd8b4fbf248 + 4f28a2e4-2869-4654-a0f6-c07ea91d4daa 9 false false - + lookup ICDO3Histologie ICD-O-3-Histologie @@ -8069,12 +8069,12 @@ false 0 20119 - 31d74420-1dc2-4699-a5bf-a13044d9d4ff + 68093b2c-f632-422b-9cf7-52c24a3a49e3 4 false false - + lookup ICDO3Lokalisation ICD-O-3-Lokalisation @@ -8136,20 +8136,23 @@ false 0 20119 - 55043a9d-748c-4708-a77a-b122022e87d8 + 2732febb-bd61-405b-9463-938c452d7e27 4 false false - + textfield Krankenkasse Krankenkasse true - true + false true 4.0 + + + false false 0 @@ -8199,12 +8202,12 @@ false 0 20119 - f01671c3-4568-43ef-9348-e1f1d5ee5ef0 - 5 + 58c7f563-f69e-4407-a178-a04a6216ce4e + 6 false false - + combobox LeitlinienTherapieDurchl Alle leitliniengerechte Therapien durchlaufen @@ -8265,12 +8268,12 @@ false 0 20119 - cf0f94de-41cc-4017-9a94-26e4d8d56d86 + 8ac384f2-df1b-42cf-8680-ecd2eb3fed6f 7 false false - + combobox LeitlinienTherapieProgr Progress unter Leitliniengerechter Therapie @@ -8331,12 +8334,12 @@ false 0 20119 - 8f35d064-3bbf-46b0-bbb5-8a8ac7487cbd + 1e0f4e4f-e351-4afd-b22b-1769f2eaf815 7 false false - + combobox Leitlinienstatus Leitlinienstatus @@ -8397,12 +8400,12 @@ false 0 20119 - e647c810-f279-44b2-8504-23b76202cebc + bf1eb213-feb1-4b9a-93e1-b023fe19847a 1 false false - + formReference MTB Molekulares Tumorboard @@ -8468,12 +8471,12 @@ false 0 20119 - e8f70686-d224-4a28-9432-c844965b08ad + 5c34e96d-7e3d-40e8-a3a1-6d5e2be0806a 7 false false - + datefield Therapiebeginn Therapiebeginn @@ -8534,12 +8537,12 @@ false 0 20119 - 10a8e870-f993-4dcc-a801-1faa753cdc42 + 8cd242e0-8719-47d6-a42f-6863ac92925e 11 false false - + datefield Therapieende Therapieende @@ -8600,12 +8603,12 @@ false 0 20119 - 6ab3f435-2ac3-49c4-8a85-5b2fb724c548 + 058b1b2e-c5d5-457e-80ec-1d455634821f 12 false false - + datefield Todesdatum Todesdatum @@ -8666,7 +8669,7 @@ false 0 20119 - 18b010d5-76e1-47ff-aa15-6689ab026c69 + 22bebeea-3097-429b-9d4b-ffbe788b5ca1 3 false false @@ -8732,7 +8735,7 @@ false 0 20119 - 6ccb2fd1-da09-430d-bd18-d74ef3999f6a + 46b1401d-58ed-4496-8baf-50a8b01e1890 2 false false @@ -8798,7 +8801,7 @@ false 0 20119 - 70746b3d-5a3d-44c2-94a1-e8bfba4adbcc + a326c2b0-c716-45df-9e28-f430e3e48367 2 false false @@ -8861,12 +8864,12 @@ false 0 20119 - ccc49bfa-2033-4848-a8ac-d52347263b52 + 043f8ab8-ce6c-456e-8670-d189786d03c0 5 false false - + combobox WHOGrad WHO-Grad @@ -8934,7 +8937,7 @@ false 0 20119 - 43e06b35-c1e9-48f8-b751-5219ad6b9ecc + d68584da-c8c9-450b-af83-55151390b53a 7 false false @@ -18036,7 +18039,7 @@ 20119 4311876c-8ab0-4d50-8334-61e7dd9b4d6e - 242 + 241 true @@ -18543,7 +18546,7 @@ false - const availableStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'kategorieName'},&#10; {name: 'version'},&#10; {name: 'code'},&#10; {name: 'type'},&#10; {name: 'studiennummer'},&#10; {name: 'shortDesc'},&#10; {name: 'description'}&#10; ]&#10;});&#10;&#10;let pluginRequestsDisabled = false;&#10;&#10;const findButtonFieldFormInformation = function (context) {&#10; const findElemId = function (elem) {&#10; if (elem.tagName === 'BODY') {&#10; return undefined;&#10; }&#10;&#10; if (elem.tagName === 'TABLE') {&#10; return elem.id;&#10; }&#10;&#10; return findElemId(elem.parentElement);&#10; }&#10;&#10; const formInfo = function (formItem, blockIndex = undefined) {&#10; if (formItem.xtype === 'buttonField') {&#10; return formInfo(formItem.ownerCt, formItem.blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'panel' || formItem.xtype === 'sectionField') {&#10; return formInfo(formItem.ownerCt, blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'subformField') {&#10; return {&#10; isSubform: true,&#10; formName: formItem.formName,&#10; subformFieldName: formItem.subformName,&#10; blockIndex: blockIndex&#10; };&#10; }&#10;&#10; if (formItem.xtype === 'form') {&#10; return {&#10; isSubform: false,&#10; };&#10; }&#10;&#10; console.warn('No information found!');&#10; return undefined;&#10; }&#10;&#10; if (context.genericEditForm && document.activeElement.tagName === 'BUTTON') {&#10; let elemId = findElemId(document.activeElement);&#10; if (elemId) {&#10; let formItem = context.genericEditForm.down('#' + elemId);&#10; if (formItem) {&#10; return formInfo(formItem);&#10; }&#10; }&#10; }&#10;&#10; return undefined;&#10;}&#10;&#10;const request = function (query, includeInactive) {&#10; if (pluginRequestsDisabled) return;&#10; executePluginMethod(&#10; 'EinzelempfehlungAnalyzer',&#10; 'getStudien',&#10; includeInactive ? {q: query, inactive: true} : {q: query},&#10; function (response) {&#10; if (response.status.code < 0) {&#10; onFailure();&#10; return;&#10; }&#10; onSuccess(response.result);&#10; },&#10; false&#10; );&#10;};&#10;&#10;const itemMapping = function (item) {&#10; return [item.kategorieName, item.version, item.code, item.type, item.studiennummer, item.shortDesc, item.description];&#10;}&#10;&#10;const onFailure = function () {&#10; pluginRequestsDisabled = true;&#10; Ext.MessageBox.show({&#10; title: 'Hinweis',&#10; msg: 'Plugin "DNPM" nicht verfügbar.',&#10; buttons: Ext.MessageBox.OKCANCEL&#10; });&#10;};&#10;&#10;const onSuccess = function (d) {&#10; available = d;&#10; const extData = available.map(itemMapping);&#10; availableStore.loadData(extData);&#10;}&#10;&#10;const save = (selectedItemIndex) => {&#10; this.getFieldByEntriesArray('studie', blockIndex).setValue(available[selectedItemIndex].shortDesc);&#10; this.getFieldByEntriesArray('studienct', blockIndex).setValue(available[selectedItemIndex].studiennummer);&#10;}&#10;&#10;const showDialog = function (blockIndex) {&#10; let selectedItemIndex = -1;&#10; let queryString = '';&#10; let includeInactive = false;&#10;&#10; const gridColumns = [&#10; {header: 'Kategorie', width: 80, sortable: false, dataIndex: 'kategorieName'},&#10; {header: 'Version', width: 80, sortable: false, dataIndex: 'version'},&#10; {header: 'Typ', width: 120, sortable: false, dataIndex: 'type'},&#10; {header: 'Studiennummer', width: 120, sortable: true, dataIndex: 'studiennummer'},&#10; {header: 'Name', width: 320, sortable: true, dataIndex: 'shortDesc'},&#10; {header: 'Beschreibung', width: 400, sortable: false, dataIndex: 'description'}&#10; ];&#10;&#10;&#10; const query = new Ext.form.field.Text({&#10; name: 'query',&#10; fieldLabel: 'Suche',&#10; padding: 8,&#10; listeners: {&#10; change: (f) => {&#10; queryString = f.value;&#10; request(queryString, includeInactive);&#10; }&#10; }&#10; });&#10;&#10; const inactiveSelection = new Ext.form.field.Checkbox({&#10; name: 'inactive',&#10; fieldLabel: 'Inaktive Studien einschließen',&#10; labelWidth: 240,&#10; padding: 8,&#10; listeners: {&#10; handler: (_, checked) => {&#10; includeInactive = checked;&#10; request(queryString, includeInactive);&#10; }&#10; }&#10; });&#10;&#10; const availableGrid = new Ext.grid.GridPanel({&#10; title: 'Verfügbare Studien',&#10; store: availableStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; selectedItemIndex = index;&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; save(selectedItemIndex);&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }&#10; });&#10;&#10; const layout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'vbox',&#10; align: 'stretch'&#10; },&#10; items: [query, inactiveSelection, availableGrid]&#10; });&#10;&#10; Ext.create('Ext.window.Window', {&#10; title: 'Studienauswahl',&#10; height: 600,&#10; width: 1080,&#10; layout: 'fit',&#10; items: [layout],&#10; buttons: [{&#10; id: 'btnAdd',&#10; text: 'Studie auswählen',&#10; handler: () => {&#10; save(selectedItemIndex);&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }, {&#10; text: 'Abbrechen',&#10; cls: 'onko-btn-cta',&#10; handler: () => {&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }]&#10; }).show();&#10;&#10; request();&#10;};&#10;&#10;let buttonFieldFormInformation = findButtonFieldFormInformation(this);&#10;if (buttonFieldFormInformation && buttonFieldFormInformation.blockIndex) {&#10; blockIndex = buttonFieldFormInformation.blockIndex;&#10; showDialog(blockIndex);&#10;} + const availableStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'kategorieName'},&#10; {name: 'version'},&#10; {name: 'code'},&#10; {name: 'type'},&#10; {name: 'studiennummer'},&#10; {name: 'shortDesc'},&#10; {name: 'description'}&#10; ]&#10;});&#10;&#10;let pluginRequestsDisabled = false;&#10;&#10;const findButtonFieldFormInformation = function (context) {&#10; const findElemId = function (elem) {&#10; if (elem.tagName === 'BODY') {&#10; return undefined;&#10; }&#10;&#10; if (elem.tagName === 'TABLE') {&#10; return elem.id;&#10; }&#10;&#10; return findElemId(elem.parentElement);&#10; }&#10;&#10; const formInfo = function (formItem, blockIndex = undefined) {&#10; if (formItem.xtype === 'buttonField') {&#10; return formInfo(formItem.ownerCt, formItem.blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'panel' || formItem.xtype === 'sectionField') {&#10; return formInfo(formItem.ownerCt, blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'subformField') {&#10; return {&#10; isSubform: true,&#10; formName: formItem.formName,&#10; subformFieldName: formItem.subformName,&#10; blockIndex: blockIndex&#10; };&#10; }&#10;&#10; if (formItem.xtype === 'form') {&#10; return {&#10; isSubform: false,&#10; };&#10; }&#10;&#10; console.warn('No information found!');&#10; return undefined;&#10; }&#10;&#10; if (context.genericEditForm && document.activeElement.tagName === 'BUTTON') {&#10; let elemId = findElemId(document.activeElement);&#10; if (elemId) {&#10; let formItem = context.genericEditForm.down('#' + elemId);&#10; if (formItem) {&#10; return formInfo(formItem);&#10; }&#10; }&#10; }&#10;&#10; return undefined;&#10;}&#10;&#10;const request = function (query, includeInactive) {&#10; if (pluginRequestsDisabled) return;&#10; executePluginMethod(&#10; 'EinzelempfehlungAnalyzer',&#10; 'getStudien',&#10; includeInactive ? {q: query, inactive: true} : {q: query},&#10; function (response) {&#10; if (response.status.code < 0) {&#10; onFailure();&#10; return;&#10; }&#10; onSuccess(response.result);&#10; },&#10; false&#10; );&#10;};&#10;&#10;const itemMapping = function (item) {&#10; return [item.kategorieName, item.version, item.code, item.type, item.studiennummer, item.shortDesc, item.description];&#10;}&#10;&#10;const onFailure = function () {&#10; pluginRequestsDisabled = true;&#10; Ext.MessageBox.show({&#10; title: 'Hinweis',&#10; msg: 'Plugin "DNPM" nicht verfügbar.',&#10; buttons: Ext.MessageBox.OKCANCEL&#10; });&#10;};&#10;&#10;const onSuccess = function (d) {&#10; available = d;&#10; const extData = available.map(itemMapping);&#10; availableStore.loadData(extData);&#10;}&#10;&#10;const save = (selectedItemIndex) => {&#10; this.getFieldByEntriesArray('studie', blockIndex).setValue(available[selectedItemIndex].shortDesc);&#10; this.getFieldByEntriesArray('studienct', blockIndex).setValue(available[selectedItemIndex].studiennummer);&#10;}&#10;&#10;const showDialog = function (blockIndex) {&#10; let selectedItemIndex = -1;&#10; let queryString = '';&#10; let includeInactive = false;&#10;&#10; const gridColumns = [&#10; {header: 'Kategorie', width: 80, sortable: false, dataIndex: 'kategorieName'},&#10; {header: 'Version', width: 80, sortable: false, dataIndex: 'version'},&#10; {header: 'Typ', width: 120, sortable: false, dataIndex: 'type'},&#10; {header: 'Studiennummer', width: 120, sortable: true, dataIndex: 'studiennummer'},&#10; {header: 'Name', width: 320, sortable: true, dataIndex: 'shortDesc'},&#10; {header: 'Beschreibung', width: 400, sortable: false, dataIndex: 'description'}&#10; ];&#10;&#10;&#10; const query = new Ext.form.field.Text({&#10; name: 'query',&#10; fieldLabel: 'Suche',&#10; padding: 8,&#10; listeners: {&#10; change: (f) => {&#10; queryString = f.value;&#10; request(queryString, includeInactive);&#10; }&#10; }&#10; });&#10;&#10; const inactiveSelection = new Ext.form.field.Checkbox({&#10; name: 'inactive',&#10; fieldLabel: 'Inaktive Studien einschließen',&#10; labelWidth: 240,&#10; padding: 8,&#10; listeners: {&#10; handler: (_, checked) => {&#10; includeInactive = checked;&#10; request(queryString, includeInactive);&#10; }&#10; }&#10; });&#10;&#10; const availableGrid = new Ext.grid.GridPanel({&#10; title: 'Verfügbare Studien',&#10; store: availableStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; overflowY: 'scroll',&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; selectedItemIndex = index;&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; save(selectedItemIndex);&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }&#10; });&#10;&#10; const layout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'vbox',&#10; align: 'stretch'&#10; },&#10; items: [query, inactiveSelection, availableGrid]&#10; });&#10;&#10; Ext.create('Ext.window.Window', {&#10; title: 'Studienauswahl',&#10; height: 600,&#10; width: 1080,&#10; layout: 'fit',&#10; items: [layout],&#10; buttons: [{&#10; id: 'btnAdd',&#10; text: 'Studie auswählen',&#10; handler: () => {&#10; save(selectedItemIndex);&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }, {&#10; text: 'Abbrechen',&#10; cls: 'onko-btn-cta',&#10; handler: () => {&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }]&#10; }).show();&#10;&#10; request();&#10;};&#10;&#10;let buttonFieldFormInformation = findButtonFieldFormInformation(this);&#10;if (buttonFieldFormInformation && buttonFieldFormInformation.blockIndex) {&#10; blockIndex = buttonFieldFormInformation.blockIndex;&#10; showDialog(blockIndex);&#10;} true @@ -18584,7 +18587,7 @@ 0 20119 760839f7-bdf0-4ee5-ac74-adbd92c54346 - 6 + 5 false false