Описание API-интерфейса

Назначение

Автоматизация процесса ввода и получения данных по заказам на сайте lab.liner74.ru

Начало работы

Список запросов:

Пример

Пример POST /zak/lst

Рекомендуемый алгоритм работы:

Шаг Рекомендации Пример команды
Отправка заказов
  • Данные передаются методом Добавление заказов
  • Строки заказа формируется в порядке передачи пробирок с биоматериалом
  • Рекомендуется передавать локальный код заказа (
    выделен красным цветом
    ), т.к. в этом случае на принимающей стороне не смогут изменить данные заказа - только удалить
  • Локальный код заказа должен быть уникальным!
  • В локальной программе рекомендуется запретить редактирование и удаление заказа после отправки данных в лабораторию
  • Если во время метода Добавление заказов произошла ошибка - метод автоматически аннулирует действия - данные в лабораторию не передаются. Полученную ошибку метода рекомендуется довести до пользователя локальной системы
  POST: /zaks/ins
  {
   payload: {
        arr: [
          {
          zak: {
              cod:      '1051',
              bc:       '0071250922'
          },
          kard: {
              f:        'Иванов',
              i:        'Иван',
              o:        '',
              dr:       '01.01.2000',
              woman: 	0,
              work: 	'',
              email: 	'',
              phone: 	''
          },
          isl: [
               {
                cod:    '3.9.1.',
                nppbio: 2
               }
              ,
               {
                npp:    10
               }
              ,
               {
                npp:    11
               }
         ]
        },
        {
          zak: {
              cod:      '1052',
              bc:       '0071250923'
          },
          kard: {
              f:        'Сидоров',
              i:        'Сидор',
              o:        '',
              dr:       '01.01.2000',
              woman: 	0,
              work: 	'',
              email: 	'',
              phone: 	''
          },
          isl: [
               {
                cod:    '3.9.1.',
                nppbio: 2
               }
              ,
               {
                npp:    10
               }
              ,
               {
                npp:    11
               }
         ]
        }
      ]
  }
            
Получение заказа (результата исследования) - заказ завершен
  1.Запрос
  POST: /zak/lst
  {
   payload: {
    zak: {
     cod:      '1051'
    }
   }
  }
    Ответ
  {
   err: '',
   path: '/zak/lst',
   data: {
    caption: 'Список заказов',
    rows: [
      {
      npp: 32119,
      cod:      '1051'
      date_input: '24.12.2023 15:50',
      date_done: '25.12.2023 15:50',
      namestatus: 'Выполнен',
      nppstatus: 5
      }
    ]
   }
  }
  2.Загрузка результатов исследований
  POST: /zak/prn
  {
   payload: {
    zak: {
     cod:      '1051'
    }
   }
  }
    Ответ
  {
   err: '',
   path: '/zak/prn',
   data: {
    caption: 'Печать результата заказа',
    nppzak: 32119,
    codzak: '1051',
    header: {...}
   },
   rows: [ [Object], [Object], [Object] ]
   }
  }
            
Получение заказа (результата исследования) - заказ не найден!
  • Если заказ не найден, то он был удален в лаборатории - это же действие необходимо выполнить в локальной системе!
  1.Запрос
  POST: /zak/lst
  {
   payload: {
    zak: {
     cod:      '1051'
    }
   }
  }
    Ответ
  {
   err: '',
   path: '/zak/lst',
   data: {
    caption: 'Список заказов',
    rows: null
   }
  }
    Удалить данные заказа 1051
в локальной системе

Список заказов

POST /zak/lst POST /zak/lst

Передаваемые данные:

Параметр Обязательный параметр? Тип Описание
zak нет json
  • Информация об интервале дат заведения заказов
zak.date_beg рекомендуется строка
  • Дата начала интервала.
  • Если введена только одна дата date_beg - отчет за один день.
  • Если введены даты date_beg и date_end - отчет за интервал.
  • Если обе даты пустые или не передано параметров - список всех заказов.
zak.date_beg нет строка
  • Дата окончания интервала.
zak.npp нет число
  • Код заказа.
  • Если указан, то zak.cod игнорируется
zak.cod нет строка
  • Локальный код заказа.
Запрос данных заказа по коду лаборатории json
  {
   payload: {
    zak: {
     npp: 52881,
    }
   }
  }
            
Запрос данных заказа по локальному коду json
  {
   payload: {
    zak: {
     cod: '1051',
    }
   }
  }
            
Запрос заказов за интервал json
  {
   payload: {
    zak: {
     date_beg: '24.12.2023',
     date_end: '30.12.2023'
    }
   }
  }
            
Пример данных в формате postman №1 json
  {
   "payload": {
    "zak": {
     "date_beg": '24.12.2023',
     "date_end": '30.12.2023'
    }
   }
  }
            
Пример данных в формате postman №2 (запрос всех заказов) json
  {
   "payload": {}
  }
            
Пример данных в формате postman №3 (запрос всех заказов) не передано данных

Ответ:

Параметр Тип Описание
err строка
  • Если пустая строка, запрос выполнен
  • Иначе сообщение об ошибке
path строка
  • строка запроса
data json
  • Блок возвращаемых данных
data.caption строка
  • Наименование запроса
data.rows массив
  • Массив заказов
data.rows[].npp число
  • Код заказа
data.rows[].date_input строка
  • Дата заведения заказа
data.rows[].date_done строка
  • Дата завершения заказа
data.rows[].namestatus строка
  • Статус заказа
data.rows[].nppstatus число
  • Код статуса заказа
  • ОДин код может иметь несколько наименований-уточнений. Например Выполнен, Выполнен (отправлено), Выполнен (не отправлено)
Пример ответа json
  {
   err: '',
   path: '/zak/lst',
   data: {
    caption: 'Список заказов',
    rows: [
      {
      npp: 32119,
      cod: '',
      date_input: '24.12.2023 15:50',
      date_done: '',
      namestatus: 'Подтвержден',
      nppstatus: 2
      }
    ,
      {
      npp: 32120,
      cod: '',
      date_input: '24.12.2023 15:50',
      date_done: '',
      namestatus: 'Подтвержден',
      nppstatus: 2
      }
    ]
   }
  }
            
Пример ответа на запрос заказа по коду и заказ не найден (удаленный заказ) json
  {
   err: '',
   path: '/zak/lst',
   data: {
    caption: 'Список заказов',
    rows: null
   }
  }
            

Добавление заказа

POST /zak/ins POST /zak/ins

Передаваемые данные:

Параметр Обязательный параметр? Тип Описание
zak рекомендуется json
  • Блок параметров нового заказа
zak.cod рекомендуется строка
  • Используемый в локальной информационной системе код заказа.
  • Передаваемый код должен быть уникальным.
  • Этот код можно использовать в других запросах.
  • Рекомендуется передавать для обеспечения уникальности заказов.
kard да строка
  • Блок описания пациента
kard.f да строка
  • Фамилия.
kard.i нет строка
  • Имя.
kard.o нет строка
  • Отчество.
kard.dr да строка
  • Дата рождения.
kard.woman да число
  • Пол.
  • 1- женщина.
  • 0- мужчина.
kard.work нет строка
  • Место работв.
kard.email нет строка
  • Электронная почта.
kard.phone нет строка
  • Телефон для связи.
isl да массив
  • Блок исследований
  • Каждое исследование имеет уникальный числовой код (npp) и символьный код БИ (cod).
  • Можно использовать и тот и другой код.
  • Если указано оба кода, то будет использован числовой код npp.
isl.npp рекомендуется число
  • Уникальный числовой код исследования.
  • Если передан, то является приоритетным.
isl.cod да строка
  • Уникальный символьный код исследования.
  • Если передан вместе с числовым кодом, то игнорируется.
isl.nppbio нет число
Пример данных json
  {
    payload:{
      zak: {
       cod: '123-У2023',
      },
      kard: {
       f: 'Иванов',
       i: 'Иван',
       o: 'Иванович',
       dr: '22.01.2000',
       woman: 0,
       work: 'work',
       email: 'email@mail.ru',
       phone: '8908111111'
      },
      isl:[
       {
        cod: '3.9.1.',
        nppbio: 2
       }
      ,
       {
        npp: 10
       }
      ,
       {
        npp: 11
       }
      ]

      }
    }
  }
          
Пример данных в формате postman json
  {
   "payload": {
    "kard": {
     "f":     "Иванов",
     "i":     "Иван",
     "o":     "Иванович",
     "dr":    "22.01.2024",
     "woman": 0,
     "work":  "work",
     "email": "email",
     "phone": "phone"
      },
    "isl": [
     {"npp":  2},
     {"npp":  10},
     {"npp":  11}
    ]
 }
}

Ответ:

Параметр Тип Описание
err строка
  • Если пустая строка, запрос выполнен
  • Иначе сообщение об ошибке
path строка
  • строка запроса
data json
  • Блок возвращаемых данных
data.caption строка
  • Наименование запроса
data.nppkard число
  • Код пациента в картотеке.
  • -1 - пустое значение.
data.kard_inserted число
  • 0 - пациент уже был в картотеке.
  • 1 - пациент был добавлен в картотеку.
  • -1 - пустое значение.
data.nppzak число
  • Код заказа.
  • -1 - пустое значение.
data.codzak строка
  • Кад заказа локальной информационной системы, если был передан.
data.nppstatus число
  • Кад статуса.
data.namestatus строка
  • Наименование статуса.
data.bc строка
  • Штрих код заказа.
Пример положительного ответа json
  {
  err: '',
  path: '/zak/ins',
  data: {
   caption: 'Добавление заказа',
   nppkard: 28137,
   kard_inserted: 0,
   nppzak: 32128,
   codzak: '123-fftr212'
   nppstatus: 2
   namestatus: 'Подтвержден'
   bc: '1000000049199'
   }
  }
            
Пример отрицательного ответа json
  {
  err: 'Локальный код заказа (123-fftr212) не уникален, ',
  path: '/zak/ins',
  data: {
   caption: 'Добавление заказа',
   nppkard: -1,
   kard_inserted: -1,
   nppzak: -1,
   codzak: '123-fftr212'
   nppstatus: 0
   namestatus: ''
   bc: ''
   }
  }
            

Добавление заказов

POST /zaks/ins POST /zak/ins

Передаваемые данные:

  • Рекомедуется использовать этот метод, т.к. по завершении запроса формируются данные штатива, штатив готов к передаче в лабораторию для проведения анализов и статус всего списка заказов устанавливатеся на "Исследуется"
  • Параметр Обязательный параметр? Тип Описание
    массив да json
    • Массив строк формата /zak/ins
    • Массив данных запишется в базу данных только в случае отсутствия ошибок
    • Рекомедуется использовать этот метод, т.к. по завершении запроса формируются данные штатива, штатив готов к передаче в лабораторию для проведения анализов и статус всего списка заказов устанавливатеся на "Исследуется"
    • Передавать данные нужно в том порядке, в котором биоматериалы располагаются в штативе
    Пример данных json
      {
        payload:{
          arr: [
            {
            zak: { cod: 1, bc: '0303134' },
            kard: {
            f: 'ТЕСТ',
            i: 'МАРИНА',
            o: 'ВИКТОРОВНА',
            dr: '01.12.1987',
            woman: 1,
            work: '',
            email: '',
            phone: ''
            },
            isl: [ {"npp":63} ]
            }
          ,
            {
            zak: { cod: 2, bc: '0303135' },
            kard: {
            f: 'ТЕСТ',
            i: 'ИРИНА',
            o: 'ВИКТОРОВНА',
            dr: '01.12.1987',
            woman: 1,
            work: '',
            email: '',
            phone: ''
            },
            isl: [ {"npp":63} ]
            }
          ]
        }
      }
              

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    • Выходит первая случившаяся ошибка, а не список всех ошибок
    path строка
    • строка запроса
    data json
    • Блок возвращаемых данных
    data.caption строка
    • Наименование запроса
    data.arr массив
    • строки формата ответа из /zak/ins
    Пример положительного ответа json
     {
      err: '',
      path: '/zaks/ins',
      data: {
        caption: 'Добавление заказов',
        arr: [
          {
          nppkard: 28140,
          kard_inserted: 0,
          nppzak: 32159,
          codzak: '1',
          nppstatus: 2,
          namestatus: 'Подтвержден',
          bc: '1000000032159',
          err: ''
          }
        ,
          {
          nppkard: 28141,
          kard_inserted: 0,
          nppzak: 32160,
          codzak: '2',
          nppstatus: 2,
          namestatus: 'Подтвержден',
          bc: '1000000032160',
          err: ''
          }
        ]
        }
      }
                
    Пример отрицательного ответа json
      {
        err: 'rest_zaks_ins(Ошибка: XXXXXXXXXXX......',
        path: '/zaks/ins',
        data: { caption: 'Добавление заказов', arr: [] }
      }
                

    Удаление заказа

    POST /zak/del POST /zak/del

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    zak да json
    • Информация об удаляемом заказе
    zak.cod рекомендуется строка
    • Код заказа в локальной информационной системе.
    zak.npp да число
    • Код заказа
    • Если передан - в приоритете
    Пример данных в формате postman json
     {
       "payload": {
          "zak": {
             "npp": 32126
          }
       }
     }
                

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    data json
    • Блок возвращаемых данных
    data.caption строка
    • Наименование запроса
    data.nppzak число
    • Удаляемый код заказа
    Пример положительного ответа json
     {
       err: '',
       path: '/zak/del',
       data: {
          caption: 'Удаление заказа',
          nppzak: 32127
       }
     }
                 
    Пример отрицательного ответа json
     {
       err: 'Не найден код заказа (32127)',
       path: '/zak/del',
       data: {
          caption: 'Удаление заказа',
          nppzak: 32127
        }
     }

    Загрузка результатов лабораторных исследований

    POST /zak/prn POST /zak/prn

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    zak да json
    • Информация о заказе
    zak.cod рекомендуется строка
    • Код заказа в локальной информационной системе.
    zak.npp да число
    • Код заказа
    • Если передан - в приоритете
    Пример данных в формате postman json {
     "payload": {
      "zak": {
       "npp": 32128
      }
     }
    }

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    data json
    • Блок возвращаемых данных
    data.caption строка
    • Наименование запроса
    Все передаваемые поля
    • Передаваемые поля дублируют структуру документа Результат лабораторных исследования
    • Передаются значения всех полей для формирования документа Результат лабораторных исследования
    • Дополнительное поле statusnorm может иметь значения: -1 ниже, 0 никакой, 1 норм, 2 выше, 3- ошибка!
    Пример положительного ответа json
      {
       err: '',
       path: '/zak/prn',
       data: {
        caption: 'Печать результата заказа',
        nppzak: 32067,
        codzak: '111',
        header: {
         namekard: 'ИАВНОВ И Б',
         namewoman: 'Мужчина',
         work: '-',
         input: '13.09.2023 18:10',
         done: '14.09.2023 02:34',
         nameorg: 'МЦ "XXXXX"',
         namebio: ' '
       },
       rows: [ [Object], [Object], [Object] ]
       }
      }
    
      где Object подобен
    
      {
       nppisl: 61,
       codisl: '20.80.',
       nameisl: 'Сифилис сум. АТ (IgG и IgM) (кач)',
       isl_method: 'Не указано',
       isl_equipment: 'Не указано',
       rem: '',
       rows: [
        {
          npppok: 26,
          namepok: 'Сифилис сум. АТ (IgG и IgM) (кач)',
          res: 'отрицательно',
          statusnorm: 1,  /*1-ok 0-bad*/
          nameed: 'отрицательно/положительно',
          norm: 'отрицательно'
        }
       ]
      }
                
    Пример отрицательного ответа json
      {
       err: 'Не найден код заказа (320671), ',
       path: '/zak/prn',
       data: {
        caption: 'Печать результата заказа',
        nppzak: 320671,
        codzak: '111',
        header: {
         namekard: null,
         namewoman: null,
         work: null,
         input: null,
         done: null,
         nameorg: null,
         namebio: null
        },
        rows: null
       }
      }
                

    Загрузка справочника Биоматериалы

    POST /dir/bio POST /dir/bio

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    Нет параметров

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    table json
    • Информация о запрашиваемом справочнике
    table.rows массив
    • Строки справочника
    Пример ответа json
      {
       err: '',
       path: '/dir/bio',
       table: {
        name: 'bio',
        caption: 'Биоматериалы',
        notes: 'Справочник вариантов биоматериалов для исследования из таблицы isl',
        rows: [
         [Object], [Object], [Object],
        ]
       }
      }
    
      где Object подобен
    
      { npp: 1, name: 'капиллярная кровь' }
                

    Загрузка справочника Исследования

    POST /dir/isl POST /dir/isl

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    Нет параметров

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    table json
    • Информация о запрашиваемом справочнике
    table.rows массив
    • Строки справочника
    table.rows[].bio_cnt число
    • Если у исследования заявлено количество биоматериалов больше одного, то при заказе исследования обязательно указывать код биоматериала. Смотреть Добавление заказа
    Пример ответа json
      {
       err: '',
       path: '/dir/isl',
       table: {
        name: 'isl',
        caption: 'Исследования',
        notes: 'Справочник исследований',
        rows: [
         [Object], [Object], [Object],
        ]
       }
      }
    
      где Object подобен
    
      {
       npp: 257,
       cod: '08-017',
       name: 'Суммарные иммуноглобулины E (IgE) в сыворотке',
       bio_cnt: 1,
       bio: [ [Object2] ]
      },
    
      где Object2 подобен
    
      { npp: 2, name: 'венозная кровь' }
                

    Загрузка справочника Статусы заказов

    POST /dir/status POST /dir/status

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    Нет параметров

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    table json
    • Информация о запрашиваемом справочнике
    table.rows массив
    • Строки справочника
    Пример ответа json
      {
       err: '',
       path: '/dir/status',
       table: {
        name: 'status',
        caption: 'Статусы',
        notes: 'Справочник статусов заказов',
        rows: [
         [Object], [Object], [Object],
        ]
       }
      }
    
      где Object подобен
    
      { npp: 2, name: 'Подтвержден' },
                

    Информация о текущей версии сервиса

    POST /ver POST /ver

    Передаваемые данные:

    Параметр Обязательный параметр? Тип Описание
    Нет параметров

    Ответ:

    Параметр Тип Описание
    err строка
    • Если пустая строка, запрос выполнен
    • Иначе сообщение об ошибке
    path строка
    • строка запроса
    api.ver строка
    • Версия REST сервиса
    server.ver строка
    • Версия SQL сервиса
    Пример ответа json
      {
       err: '',
       path: '/ver',
       api: { ver: '01.01' },
       server: { ver: '01.02' }
      }

    Пример запросов из программы POSTMAN

    POSTMAN POSTMAN

    1.Настроить Basic Auth, ввести логин и пароль

    post

    2.Настроить в Headers Content-Type application/json

    post

    3.Сделать запрос

    post

    Правки внесены 25.12.2023г.