Проект спецификации информационного взаимодействия ПК «ЦЗ

advertisement
ПК «Учет пациентов центра здоровья»
наименование объек та автоматизации
СПЕЦИФИКАЦИЯ ИНФОРМАЦИОННОГО ВЗАИМОДЕЙСТВИЯ ПК
«ЦЗ» С АППАРАТНО-ПРОГРАММНЫМИ КОМПЛЕКСАМИ.
РУКОВОДСТВО ПРОГРАММИСТА
ЛИСТОВ 39
АННОТАЦИЯ
Настоящее Руководство программиста содержит сведения о назначении, методах,
условиях применения, характеристиках, предоставляемых интерфейсах, способах
обращения к COM–объектах, предназначенным для интеграции ПК «Учет пациентов
центра здоровья» на программном уровне с аппаратно-программными комплексами
(АПК).
Документ разработан в соответствии с требованиями ГОСТ 19.504-79.
СОДЕРЖАНИЕ
ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ ...................................................4
1. ВВЕДЕНИЕ ....................................................................................................................................5
1.1.
Использование COM-объекта HCCOM .......................................................................5
1.2.
Использование COM-объекта ApkCOM .....................................................................6
2. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ .........................................................................9
2.1.
Назначение и условия применения COM–объекта HCCOM.....................................9
2.2.
Назначение и условия применения COM–объекта ApkCOM ...................................9
3. ХАРАКТЕРИСТИКА ПРОГРАММЫ .......................................................................................11
3.1.
Методы интерфейса IHcCom ......................................................................................11
Интерфейс IHcCom в нотации IDL ................................................................................. 13
Метод GetMedCardForApk ............................................................................................... 13
Метод SetResearchResult .................................................................................................. 14
Метод ActivateHcApp ....................................................................................................... 15
3.2.
Методы интерфейса IApkCom ...................................................................................15
Интерфейс IApkCom в нотации IDL ............................................................................... 17
Метод InitializeApk ........................................................................................................... 17
Метод SetMedCardForApk ............................................................................................... 18
Метод InspectPatient ......................................................................................................... 18
Метод GetResearchResult ................................................................................................. 19
4. ОБРАЩЕНИЕ К ПРОГРАММЕ ................................................................................................21
4.1.
Обращение к методам интерфейса IHcCom из управляемого кода .......................21
4.2.
Пример использования интерфейса IHcCom из неуправляемого кода ..................22
4.3.
Пример реализации интерфейса IApkCom на языке C# ..........................................22
4.4.
Обращение к методам интерфейса IApkCom из управляемого кода .....................24
5. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ ....................................................................................26
ПРИЛОЖЕНИЕ 1. ТАБЛИЦЫ ИДЕНТИФИКАТОРОВ ...............................................................28
ПРИЛОЖЕНИЕ 2. ОПИСАНИЕ СТРУКТУРЫ XML-ДОКУМЕНТА ........................................30
ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ
(англ.
Component
Object
—
Model
Объектная
Модель
Компонентов; произносится как [ком]) — это технологический
стандарт
COM
от
создания
компании
Microsoft,
программного
предназначенный
обеспечения
на
для
основе
взаимодействующих распределённых компонентов, каждый из
которых
может
использоваться
во
многих
программах
одновременно.
(англ. Unified Modeling Language — унифицированный язык
UML
моделирования)
объектного
—
язык
графического
моделирования
в
описания
области
для
разработки
программного обеспечения.
(англ. eXtensible Markup Language — расширяемый язык
XML
разметки)
—
текстовый
формат,
хранения
структурированных
предназначенный
данных,
для
для
обмена
информацией между программами, а также для создания на его
основе более специализированных языков разметки.
АПК
Аппаратно – программный комплекс
БД
База данных
ПК «ЦЗ»
Программный комплекс «Учет пациентов центра здоровья»
ЦЗ
Центр здоровья
1. ВВЕДЕНИЕ
В данном документе описаны интерфейсы для следующих типов информационного
взаимодействия ПК «Учет пациентов центра здоровья» и АПК:
 взаимодействие ПК «ЦЗ» и АПК с использованием COM-объекта HCCOM;
 взаимодействие ПК «ЦЗ» и АПК с использованием COM-объекта ApkCOM,
предоставляемого разработчиком АПК.
1.1. Использование COM-объекта HCCOM
Для взаимодействия с АПК в составе ПК «ЦЗ» реализован COM-объект HCCOM.
Взаимодействие
АПК с COM-объектом HCCOM должно осуществляться в
следующем порядке:
1.
Оператор осуществляет выбор пациента и обследования в ПК «ЦЗ».
2.
ПК «ЦЗ» выполняет запуск АПК (поиск и активацию приложения, если процесс
приложения АПК уже запущен).
3.
Перед началом обследования АПК запрашивает данные о пациенте: обращается
к COM-объекту HCCOM и вызывает метод экспорта медицинской карты
пациента в формате XML с указанием идентификатора АПК. В случае ошибки
экспорта в АПК передаётся код ошибки.
4.
Оператор проводит обследование пациента в АПК.
5.
После завершения обследования АПК сохраняет отчетные формы и результаты
обследования, обращается к COM-объекту и отправляет результат обследования
(параметры, заключение, отчеты) в ПК «ЦЗ».
6.
ПК «ЦЗ» осуществляет сохранение полученных данных и передаёт АПК
результат сохранения данных. В случае неудачного сохранения данных,
происходит повторная передача результатов обследования из АПК в ПК «ЦЗ».
7.
COM-объект HCCOM активирует приложение ПК «ЦЗ».
UML-схема использования COM-объекта HCCOM приведена на рисунке (Рисунок 1).
ПК "ЦЗ"
АПК
HCCOM
Запуск АПК
Запрос на интерфейс IHCCOM
Интерфейс IHCCOM
Блокирование
ПК «ЦЗ» в
ожидании
результатов
обследования
Сохранение
данных
Запрос данных о пациенте
Запрос данных о пациенте
Медицинская карта пациента / код ошибки
Медицинская карта пациента / код ошибки
Передача результатов обследования
Передача результатов обследования
Результат сохранения данных
Результат сохранения данных
Активация приложения ПК "ЦЗ"
Проведение
обследования
пациента
Повторная
передача
результатов
при неудачном
сохранении
данных
Рисунок 1. UML-схема использования COM-объекта HCCOM
Формат XML-документов, используемых для взаимодействия, описан в разделе 5
«Входные и выходные данные».
1.2. Использование COM-объекта ApkCOM
COM-объект ApkCOM (название COM-объекта может быть другим и приведено в
качестве примера) должен быть разработан разработчиком АПК и содержать класс,
реализующий COM-интерфейс IApkCOM.
Взаимодействие ПК «ЦЗ» с COM-объектом ApkCOM должно осуществляться в
следующем порядке:
1.
Оператор осуществляет выбор пациента и обследования в ПК «ЦЗ»;
2.
ПК «ЦЗ» осуществляет запрос на COM-интерфейс IApkCOM (описание
интерфейса IApkCOM приведено в разделе 3.2 данного документа).
3. ПК «ЦЗ» выполняет запуск АПК (поиск и активацию приложения, если процесс
приложения АПК уже запущен).
4.
Перед началом обследования ПК «ЦЗ» передает данные о пациенте в формате
XML через COM-объект ApkCOM.
5.
Оператор проводит обследование пациента в АПК.
6.
После завершения обследования ПК «ЦЗ» обращается к COM-объекту ApkCOM
и запрашивает результат обследования в формате XML.
7.
ПК «ЦЗ» осуществляет сохранение полученных данных и активирует
приложение.
UML-схема использования COM-объекта HCCOM приведена на рисунке (Рисунок
2).
ПК "ЦЗ"
ApkCOM
АПК
Запрос на интерфейс IApkCOM
Интерфейс IApkCOM
Запуск АПК
Запуск АПК
Результат запуска АПК / код ошибки
Результат запуска АПК / код ошибки
Отправка данных о пациенте
Отправка данных о пациенте
Результат отправки данных / код ошибки
Результат отправки данных / код ошибки
Запуск обследования пациента
Запуск обследования пациента
Получение результатов обследования
Получение результатов обследования
Результаты обследования / код ошибки
Результаты обследования / код ошибки
Сохранение
данных
Рисунок 2. UML-схема использования COM-объекта ApkCOM
Проведение
обследования
пациента
Формат XML-документов, используемых для взаимодействия, описан в разделе 5
«Входные и выходные данные».
Для обеспечения возможности использования COM-объекта ApkCOM, разработчик
АПК должен выполнить следующие требования:
 COM-объект должен содержать класс, реализующий COM-интерфейс IApkCOM
(описание интерфейса IApkCOM приведено в разделе 3.2 данного документа);
 вместе с COM-объектом должен поставляться bat-файл “reg.bat”, выполняющий
регистрацию COM-объекта в операционной системе;
 вместе с COM-объектом должен поставляться конфигурационный xml-файл
“config.xml”, содержащий информацию о названии COM-объекта и названии
класса,
реализующего
COM-интерфейс
IApkCOM.
Данная
информация
необходима для использования COM-объекта ApkCOM в ПК «ЦЗ».
Конфигурационный файл должен содержать следующие xml-тэги:
 COMName — название COM-объекта, разработанного разработчиком АПК, под
которым он регистрируется в операционной системе;
 ClassName — название класса, реализующего COM-интерфейс IApkCOM.
Пример конфигурационного файла приведён в листинге (Листинг 1).
Листинг 1. Пример конфигурационного файла “config.xml”
<?xml version="1.0" encoding="utf-8" ?>
<COMConfig>
<COMName>ApkCOM</COMName>
<ClassName>ApkClass</ClassName>
</COMConfig>
2. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ
2.1. Назначение и условия применения COM–объекта HCCOM.
COM–объект
HCCOM
предназначен
для
обеспечения
информационного
взаимодействия с внешними АПК и реализует функции получения данных медицинской
карты из БД ПК «ЦЗ» и сохранение результата обследования в БД ПК «ЦЗ».
Областью применения COM–объекта HCCOM является программное обеспечение
внешних АПК, применяемое в Центрах здоровья при проведении профилактических
обследований граждан.
Для
функционирования
COM–объекта
HCCOM
необходима
следующая
необходимо
следующее
минимальная конфигурация технических средств:
 процессор Intel-совместимый;
 1024Mb RAM;
 объём свободного дискового пространства – 100Mb;
 тактовая частота процессора - 3,0 ГГц.
Для
функционирования
COM–объекта
HCCOM
общесистемное программное обеспечение:
 MS Windows 2000 Professional SP4 / XP SP2/ XP SP 3 / Vista / Windows 7;
 MS .NET Framework 2.0;
 MS Internet Explorer 6.0 SP2.
2.2. Назначение и условия применения COM–объекта ApkCOM
COM–объект ApkCOM (COM–объект внешнего АПК) предназначен для
обеспечения информационного взаимодействия с ПК «ЦЗ» и должен реализовывать
функции инициализации пользовательского интерфейса АПК в соответствии с
переданными данными о пациенте и получения результата обследования от внешнего
АПК.
Областью применения COM–объекта ApkCOM является ПК «ЦЗ», применяемый в
Центрах здоровья при проведении профилактических обследований.
Для функционирования COM – компонента внешнего АПК необходима следующая
минимальная конфигурация технических средств:
 процессор Intel-совместимый;
 1024Mb RAM;
 объём свободного дискового пространства – 100Mb;
 тактовая частота процессора - 3,0 ГГц.
Для функционирования COM–объекта ApkCOM необходимо следующее
общесистемное программное обеспечение:
 MS Windows 2000 Professional SP4 / XP SP2/ XP SP 3 / Vista / Windows 7;
 MS .NET Framework 2.0;
 MS Internet Explorer 6.0 SP2.
3. ХАРАКТЕРИСТИКА ПРОГРАММЫ
Библиотека HCCOM.dll является управляемой сборкой и может быть использована
при разработке приложений на платформе .NET.
Также
библиотека
HCCOM.dll
может
быть
зарегистрирована
в
качестве
традиционного COM-объекта. В этом случае вызываемая оболочка COM (COM Callable
Wrapper) библиотеки предоставляет клиентам доступ ко всем интерфейсам, типам данных
и возвращаемым значениям. Для удобства программиста в спецификациях интерфейсов
приведены прототипы функций на языках C++ и C#.
COM-интерфейс IHcCom экспортируется исполняемым модулем HCCOM.dll.
COM-интерфейс IApkCom экспортируется исполняемым модулем, предоставляемым
разработчиком АПК.
3.1. Методы интерфейса IHcCom
В данном разделе описан интерфейс IHcCom, который используется в случае
информационного взаимодействия ПК «ЦЗ» и АПК с использованием COM-объекта
HCCOM.
Интерфейс IHcCom предоставляет 3 метода:
 GetMedCardForApk — экспортирует выбранную в ПК «ЦЗ» медицинскую карту
пациента в приложение АПК;
 SetResearchResult — импортирует результаты обследования из АПК в ПК «ЦЗ»;
 ActivateHcApp — активирует приложение ПК «ЦЗ».
UML-схема использования COM-объекта HCCOM, с указанием используемых
методов интерфейса IHcCom, приведена на рисунке (Рисунок 3).
ПК "ЦЗ"
АПК
HCCOM
Запуск АПК
Запрос на интерфейс IHCCOM
Интерфейс IHCCOM
GetMedCardForApk
GetMedCardForApk
Медицинская карта пациента / код ошибки
Медицинская карта пациента / код ошибки
SetResearchResult
SetResearchResult
Результат сохранения данных
Результат сохранения данных
Блокирование
ПК «ЦЗ» в
ожидании
результатов
обследования
Сохранение
данных
ActivateHcApp
Проведение
обследования
пациента
Повторная
передача
результатов
при неудачном
сохранении
данных
Рисунок 3. UML-схема использования COM-объекта HCCOM с указанием методов
интерфейса IHcCom
Все методы, в случае успешного завершения, возвращают S_OK, в случае ошибки —
стандартные коды ошибок COM.
Используемые типы данных:
 целое – 32 битное целое число (long, LONG);
 строка – строковый тип BSTR;
 IDispatch – базовый интерфейс COM;
 HRESULT – 32 битное целое число.
В описании методов используются понятия входных и выходных параметров.
«Входные» – это параметры метода, в которых передаются значения для
использования внутри вызываемой функции (в стандартном случае, в вызываемый метод
передаётся значение параметра (иначе говоря, параметр по значению)).
«Выходные»
– параметры метода, в которых возвращаются значения в
вызывающую функцию (в стандартном случае, в вызываемый метод передается указатель
на объект, в который необходимо вернуть значение).
Интерфейс IHcCom в нотации IDL
Ниже представлено описание интерфейса IHcCom в нотации Microsoft IDL.
[
odl,
uuid(21B8D2DA-0331-4365-9E65-A501DBCC1749),
version(1.0),
dual,
oleautomation,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, HCCOM.IHcCom)
]
interface IHcCom : IDispatch {
[id(0x60020000)]
HRESULT GetMedCardForApk(
[in] GUID serviceApkGuid,
[out, retval] BSTR* pRetVal);
[id(0x60020001)]
HRESULT SetResearchResult(
[in] GUID serviceApkGuid,
[in] BSTR data);
[id(0x60020002)]
HRESULT ActivateHcApp();
};
Метод GetMedCardForApk
Экспортирует выбранную в ПК «ЦЗ» медицинскую карту пациента в приложение
АПК.
Прототип на C++:
HRESULT GetMedCardForApk(GUID serviceApkGuid, BSTR* pRetVal);
Прототип на C#:
string GetMedCardForApk(Guid serviceApkGuid);
Входные параметры:
 serviceApkGuid — уникальный идентификатор обследования на АПК, согласно
таблице «Таблица обследований на АПК» Приложения 1 документа «Порядок
информационного взаимодействия ПК «ЦЗ» с внешними АПК».
Выходные параметры:
 строка pRetVal — строка в формате XML, содержит медицинскую карту и
показатели здоровья пациента. Структура XML-документа описана в Приложении
2 документа «Порядок информационного взаимодействия ПК «ЦЗ» с внешними
АПК».
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
Функция возвращает XML-документ с данными выбранной медицинской карты
пациента и необходимыми показателями здоровья для проведения обследования
на АПК.
Метод SetResearchResult
Импортирует результаты обследования из АПК в ПК «ЦЗ».
Прототип на C++:
HRESULT SetResearchResult(GUID serviceApkGuid, BSTR data);
Прототип на C#:
void SetResearchResult(Guid serviceApkGuid, string data);
Входные параметры:
 serviceApkGuid — уникальный идентификатор обследования на АПК, согласно
таблице «Таблица обследований на АПК» Приложения 1 документа «Порядок
информационного взаимодействия ПК «ЦЗ» с внешними АПК».
 cтрока data — строка в формате XML, содержит медицинскую карту пациента,
дополненную информацией о проведенном обследовании. Структура XMLдокумента описана в Приложении 2 документа «Порядок информационного
взаимодействия ПК «ЦЗ» с внешними АПК».
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
Функция осуществляет сохранение результатов обследования и отчетных форм в ПК
«ЦЗ».
Метод ActivateHcApp
Функция активации приложения ПК «ЦЗ».
Прототип на C++:
HRESULT ActivateHcApp();
Прототип на C#:
void ActivateHcApp();
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
После завершения обследования АПК должен вызвать функцию COM-объекта ПК
«ЦЗ», для того чтобы сделать активным процесс приложения ПК «ЦЗ».
3.2. Методы интерфейса IApkCom
В данном разделе описан интерфейс IApkCom COM-объекта ApkCOM. Каждый
производитель АПК для взаимодействия с ПК «ЦЗ» должен представить COM-объект,
реализующий интерфейс IApkCom.
Интерфейс IApkCom предоставляет 4 метода:
 InitializeApk — инициализирует пользовательский интерфейс АПК;
 SetMedCardForApk — экспортирует выбранную в ПК «ЦЗ» медицинскую карту
пациента в приложение АПК;
 InspectPatient — запускает обследование пациента в АПК;
 GetResearchResult — экспортирует результат обследования из АПК в ПК «ЦЗ».
UML-схема использования COM-объекта ApkCOM, с указанием используемых
методов интерфейса IApkCom, приведена на рисунке (Рисунок 4).
ПК "ЦЗ"
ApkCOM
АПК
Запрос на интерфейс IApkCOM
Интерфейс IApkCOM
InitializeApk
InitializeApk
Результат запуска АПК / код ошибки
Результат запуска АПК / код ошибки
SetMedCardForApk
SetMedCardForApk
Результат отправки данных / код ошибки
Результат отправки данных / код ошибки
InspectPatient
InspectPatient
GetResearchResult
GetResearchResult
Результаты обследования / код ошибки
Результаты обследования / код ошибки
Проведение
обследования
пациента
Сохранение
данных
Рисунок 4. UML-схема использования COM-объекта ApkCOM с указанием методов
интерфейса IApkCom
Все методы, в случае успешного завершения, возвращают S_OK, в случае ошибки —
стандартные коды ошибок COM.
Используемые типы данных:
 целое – 32 битное целое число (long, LONG);
 строка – строковый тип BSTR;
 IDispatch – базовый интерфейс COM;
 HRESULT – 32 битное целое число.
В описании методов используются понятия входных и выходных параметров.
«Входные» – это параметры метода, в которых передаются значения для
использования внутри вызываемой функции (в стандартном случае, в вызываемый метод
передаётся значение параметра (иначе говоря, параметр по значению)).
«Выходные»
– параметры метода, в которых возвращаются значения в
вызывающую функцию (в стандартном случае, в вызываемый метод передается указатель
на объект, в который необходимо вернуть значение).
Интерфейс IApkCom в нотации IDL
[
odl,
uuid(791EFE44-66A2-41F1-8BBA-F76523D1A0D6),
version(1.0),
dual,
oleautomation,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, HCCOM.IApkCom)
]
interface IApkCom : IDispatch {
[id(0x60020000)]
HRESULT InitializeApk();
[id(0x60020001)]
HRESULT SetMedCardForApk([in] BSTR data);
[id(0x60020002)]
HRESULT InspectPacient(
[in] GUID serviceApkGuid,
[in] GUID visitGuid);
[id(0x60020003)]
HRESULT GetResearchResult(
[in] GUID serviceApkGuid,
[in] GUID visitGuid,
[out, retval] BSTR* pRetVal);
};
Метод InitializeApk
Инициализирует пользовательский интерфейс АПК.
Прототип на C++:
HRESULT InitializeApk();
Прототип на C#:
bool InitializeApk();
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки (в случае реализации на C# —
признак успешной инициализации пользовательского интерфейса АПК).
Логика:
Перед проведением обследования ПК «ЦЗ» должен выполнить инициализацию
приложения АПК.
Метод SetMedCardForApk
Экспортирует выбранную в ПК «ЦЗ» медицинскую карту пациента в приложение
АПК.
Прототип на C++:
HRESULT SetMedCardForApk(BSTR data);
Прототип на C#:
void SetMedCardForApk(string data);
Входные параметры:
 data
— строка в формате XML, содержит медицинскую карту и показатели
здоровья пациента. Структура XML-документа описана в Приложении 2
документа «Порядок информационного взаимодействия ПК «ЦЗ» с внешними
АПК».
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
Функция передает в приложение АПК XML-документ с данными медицинской
карты пациента и необходимыми показателями здоровья для проведения
обследования на АПК.
Метод InspectPatient
Запускает обследование пациента в АПК.
Прототип на C++:
HRESULT InspectPatient(GUID serviceApkGuid, GUID visitGuid);
Прототип на C#:
void InspectPatient(Guid serviceApkGuid, Guid visitGuid);
Входные параметры:
 serviceApkGuid — уникальный идентификатор обследования на АПК. Должен
соответствовать
медицинской
идентификатору
карте
в
обследования,
функции
который
SetMedCardForApk.
передается
в
Идентификаторы
обследований на АПК приведены в таблице «Таблица обследований на АПК»
Приложения 1 документа «Порядок информационного взаимодействия ПК «ЦЗ» с
внешними АПК»;
 visitGuid — уникальный идентификатор посещения пациентом Центра здоровья в
ПК «ЦЗ». Должен соответствовать идентификатору посещения, который
передается в медицинской карте в функции SetMedCardForApk.
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
После передачи в АПК медицинской карты пациента, функция запускает
обследование пациента, например, открывает соответствующую экранную форму
в приложении АПК.
Метод GetResearchResult
Экспортирует результат обследования из АПК в ПК «ЦЗ».
Прототип на C++:
HRESULT GetResearchResult(GUID serviceApkGuid, GUID visitGuid, BSTR*
pRetVal);
Прототип на C#:
string GetResearchResult(Guid serviceApkGuid, Guid visitGuid);
Входные параметры:
 serviceApkGuid — уникальный идентификатор обследования на АПК. Должен
соответствовать
медицинской
идентификатору
карте
в
обследования,
функции
который
SetMedCardForApk.
передается
в
Идентификаторы
обследований на АПК приведены в таблице «Таблица обследований на АПК»
Приложения 1 документа «Порядок информационного взаимодействия ПК «ЦЗ» с
внешними АПК»;
 visitGuid — уникальный идентификатор посещения пациентом Центра здоровья в
ПК «ЦЗ». Должен соответствовать идентификатору посещения, который
передается в медицинской карте в функции SetMedCardForApk.
Выходные параметры:
 pRetVal — строка в формате XML, содержит медицинскую карту пациента,
дополненную информацией о проведенном обследовании. Структура XMLдокумента описана в Приложении 2 документа «Порядок информационного
взаимодействия ПК «ЦЗ» с внешними АПК».
Возвращаемое значение:
S_OK — в случае успеха, иначе — код ошибки.
Логика:
Функция осуществляет экспорт результатов обследования и отчетных форм в ПК
«ЦЗ».
4. ОБРАЩЕНИЕ К ПРОГРАММЕ
4.1. Обращение к методам интерфейса IHcCom из управляемого кода
Ниже приведены примеры использования методов интерфейса IHcCom на языке C#.
1. Для получения возможности обращаться к методам интерфейса IHcCom,
необходимо в проекте сделать ссылку на библиотеку HCCOM.dll и создать
экземпляр класса HcCom:
HcCom hccom = new HcCom();
2. Получение медицинской карты для проведения обследования:
// Идентификатор, соответствующий обследованию
// Биоимпендасный анализ на АПК Медасс
Guid
serviceApkGuid
=
new
Guid(“A446EBFE-FEA6-466F-9EED-
5D37350D9101”);
String medCard = hccom.GetMedCardForApk(serviceApkGuid);
//TODO: выполнить разбор xml-документа медицинской карты и передать
требуемые
//параметры в АПК
3. Сохранение результата обследования в БД ПК «ЦЗ»:
//TODO: провести обследование пациента и сформировать XML-документ с
//результатами обследования
string resultXml = …; //Результат
_hccom.SetResearchResult(serviceApkGuid, resultXml);
4. Активация ПК «ЦЗ»:
_hccom.ActivateHcApp();
4.2. Пример использования интерфейса IHcCom из неуправляемого
кода
// инициализация объекта
IHCCOM* pIHCCOM;
HRESULT hRes = ::CoCreateInstance(__uuidof(UBC), NULL, CLSCTX_ALL,
__uuidof(IHCCOM), (void**) &pIHCCOM);
if ((S_OK != hRes) || (pIHCCOM==NULL))
{
return false;
}
// работа с объектом
if (pIHCCOM != NULL)
{
// Идентификатор, соответствующий обследованию
GUID serviceApkGuid = …
//получение медицинской карты
BSTR* pMedCard;
pIHCCOM-> GetMedCardForApk (serviceApkGuid, &pMedCard);
//TODO: выполнить разбор xml-документа медицинской карты и передать
требуемые
//параметры в АПК
DoJob();
//TODO: провести обследование пациента и сформировать XML-документ с
//результатами обследования
BSTR resultXml = …
// cохранение результата обследования в БД ПК «ЦЗ»
pIHCCOM-> SetResearchResult(serviceApkGuid, resultXml);
//активация ПК «ЦЗ»
pIHCCOM-> ActivateHcApp();
}
4.3. Пример реализации интерфейса IApkCom на языке C#
using System;
using System.Runtime.InteropServices;
namespace HCCOM
{
[ClassInterface(ClassInterfaceType.None)]
//для каждого объекта новый GUID
[Guid("11A0D2FB-A16E-4C09-97B3-BEF2E84B2715")]
public class ApkCom: IApkCom
{
public ApkCom()
{
//для COM необходим конструктор без параметров
}
public bool InitializeApk()
{
//TODO: Инициализация пользовательского интерфейса АПК
// вернуть признак успешной инициализации
}
public void SetMedCardForApk(string data)
{
//TODO: выполнить разбор xml-документа медицинской карты и
//передать требуемые параметры в АПК
}
public
void
InspectPacient(Guid
serviceApkGuid,
Guid
visitGuid)
{
//TODO: произвести обследование пациента
}
public
string
GetResearchResult(Guid
visitGuid)
{
//TODO: сформировать xml-документ
// вернуть результат обследования
}
}
}
serviceApkGuid,
Guid
4.4. Обращение к методам интерфейса IApkCom из управляемого кода
Ниже приведены примеры использования методов интерфейса IApkCom на языке
C#.
1. Для получения возможности обращаться к методам интерфейса IApkCom,
необходимо в проекте сделать ссылку на данную библиотеку и создать экземпляр
класса ApkCom:
ApkCom _apkcom = new ApkCom();
2. Передача данных о пациенте во внешний АПК
//TODO: получить идентификатор посещения
Guid visitGuid = …;
// Идентификатор, соответствующий обследованию
// Биоимпендасный анализ на АПК Медасс
Guid
serviceApkGuid
=
new
Guid(“A446EBFE-FEA6-466F-9EED-
5D37350D9101”);
//TODO:
сформировать
требуемые
xml-документ
медицинской
карты
и
передать
//параметры в АПК
string medCardXml = …;
_apkcom.SetMedCardForApk(medCardXml);
3. Инициализация пользовательского интерфейса АПК
_apkcom.InitializeApk();
4. Проведение обследования на АПК
_apkcom.InspectPacient(serviceApkGuid, visitGuid);
5. Получение результата обследования
string
resultXml
visitGuid);
=
_apkcom.GetResearchResult(serviceApkGuid,
//TODO:
реализовать
//обследования
разбор
xml-документа
и
сохранение
результата
5. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ
XML-документы экспорта и импорта данных имеют единую структуру для всех
типов информационного взаимодействия. XSD-схема XML-документов, используемых
для
взаимодействия,
описана
в
приложении
«
Приложение 2. Описание структуры XML-ДОКУМЕНТА».
Перед вызовом АПК ПК «ЦЗ» формирует XML-документ для передачи его в АПК
одним из трёх описанных способов. XML-документ содержит следующую информацию:

медицинская карта центра здоровья, содержащая персональные
данные пациента;

показатели здоровья пациента, имеющиеся в базе данных ПК «ЦЗ»
(данные являются входными параметрами для АПК);

обследование, результаты которого требуется получить от АПК;

показатели обследования, значения, которых необходимы для
учета в ПК «ЦЗ» (значения являются выходными параметрами для АПК).
ПК
«ЦЗ» перечисляет
в
XML-документе
все
показатели
обследования,
необходимые для учета.
После завершения обследования АПК должен сформировать новый XML-документ
на основе полученного от ПК «ЦЗ», дополнив его следующей информацией о
проведенном обследовании:

результат обследования (заключение)

значения измеренных и рассчитанных показателей;

нижняя и верхняя границы нормы показателя;

относительное значение нормы показателя;

отчетные формы и результаты обследования в графическом
представлении.
АПК должен записать полученные в результате обследования значения и
результат в специальные разделы XML-документа.
Для взаимодействия с ПК «ЦЗ» производителям АПК необходимо согласовать с
ООО «СофТраст» используемые идентификаторы документов:

идентификаторы единиц измерения, являются общими для всех
АПК (приведены в таблице «Таблица показателей»);

идентификаторы показателей здоровья, являются общими для всех
АПК (приведены в таблице «Таблица показателей»);

идентификаторы
программного
обследований
комплекса;
являются
для
каждого
уникальными
для
аппаратнокаждого
обследования, проводимого на АПК (приведены в таблице «Таблица
обследований на АПК»);

идентификаторы показателей обследования, необходимых для
учета, являются уникальными для каждого обследования, проводимого на
АПК
(приведены в таблице «Таблица показателей обследования»).
Перечень всех согласованных с производителями АПК идентификаторов
находится
в
приложении
«
Приложение 1. Таблицы ИДЕНТИФИКАТОРОВ».
ПРИЛОЖЕНИЕ 1. ТАБЛИЦЫ ИДЕНТИФИКАТОРОВ
Таблица показателей:
HealthIndexGUID
(Идентификатор
показателя
947AFFDE-CBCC413B-A7A17F56812D3254
179980C8-F40C4A65-BBD6D5FDD9203463
691E087C-71B64149-B32D407312D4322B
9599243E-D62047D9-9F9624725A3CAA0E
HealthIndex
Name
(Наименова
ние
показателя
Рост
Вес
Окружность
бедер
Окружность
талии
HCServiceUnitGUID
(Идентификатор
единицы
измерения)
HCServiceUnit
Name
(Единица
измерения)
HealthIndexDataT
ypeGUID
(Идентификатор
типа значения)
HealthIndexDataT
ypeName
(Тип значения)
F47BCB15-CB2F40DC-9643B7AC76681317
315E98AF-C95344C0-B6FFE16A145873AC
F47BCB15-CB2F40DC-9643B7AC76681317
F47BCB15-CB2F40DC-9643B7AC76681317
Сантиметр
AC953134-0AA04527-A3279D5477AE1D58
AC953134-0AA04527-A3279D5477AE1D58
AC953134-0AA04527-A3279D5477AE1D58
AC953134-0AA04527-A3279D5477AE1D58
Числовое
значение
Килограмм
Сантиметр
Сантиметр
Таблица обследований на АПК
Наименование
Наименование АПК
обследования
(HCEquipmentName)
(HCServiceName)
Биоимпедансный анализ
АВС-01 Медасс
состава тела
Числовое
значение
Числовое
значение
Числовое
значение
Идентификатор обследования на
АПК (HCServiceApkGUID)
A446EBFE-FEA6-466F-9EED5D37350D9101
Таблица показателей обследования «Биоимпендансный анализ состава тела» для
АПК АВС-01 Медасс:
Наименование
показателя
обследования
(HCServiceApkIndexName)
Активное сопротивление
на 50 кГц
Активное сопротивление
на 5 кГц
Реактивное сопротивление
на 50 кГц
Жировая масса,
нормированная по росту
Тощая масса
Активная клеточная масса
Скелетно-мышечная масса
Общая жидкость
Соотношение талия/бедра
Классификация по
проценту жировой массы
Индекс массы тела
Доля активной клеточной
массы
Идентификатор
показателя
обследования
(HCServiceApkIndexGUID)
B72F31FD-AC5E-4501A3B1-2CA97B5BC779
3313A4A0-BEFA-454E91E1-2145FB4D81D5
1B8912A6-BA23-4A87A04F-56C621373374
AAD84561-BD04-484CA67A-66D3716A35F0
DC7A1E67-8BC5-4C30A2AA-CCE7E720801A
EC1803F2-DA48-40458728-D447DB7FDB70
A60D9654-BAF6-43509993-E7BF027C2468
EC443F0B-E886-45DB9EE1-E97AC3E9DF95
D615F84E-F3BD-4A8C980F-945EFBA9CF18
70F89EA4-C619-40EB8310-485A7A626E71
6F61BE06-03CA-48EA90C5-AAB86B7BB9DB
942202F5-AD90-48BFB290-45D23B4F0B5F
Единица
измерения
(ServiceUnitName)
Ом
Ом
Ом
килограмм
килограмм
килограмм
килограмм
килограмм
килограмм на
квадратный метр
%
Идентификатор
единицы измерения
(ServiceUnitGUID)
933C844A-9FFF-43DDB928-7921662969AB
933C844A-9FFF-43DDB928-7921662969AB
933C844A-9FFF-43DDB928-7921662969AB
315E98AF-C953-44C0B6FF-E16A145873AC
315E98AF-C953-44C0B6FF-E16A145873AC
315E98AF-C953-44C0B6FF-E16A145873AC
315E98AF-C953-44C0B6FF-E16A145873AC
315E98AF-C953-44C0B6FF-E16A145873AC
00000000-0000-00000000-000000000000
00000000-0000-00000000-000000000000
7561786A-3FC5-44B8998E-F39FB47BE890
7FFCFF0D-84B6-45C7A695-0791A297CD10
Доля скелетно-мышечной
массы
Удельный основной обмен
Фазовый угол
биоимпеданса
Внеклеточная жидкость
746FA6B3-3ED7-4FFE99CB-B7D1D3666326
ACC09F4F-D953-4265924E-C442346878C5
AF00567E-52B4-4415B73A-F54CD8CED43F
A0BE5BB9-8B9D-4BC98134-DC8CF75244F7
%
ккал/кв.м сут.
градус
килограмм
7FFCFF0D-84B6-45C7A695-0791A297CD10
7DD63625-B0B6-42489DFF-890A209E156C
5F439184-7CB4-4B3B9082-0AEF62C4F98F
315E98AF-C953-44C0B6FF-E16A145873AC
ПРИЛОЖЕНИЕ 2. ОПИСАНИЕ СТРУКТУРЫ XMLДОКУМЕНТА
Тег: MAIN
Уровень вложенности тега: 1 (корневой)
Тип значения: <составной тип, имеет вложенные теги>
Атрибуты для MAIN:
Имя атрибута: chsm
Тип значения: xs:string
Описание: Контрольная сумма содержимого тэга MAIN
Содержимое тега MAIN:
Тег: FORMAT_GUID
Тип значения: xs:string
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Фиксированное значение тега: C5E44A54-CC8E-4873-BF00-C3D18E8061B7
Описание:
GUID формата файлов. Всегда должен иметь значение C5E44A54-CC8E-4873-BF00-
C3D18E8061B7
Тег: PROTOCOL
Тип значения: xs:string
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Мнемоника протокола, к которому принадлежит данный файл, должна иметь значение Visit.
Тег: CREATE_TIME
Тип значения: xs:dateTime
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Время создания экземпляра файла (например 2010-02-12T16:41:38)
Тег: TITLE
Тип значения: xs:string
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Наименование документа.
Тег: DATAMAIN
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Раздел данных
Содержимое тега DATAMAIN:
Тег: DOCUMENTS
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Раздел данных.
Содержимое тега DOCUMENTS:
Тег: DOC_HealthCentreCard
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Медицинские карты Центра здоровья.
Содержимое тега DOC_HealthCentreCard:
Тег: HealthCentreCard
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (уникальный)
Описание:
Медицинская карта Центра здоровья.
Содержимое тега HealthCentreCard:
Тег
Surname
Name
Patronymic
ADDRESS
N_POL
S_POL
SocStatus_Code
SocStatus_Name
Citizen_Code
Citizen_Name
DDENT
Post
UGUID
EducationType
SMO_Code
SMO_Name
DateOfBirth
LPU
StatusPPatient_Code
StatusPPatient_Name
Fam_P
IM_P
OT_P
OKATO
Описание
Фамилия
Имя
Отчество
Адрес
Номер полиса ОМС
Серия полиса ОМС
Код соц. статуса
Наименование соц.статуса
Код территории проживания
Наименование территории
проживания
Страхователь
Тип значения/пример
Строка
Строка
Строка
Строка
Строка
Строка
Идентификатор мед.карты в
ЦЗ
Строка формата GUID,
Пример:
9C6641E9-7B09-4486-879387CB5C9FB08C
Тип образования
Код страховой медицинской
организации
Наименование страховой
медицинской организации
Дата рождения
ЛПУ
Код ОКАТО
Дата в формате
YYYY-MM-DDTHH:MM:SS
Пример:
2010-01-27T00:00:00
SS
Sex
СНИЛС
Пол
SN_DOC
Серия Номер документа,
удостоверяющего личность
Домашний телефон
Рабочий телефон
Дата начала действия
полиса
Phone_HOME
Phone_WORK
DatePolBegin
DatePolEnd
Дата завершения действия
полиса
TYPEDOC
Тип документа,
удостоверяющего личность
Код ОКВЕД
Дата выдачи полиса ОМС
OKVED
DatePolis
StatusPolis
KATL_code
KATL_name
Код в соответствии с
таблицей:
Код / Значение:
1
Мужской
2
Женский
3
Неопределенный
Строка, пример:
1213 432342
Дата в формате
YYYY-MM-DDTHH:MM:SS
Пример:
2010-01-27T00:00:00
Дата в формате
YYYY-MM-DDTHH:MM:SS
Пример:
2010-01-27T00:00:00
Строка, пример:
Паспорт гражданина РФ
Дата в формате
YYYY-MM-DDTHH:MM:SS
Пример:
2010-01-27T00:00:00
Статус действия полиса
ОМС
Код категории льгот
Наименование категории
льгот
INV_CODE
INV_NAME
Тег: DOC_HCVisit
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (обязательный)
Описание:
Посещения Центра здоровья.
Содержимое тега DOC_HCVisit:
Тег: HCVisit
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): неограниченно
Описание:
Посещение Центра здоровья.
Содержимое тега HCVisit:
Тег
Описание
Тип значения/пример
HealthCentreCardGUID Идентификатор
медицинской карты в
ЦЗ
HCVisitTypeGUID
Тип посещения ЦЗ
VisitDate
Дата посещения
пациентом ЦЗ
UGUID
Идентификатор
посещения в ЦЗ
Строка формата GUID
Пример:
9C6641E9-7B09-4486-879387CB5C9FB08C
Строка формата GUID
Пример:
00000000-0000-0000-0000000000000000
Дата в формате
YYYY-MM-DDTHH:MM:SS
Пример:
2010-02-12T00:00:00
Строка формата GUID
Пример:
10EF918A-0B9C-423D-941684F734D56AFD
Тег: DOC_HealthStateIndices
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (обязательный)
Описание:
Показатели здоровья пациента
Данные показатели получены после проведения обследований в ЦЗ и являются входными
для аппаратно-программных комплексов сторонних производителей.
Содержимое тега DOC_HealthStateIndices:
Тег: HealthStateIndices
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): неограниченно
Описание:
Показатель здоровья пациента
Содержимое тега HealthStateIndices:
Тег
HealthIndexGUID
Описание
Идентификатор
показателя здоровья
HealthIndexName
Наименование
показателя здоровья
HealthIndexValue
Значение показателя
Тип значения/пример
Строка формата GUID,
соответствует столбцу
«Идентификатор показателя» в
таблице «Таблица показателей».
Пример:
947AFFDE-CBCC-413B-A7A17F56812D3254
Строка, соответствует столбцу
«Наименование показателя» в
таблице «Таблица показателей».
Пример:
Рост
Строка, значение в указанных
единицах измерения (тег
HCServiceUnitName).
Пример:
HealthIndexDataTypeGUID Тип данных
показателя
186
Строка формата GUID,
соответствует столбцу
«Идентификатор типа значения» в
таблице «Таблица показателей».
Пример:
AC953134-0AA0-4527-A3279D5477AE1D58
HCServiceUnitGUID
Единица измерения
HCServiceUnitName
Наименование
единицы измерения
HCVisitGUID
Идентификатор
посещения
Строка формата GUID,
соответствует столбцу
«Идентификатор единицы
измерения» в таблице «Таблица
показателей».
Пример:
F47BCB15-CB2F-40DC-9643B7AC76681317
Строка, соответствует столбцу
«Единица измерения» в таблице
«Таблица показателей».
Пример:
см
Строка формата GUID
Пример:
10EF918A-0B9C-423D-941684F734D56AFD
Тег: DOC_HCResearch
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (обязательный)
Описание:
Обследования пациента
Содержимое тега DOC_HCResearch:
Тег: HCResearch
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): неограниченно
Описание:
Обследование пациента.
Содержимое тега HCResearch:
Тег
HCServiceAPKGUID
Описание
Тип значения/пример
Идентификатор
Строка формата GUID,
обследования на АПК соответствует столбцу
Идентификатор обследования на
АПК (HCServiceApkGUID)
таблицы
«Таблицы обследований на АПК»
Пример:
HCServiceName
Наименование
обследования
HCEquipmentName
Наименование АПК
HCResearchResult
Результат
обследования
HCVisitGUID
Идентификатор
посещения
A446EBFE-FEA6-466F-9EED5D37350D9101
Строка, соответствует столбцу
Наименование обследования
(HCServiceName) таблицы
«Таблицы обследований на АПК»
Пример:
Биоимпедансный анализ состава
тела
Строка, соответствует столбцу
Наименование АПК
(HCEquipmentName) таблицы
«Таблицы обследований на АПК»
Пример:
АВС-01 Медасс
Строка, выходной параметр,
заполняется АПК после
проведения обследования
Строка формата GUID
Пример:
10EF918A-0B9C-423D-941684F734D56AFD
Тег: HCResearchIndexData_DOC
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (обязательный)
Описание:
Результаты проведенного обследования.
Содержимое тега HCResearchIndexData_DOC:
Тег: HCResearchIndexData
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): неограниченно
Описание:
Показатель обследования пациента.
Содержимое тега HCResearchIndexData:
Тег
HCResearchGUID
Описание
Идентификатор
обследования на
АПК
HCServiceApkIndexGUID Идентификатор
показателя
обследования
Тип значения/пример
Строка формата GUID
Пример:
147BC7AE-B9A2-45CA-902B648DE65FBD09
Строка формата GUID,
соответствует столбцу
«Идентификатор показателя
обследования» в таблице
«Таблица показателей
обследования».
Пример:
6F61BE06-03CA-48EA-90C5AAB86B7BB9DB
HCServiceApkIndexName
Наименование
показателя
обследования на АПК
ServiceUnitGuid
Идентификатор
единицы измерения
Строка, соответствует столбцу
«Наименование показателя
обследования» в таблице «Таблица
показателей обследования».
Пример:
Индекс массы тела
Строка формата GUID,
соответствует столбцу
«Идентификатор единицы
измерения» в таблице «Таблица
показателей обследования».
Пример:
7561786A-3FC5-44B8-998EF39FB47BE890
ServiceUnitName
Наименование
единицы измерения
Строка соответствует столбцу
«Наименование единицы
измерения» в таблице «Таблица
показателей обследования».
Пример:
килограмм на квадратный метр
Value
Значение показателя
RelativeValue
Относительное
значение показателя
MinNormValue
Минимальное
значение нормы
показателя
Максимальное
значение нормы
показателя
MaxNormValue
Выходной параметр, заполняется
АПК после проведения
обследования
Выходной параметр, заполняется
АПК после проведения
обследования
Выходной параметр, заполняется
АПК после проведения
обследования
Выходной параметр, заполняется
АПК после проведения
обследования
Тег: HCResearchReports_DOC
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): 1 (обязательный)
Описание:
Отчетные формы, полученные после проведения обследования.
Содержимое тега HCResearchReports_DOC:
Тег: HCResearchReport
Тип значения: <составной тип, имеет вложенные теги>
Тег должен быть указан минимум (раз): 1 (обязательный)
Тег должен быть указан максимум (раз): неограниченно
Описание:
Путь к файлу сформированного отчета. Выходной параметр, заполняется АПК.
Пример: D:\report1.jpg
XSD-схема XML-документа.
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemasmicrosoft-com:mapping-schema">
<xs:annotation>
<xs:appinfo>
<sql:relationship name="HCReaserch_HCServiceAPKIndex"
parent="tmp_HCResearch"
parent-key="UGUID"
child="tmp_HCServiceAPKIndex"
child-key="HCResearchGUID" />
<sql:relationship name="HCReaserch_HCResearchReport"
parent="tmp_HCResearch"
parent-key="HCServiceName"
child="tmp_HCResearchReport"
child-key="HCResearchReport" />
</xs:appinfo>
</xs:annotation>
<xs:element name="DOCUMENTS" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="DOC_HealthCentreCard" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="HealthCentreCard" sql:relation="tmp_HealthCentreCard">
<xs:complexType>
<xs:sequence>
<xs:element name="Surname" type="xs:string">
</xs:element>
<xs:element name="Name" type="xs:string">
</xs:element>
<xs:element name="Patronymic" type="xs:string">
</xs:element>
<xs:element name="ADDRESS" type="xs:string">
</xs:element>
<xs:element name="N_POL" type="xs:string">
</xs:element>
<xs:element name="S_POL" type="xs:string">
</xs:element>
<xs:element name="SocStatus_Code" type="xs:string">
</xs:element>
<xs:element name="SocStatus_Name" type="xs:string">
</xs:element>
<xs:element name="Citizen_Code" type="xs:string">
</xs:element>
<xs:element name="Citizen_Name" type="xs:string">
</xs:element>
<xs:element name="DDENT" type="xs:string">
</xs:element>
<xs:element name="Post" type="xs:string">
</xs:element>
<xs:element name="UGUID" type="xs:string">
</xs:element>
<xs:element name="EducationType" type="xs:string">
</xs:element>
<xs:element name="SMO_Code" type="xs:string">
</xs:element>
<xs:element name="SMO_Name" type="xs:string">
</xs:element>
<xs:element name="DateOfBirth" type="xs:dateTime">
</xs:element>
<xs:element name="LPU" type="xs:string">
</xs:element>
<xs:element name="StatusPPatient_Code" type="xs:string">
</xs:element>
<xs:element name="StatusPPatient_Name" type="xs:string">
</xs:element>
<xs:element name="Fam_P" type="xs:string">
</xs:element>
<xs:element name="IM_P" type="xs:string">
</xs:element>
<xs:element name="OT_P" type="xs:string">
</xs:element>
<xs:element name="OKATO" type="xs:string">
</xs:element>
<xs:element name="SS" type="xs:string">
</xs:element>
<xs:element name="Sex" type="xs:string">
</xs:element>
<xs:element name="SN_DOC" type="xs:string">
</xs:element>
<xs:element name="Phone_HOME" type="xs:string">
</xs:element>
<xs:element name="Phone_WORK" type="xs:string">
</xs:element>
<xs:element name="DatePolBegin" type="xs:dateTime">
</xs:element>
<xs:element name="DatePolEnd" type="xs:dateTime">
</xs:element>
<xs:element name="TYPEDOC" type="xs:string">
</xs:element>
<xs:element name="OKVED" type="xs:string">
</xs:element>
<xs:element name="DatePolis" type="xs:dateTime">
</xs:element>
<xs:element name="StatusPolis" type="xs:integer">
</xs:element>
<xs:element name="KATL_code" type="xs:string">
</xs:element>
<xs:element name="KATL_name" type="xs:string">
</xs:element>
<xs:element name="INV_CODE" type="xs:string">
</xs:element>
<xs:element name="INV_NAME" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DOC_HCVisit" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="HCVisit" maxOccurs="unbounded" minOccurs="1" sql:relation="tmp_HCVisit">
<xs:complexType>
<xs:sequence>
<xs:element name="HealthCentreCardGUID" type="xs:string" />
<xs:element name="HCVisitTypeGUID" type="xs:string" />
<xs:element name="VisitDate" type="xs:string" />
<xs:element name="UGUID" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DOC_HealthStateIndices" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="HealthStateIndices" maxOccurs="unbounded" minOccurs="0"
sql:relation="tmp_HealthStateIndices">
<xs:complexType>
<xs:sequence>
<xs:element name="HealthIndexGUID" type="xs:string" />
<xs:element name="HealthIndexName" type="xs:string" />
<xs:element name="HealthIndexValue" type="xs:string" />
<xs:element name="HealthIndexDataTypeGUID" type="xs:string" />
<xs:element name="HCServiceUnitGUID" type="xs:string" />
<xs:element name="HCServiceUnitName" type="xs:string"/>
<xs:element name="HCVisitGUID" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DOC_HCResearch" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="HCResearch" maxOccurs="unbounded" minOccurs="1" sql:relation="tmp_HCResearch">
<xs:complexType>
<xs:sequence>
<xs:element name="HCServiceAPKGUID" type="xs:string" />
<xs:element name="UGUID" type="xs:string" />
<xs:element name="HCServiceName" type="xs:string" />
<xs:element name="HCEquipmentName" type="xs:string" />
<xs:element name="HCResearchResult" type="xs:string" />
<xs:element name="HCVisitGUID" type="xs:string" />
<xs:element name="HCResearchIndexData_DOC" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="HCResearchIndexData"
maxOccurs="unbounded" sql:relation="tmp_HCServiceAPKIndex"
sql:relationship="HCReaserch_HCServiceAPKIndex">
<xs:complexType>
<xs:sequence>
<xs:element
name="HCResearchGUID" type="xs:string" />
<xs:element
name="HCServiceApkIndexGUID" type="xs:string"/>
<xs:element
name="HCServiceApkIndexName" type="xs:string"/>
<xs:element
name="HCServiceUnitGUID" type="xs:string"/>
<xs:element
name="HCServiceUnitName" type="xs:string"/>
<xs:element name="Value"
type="xs:string" />
<xs:element
name="RelativeValue" type="xs:string"/>
<xs:element name="MinNormValue"
type="xs:string"/>
<xs:element name="MaxNormValue"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="HCResearchReports_DOC" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0"
name="HCResearchReport" type="xs:string" sql:relation="tmp_HCResearchReport"
sql:relationship="HCReaserch_HCResearchReport"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DOC_HCAnamnesisData" maxOccurs="1" minOccurs="0" sql:is-constant="1">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Download