CALL PACS.getInvestModel1
Auto Commit: On, SQL Mode: Internal, Isolation Level: Committed
General error;-8046 POS(74) Conversion from UNICODE impossible: 7FC1
call PACS.getInvestModel1(1,'2Ж1',0)

CALL  PACS.getInvestModel

10  13  МКБ                  type
5   12  Вес                  type
4   12  Рост                 type
1   13  Жалобы               type
9   13  Диагноз              type
2   13  АнамнезЗабалевания   type
8   12  МенструацииСейчас    type
13  0   Гениколог            model
3   7   МенструацииНачались  type
11  13  АнамнезЖизни         group
7   11  Менструации          group
12  13  ОбъективныйСтатус    group

CREATE SCHEMA PACS AUTHORIZATION GIS

//

/*
      12345678901234567890123456789012
 PACS.rtDataObjects

 Таблица хранит имена типов

*/

DROP TABLE PACS.rtDataObjects

//

CREATE TABLE PACS.rtDataObjects
(
   objId                      INTEGER           NOT NULL,

   PRIMARY KEY (objId),

   objType                    VARCHAR(10)       NOT NULL,

   CONSTRAINT objType IN ('type', 'group', 'model'),

   name                       VARCHAR(255),

   revision                   INTEGER           NOT NULL
)

//

/*
      12345678901234567890123456789012
 PACS.rtProtocolModelRevisions
*/

DROP TABLE PACS.rtDataObjectRevisions

//

CREATE TABLE PACS.rtDataObjectRevisions
(
   objId                      INTEGER           NOT NULL,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId),

   revision                   INTEGER           NOT NULL,

   CONSTRAINT unique_revision
       UNIQUE (objId, revision),


   dtFrom                     DATE,
   dtTo                       DATE,

updated TIMESTAMP, /* когда модифицировал*/ modifier VARCHAR(32) /* кто модифицировад, потом сделаем ссылку*/
)

//

DROP TABLE PACS.rtObjectHierarchies

//

CREATE TABLE PACS.rtObjectHierarchies
(
   ownerObjId                 INTEGER           NOT NULL,

   FOREIGN KEY (ownerObjId)
   REFERENCES PACS.rtDataObjects (ObjId),

   childObjId                 INTEGER           NOT NULL,

    FOREIGN KEY (childObjId)
   REFERENCES PACS.rtDataObjects (ObjId),


   fromRevision               INTEGER           NOT NULL,
   toRevision                 INTEGER
)

//

/*
      12345678901234567890123456789012
 PACS.rtDataObjectPresentations
*/

DROP TABLE PACS.rtDataObjectPresentations

//

CREATE TABLE PACS.rtDataObjectPresentations
(
   objId                      INTEGER,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId),

   presentation               VARCHAR(255)
)

//

/*
      12345678901234567890123456789012
 PACS.rtResTypes

таблица описывает саму сущность исследования как сейчас она описывается к гис
*/

DROP TABLE PACS.rtResTypes

//

CREATE TABLE PACS.rtResTypes
(
   resid                      VARCHAR(10)       NOT NULL,

   PRIMARY KEY (resid),

   researchtype               VARCHAR(255)
)

//

DROP TABLE PACS.rtProtocolModels

//

CREATE TABLE PACS.rtProtocolModels
(
   modelId                    INTEGER           NOT NULL,

   PRIMARY KEY (modelId),

 resid                      VARCHAR(10)       NOT NULL,

   FOREIGN KEY (resid)
   REFERENCES PACS.rtResTypes (resid),

   objId                      INTEGER,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId)
)

//

DROP TABLE PACS.pats

//

CREATE TABLE PACS.pats
(
   cartnum                    INTEGER           NOT NULL,

   PRIMARY KEY (cartnum),

   surname                    VARCHAR(255)
)

//

/*
 для совместимости с GIS
*/

DROP TABLE PACS.medorder

//

CREATE TABLE PACS.medorder
(
   medorder                   INTEGER           NOT NULL,

   PRIMARY KEY(medorder),

   cartnum                    INTEGER,

   FOREIGN KEY (cartnum)
   REFERENCES PACS.pats (cartnum)
)

//

DROP TABLE PACS.invest

//

CREATE TABLE PACS.invest
(
   counter                    INTEGER           NOT NULL,

   PRIMARY KEY (counter),

   medorder                   INTEGER           NOT NULL,

   FOREIGN KEY (medorder)
   REFERENCES PACS.medorder (medorder),
resid VARCHAR(10) NOT NULL,

   FOREIGN KEY (resid)
   REFERENCES PACS.rtResTypes (resid),

   dateres                    DATE,
   timeres                    TIME
)

//

/*
      12345678901234567890123456789012
 PACS.dtProtocols

 аналог таблицы did_doc
*/

DROP TABLE PACS.dtProtocols

//

CREATE TABLE PACS.dtProtocols
(
   revision                   INTEGER           NOT NULL,


   counter                    INTEGER           NOT NULL,

   FOREIGN KEY (counter)
   REFERENCES PACS.invest (counter),

 resid                      VARCHAR(10)       NOT NULL,

   FOREIGN KEY (resid)
   REFERENCES PACS.rtResTypes (resid),

 resnum                     INTEGER           NOT NULL,

   CONSTRAINT unique_protocols
   UNIQUE (counter, resid,resnum),

 /*
 */

   modelId                    INTEGER,

   FOREIGN KEY (modelId)
   REFERENCES PACS.rtProtocolModels (modelId)
)

//

DROP TABLE PACS.dtProtocolRevisions

//

CREATE TABLE PACS.dtProtocolRevisions
(
 counter                    INTEGER           NOT NULL,
 resid                      VARCHAR(10)       NOT NULL,
 resnum                     INTEGER           NOT NULL,


   FOREIGN KEY (counter,resid,resnum)
   REFERENCES PACS.dtProtocols (counter,resid,resnum),
revision INTEGER,

   CONSTRAINT unique_revision
       UNIQUE (counter,resid,resnum, revision),

updated TIMESTAMP, /* когда модифицировал*/ modifier VARCHAR(32) /* кто модифицировад, потом сделаем ссылку*/
)

/*
      12345678901234567890123456789012
 PACS.rtObjectFields

 список полей Тип-объекта, их тип и имена.
*/

//

DROP TABLE PACS.rtObjectFields

//

CREATE TABLE PACS.rtObjectFields
(
   objId                      INTEGER,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId),
type VARCHAR(20) NOT NULL,
 label                     VARCHAR(255),
 fieldName              VARCHAR(255)       NOT NULL

)

/*
      12345678901234567890123456789012
 PACS.rdData_4

 Таблица с данными типа objId=4

*/

//

DROP TABLE PACS.rdData_4

//

CREATE TABLE PACS.rdData_4
(
   objId                      INTEGER,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId),
counter INTEGER NOT NULL,
     resid                      VARCHAR(10)       NOT NULL,
     resnum                     INTEGER           NOT NULL,
   FOREIGN KEY (counter,resid,resnum)
   REFERENCES PACS.dtProtocols (counter,resid,resnum),
height FLOAT(2),
   fromRevision           INTEGER           NOT NULL,
   toRevision               INTEGER


)

/*
      12345678901234567890123456789012
 PACS.rtTypeProperties

 Атрибуты Типов.
*/

//

DROP TABLE PACS.rtTypeProperties

//

CREATE TABLE PACS.rtTypeProperties
(
   objId                      INTEGER,

   FOREIGN KEY (objId)
   REFERENCES PACS.rtDataObjects (objId),
tableName VARCHAR(255) NOT NULL

)

//

--СОЗДАЕМ МОДЕЛЬ

insert into PACS.rtDataObjects (objId, objType, name, revision) values (1, 'type', 'Жалобы', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (1, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (2, 'type', 'АнамнезЗабалевания', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (2, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (3, 'type', 'МенструацииНачались', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (3, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (4, 'type', 'Рост', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (4, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (5, 'type', 'Вес', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (5, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (6, 'type', 'Давление', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (6, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (7, 'group', 'Менструации', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (7, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (8, 'type', 'МенструацииСейчас', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (8, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (9, 'type', 'Диагноз', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (9, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (10, 'type', 'МКБ', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (10, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (11, 'group', 'АнамнезЖизни', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (11, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (12, 'group', 'ОбъективныйСтатус', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (12, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (13, 'model', 'Гениколог', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (13, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (14, 'model', 'Гастраэнтеролог', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (14, 1)
//

insert into PACS.rtDataObjects (objId, objType, name, revision) values (15, 'model', 'Патаморфолог', 1)
//
insert PACS.rtDataObjectRevisions(objId, revision) values (15, 1)
//

insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (7, 3, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (11, 7, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (12, 4, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (12, 5, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (12, 8, 1, null)

//

insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 1, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 2, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 11, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 12, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 9, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (13, 10, 1, null)
//


insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 1, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 2, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 11, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 12, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 9, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (14, 10, 1, null)
//

insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (15, 11, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (15, 9, 1, null)
//
insert PACS.rtObjectHierarchies (ownerObjId, childObjId, fromRevision, toRevision) values (15, 10, 1, null)
//


insert PACS.rtResTypes (resid, researchtype) values ('2Ж1', 'Услуга 1')
//
insert PACS.rtResTypes (resid, researchtype) values ('2Ж2', 'Услуга 2')
//
insert PACS.rtResTypes (resid, researchtype) values ('2Ж3', 'Услуга 3')
//

insert PACS.rtProtocolModels (modelId, resid, objId) values (1, '2Ж1', 13)
//
insert PACS.rtProtocolModels (modelId, resid, objId) values (2, '2Ж2', 14)
//
insert PACS.rtProtocolModels (modelId, resid, objId) values (3, '2Ж3', 15)
//

insert PACS.pats (cartnum, surname) values (6280, 'Я')
//
insert PACS.pats (cartnum, surname) values (6281, 'Ты')
//


insert PACS.medorder (medorder, cartnum) values (1, 6280)
//
insert PACS.medorder (medorder, cartnum) values (2, 6280)
//
insert PACS.medorder (medorder, cartnum) values (3, 6281)
//
insert PACS.medorder (medorder, cartnum) values (4, 6281)
//

insert PACS.invest (counter, medorder, resid, dateres, timeres) values (1, 1, '2Ж1', null, null)
//
insert PACS.invest (counter, medorder, resid, dateres, timeres) values (2, 1, '2Ж2', null, null)
//
insert PACS.invest (counter, medorder, resid, dateres, timeres) values (3, 1, '2Ж3', null, null)
//
insert PACS.invest (counter, medorder, resid, dateres, timeres) values (4, 4, '2Ж1', null, null)
//
insert PACS.invest (counter, medorder, resid, dateres, timeres) values (5, 4, '2Ж2', null, null)
//
insert PACS.invest (counter, medorder, resid, dateres, timeres) values (6, 4, '2Ж3', null, null)
//


insert PACS.rtTypeProperties(objId,tableName) values (4,'rdData_4')
//
insert PACS.rtObjectFields(objId,type,label,fieldName) values (4,'float','height','height')
//
insert PACS.rtTypeProperties(objId,tableName) values (5,'rdData_5')
//
insert PACS.rtObjectFields(objId,type,label,fieldName) values (5,'float','weight','weight')
//
insert PACS.rtTypeProperties(objId,tableName) values (6,'rdData_6')
//
insert PACS.rtObjectFields(objId,type,label,fieldName) values (6,'float','pressure','pressure')
//
insert PACS.dtProtocols(revision,counter,resid,resnum,modelId) values (1,1,'2Ж1',0,1)
//
insert PACS.rdData_4(objId,counter,resid,resnum,height,fromRevision,toRevision) values (4,1,'2Ж1',0,180,1,null)
//
--insert PACS.rdData_5(objId,counter,resid,resnum,height,fromRevision,toRevision) values (5,1,'2Ж1',0,80,1,null)
--//

DROP FUNCTION PACS.getRevision
//

CREATE FUNCTION PACS.getRevision(objId INT, qdate DATE)

RETURNS INT
AS

VAR result INT;

BEGIN
TRY IF qdate IS NULL THEN SET qdate=DATE; DECLARE curS CURSOR FOR SELECT revision FROM pacs.rtDataObjectRevisions WHERE DECODE(dtfrom,null,'1970-01-01',dtfrom)<=:qdate and :qdate <DECODE(dtto,null,'2100-12-31',dtto) and objId=:objId; FETCH curS INTO :result; CLOSE curS; RETURN result; CATCH
                    IF $rc <> 100 THEN BEGIN
                        CLOSE curS;
                        STOP($rc,$errmsg);
                   END;
END;

//

DROP DBPROC PACS.getInvestModel1
//
CREATE DBPROC PACS.getInvestModel1
 ( IN counter INT,
   IN resid VARCHAR(10),
   IN resnum INT
 )
RETURNS CURSOR AS

VAR objId INT; RevisionDate DATE;
BEGIN
TRY SELECT m.objId,i.dateres INTO :objId,:RevisionDate FROM PACS.dtProtocols p,PACS.invest i, PACS.rtProtocolModels m WHERE p.counter = :counter AND p.resid=:resid AND p.resnum=:resnum AND p.modelId = m.modelId AND p.counter=i.counter; DECLARE Model CURSOR FOR
               WITH RECURSIVE Nodes (ownerObjId, childObjId)
                   AS
                   (
                   SELECT ownerObjId, childObjId
                   FROM PACS.rtObjectHierarchies
                   WHERE ownerObjId=:objId AND
DECODE(fromRevision,null,1,fromRevision)<= PACS.getRevision(ownerObjId,:RevisionDate) AND PACS.getRevision(ownerObjId,:RevisionDate) < DECODE(toRevision,null,PACS.getRevision(ownerObjId,:RevisionDate)+1,toRevision)
                       UNION ALL
                   SELECT a.ownerObjId,a.childObjId
                   FROM PACS.rtObjectHierarchies a,Nodes
                   WHERE a.ownerObjId=Nodes.childObjId AND
DECODE(a.fromRevision,null,1,a.fromRevision)<= PACS.getRevision(a.ownerObjId,:RevisionDate) AND PACS.getRevision(a.ownerObjId,:RevisionDate) < DECODE(a.toRevision,null,PACS.getRevision(a.ownerObjId,:RevisionDate)+1,a.toRevision)
                   )
SELECT childObjId as id, ownerObjId as parent FROM Nodes FOR REUSE; $CURSOR = 'MY_CURSOR';
       DECLARE :$CURSOR CURSOR FOR
           SELECT a.Id, a.parent, b.name,b.objtype
       FROM
         GIS.Model a,
         PACS.rtDataObjects b
       WHERE
         a.id = b.objId
            UNION ALL
       SELECT :objId as id, 0 as parent,d.name,d.objtype
       FROM
           dbadmin.dual c,
           PACS.rtDataObjects d
       WHERE
           d.objId=:objId;
   CATCH STOP($rc,$errmsg);
END;

//

DROP DBPROC PACS.getInvestModel
//
CREATE DBPROC PACS.getInvestModel
 ( IN counter INT,
   IN resid VARCHAR(10),
   IN resnum INT
 )
RETURNS CURSOR AS

VAR objId INT; RevisionDate DATE;
BEGIN
TRY SELECT m.objId,i.dateres INTO :objId,:RevisionDate FROM PACS.dtProtocols p,PACS.invest i, PACS.rtProtocolModels m WHERE p.counter = :counter AND p.resid=:resid AND p.resnum=:resnum AND p.modelId = m.modelId AND p.counter=i.counter; DECLARE Model CURSOR FOR
               WITH RECURSIVE Nodes (ownerObjId, childObjId)
                   AS
                   (
                   SELECT ownerObjId, childObjId
                   FROM PACS.rtObjectHierarchies
                   WHERE ownerObjId=:objId AND
DECODE(fromRevision,null,1,fromRevision)<= 1 AND 1 < DECODE(toRevision,null, 1+1,toRevision)
                       UNION ALL
                   SELECT a.ownerObjId,a.childObjId
                   FROM PACS.rtObjectHierarchies a,Nodes
                   WHERE a.ownerObjId=Nodes.childObjId AND
DECODE(a.fromRevision,null,1,a.fromRevision)<= 1 AND 1 < DECODE(a.toRevision,null,1+1,a.toRevision)
                   )
SELECT childObjId as id, ownerObjId as parent FROM Nodes FOR REUSE; $CURSOR = 'MY_CURSOR';
       DECLARE :$CURSOR CURSOR FOR
           SELECT a.Id, a.parent, b.name,b.objtype
       FROM
         GIS.Model a,
         PACS.rtDataObjects b
       WHERE
         a.id = b.objId
            UNION ALL
       SELECT :objId as id, 0 as parent,d.name,d.objtype
       FROM
           dbadmin.dual c,
           PACS.rtDataObjects d
       WHERE
           d.objId=:objId;
   CATCH STOP($rc,$errmsg);
END;



--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to