Загрузка данных


{
  "method_definition": {
    "identity_and_governance": {
      "standard_id": "ГОСТ_Р_52247-2021",
      "method_code": "А",
      "revision": "Изменение № 2",
      "title": "Нефть. Методы определения хлорорганических соединений (метод А)",
      "target_substance": "Массовая доля органических хлоридов в нефти",
      "status": "approved_for_production",
      "scope": {
        "standardization_object": "Нефть (сырая нефть)",
        "oks_code": "75.040",
        "applicability_range": {
          "min": 1.0,
          "unit": "млн⁻¹",
          "data_type": "number"
        }
      },
      "version_control": {
        "previous_standard_id": "ГОСТ Р 52247-2004",
        "equivalence_status": "modified",
        "verification_requirement": "experiment_required"
      }
    },
    "controlled_vocabulary": {
      "properties": [
        {
          "id": "prop_mass",
          "label": "Масса",
          "unit": "г",
          "data_type": "float"
        },
        {
          "id": "prop_volume",
          "label": "Объем",
          "unit": "см³",
          "data_type": "float"
        },
        {
          "id": "prop_qualitative",
          "label": "Качественная реакция",
          "data_type": "enum"
        }
      ],
      "enumerations": [
        {
          "id": "enum_presence_absence",
          "label": "Наличие/Отсутствие примесей по п. 7.4.3 ГОСТ",
          "items": [
            { "id": "отсутствует", "label": "Реакция отсутствует" },
            { "id": "белый_осадок", "label": "Появление белого осадка (Неорганинические хлориды)" },
            { "id": "желтый_осадок", "label": "Появление желтого осадка (Иод, бром)" },
            { "id": "потемнение", "label": "Потемнение раствора (Наличие сероводорода)" },
            { "id": "черно_коричневый", "label": "Черно-коричневый осадок (Щелочная среда)" }
          ]		
        }
      ],
      "equipment_roles": [
        {
          "id": "isp",
          "label": "Аппарат для разгонки нефти (для получения нафты)",
          "category": "TEST_EQUIPMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "vsp",
          "label": "Колбонагреватель (для получения нафты)",
          "category": "AUXILIARY_EQUIPMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "vsp3",
          "label": "Криотермостат",
          "category": "AUXILIARY_EQUIPMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "T",
          "label": "Термометр (для получения нафты)",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "Si1",
          "label": "Термометр для определения температуры вокруг приёмного цилиндра",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "SI",
          "label": "Микробюретка (при отсутствии автоматического титратора)",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_cylinder_nef",
          "label": "Цилиндр (объем нефти)",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_cylinder_naft",
          "label": "Цилиндр (объем нафты)",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_timer",
          "label": "Секундомер",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_balance_oil",
          "label": "Весы для нефти",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_balance_naft",
          "label": "Весы для нафты",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        },
        {
          "id": "eq_titrator",
          "label": "Титратор автоматический потенциометрический",
          "category": "MEASURING_INSTRUMENT",
          "metadata_schema": {
            "type": "string",
            "serial_number": "string",
            "next_calibration_date": "string"
          }
        }
      ]
    }
  }
  "observation_definitions": {
    "system_fields": [
      {
        "field": "record_date",
        "source": "system.current_date",
        "label": "Дата проведения испытания"
      },
      {
        "field": "sample_id",
        "source": "system.sample_id",
        "label": "Номер образца"
      },
      {
        "field": "operator_name",
        "source": "system.current_user",
        "label": "Исполнитель (ФИО)"
      }
    ],
    "inputs": {
      "hide": {
        "label": "ГСО требует отгона нафты?",
        "data_type": "string",
        "is_mandatory": false,
        "allow_zero": true
      },
      "Vr": {
        "label": "Вода для промывки нафты",
        "data_type": "string",
        "is_mandatory": false,
        "allow_zero": true
      },
      "Solution": {
        "label": "Партия раствора нитрата серебра 0,01 моль/дм³",
        "data_type": "string",
        "is_mandatory": true
      },
      "K": {
        "label": "Действующее значение поправочного коэффициента",
        "data_type": "float",
        "unit": "безразмерная",
        "resolution": 0.00001,
        "is_mandatory": true,
        "allow_zero": false
      },
      "S1": {
        "label": "Результат качественной реакции на наличие неорганических хлоридов",
        "is_mandatory": true,
        "data_type": "enum",
        "enum_ref": "enum_presence_absence",
        "data_source": "MEASUREMENT" 
      },
      "S2": {
        "label": "Результат качественной реакции на наличие сероводорода",
        "is_mandatory": true,
        "data_type": "enum",
        "enum_ref": "enum_presence_absence",
        "data_source": "MEASUREMENT" 		
      }
    },
    "primary_measurements": {
      "Vn": {
        "label": "Объем нефти",
        "data_type": "float",
        "unit": "см³",
        "resolution": 1.0,
        "is_mandatory": true,
        "allow_zero": false
      },
      "m1": {
        "label": "Масса пустой круглодонной колбы",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "m2": {
        "label": "Масса круглодонной колбы с нефтью",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "m3": {
        "label": "Масса пустого приемного цилиндра",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "tv": {
        "label": "Скорость перегонки",
        "data_type": "float",
        "unit": "см³/мин",
        "resolution": 1.0,
        "is_mandatory": true,
        "allow_zero": true
      },
      "V": {
        "label": "Объем отогнанной нафты",
        "data_type": "float",
        "unit": "см³",
        "resolution": 1.0,
        "is_mandatory": true,
        "allow_zero": true
      },
      "m4": {
        "label": "Масса приемного цилиндра с нафтой",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "m6": {
        "label": "Масса емкости с образцом нафты",
        "data_type": "float[]",
        "is_array": true,
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "m5": {
        "label": "Масса емкости без нафты",
        "data_type": "float[]",
        "is_array": true,
        "unit": "г",
        "resolution": 0.1,
        "is_mandatory": true,
        "allow_zero": false
      },
      "V2": {
        "label": "Объем раствора нитрата серебра на титрование пробы",
        "data_type": "float[]",
        "is_array": true,
        "unit": "см³",
        "resolution": 0.0001,
        "is_mandatory": false,
        "allow_zero": false
      },
      "V1": {
        "label": "Объем раствора нитрата серебра для холостого опыта",
        "data_type": "float",
        "unit": "см³",
        "resolution": 0.0001,
        "is_mandatory": false,
        "allow_zero": false
      }
    }
  },
  "process_definition": {
    "operations": [
      {
        "operation_id": "op_qualitative_check",
        "name": "Проверка на сероводород и неорганические хлориды",
        "produces": [
          "S1",
          "S2"
        ]
      },
      {
        "operation_id": "op_distillation",
        "name": "Дистилляция нефти и отбор нафты",
        "preconditions": [
          "S1 == 'отсутствует'",
          "S2 == 'отсутствует'"
        ],
        "equipment": [
          "isp",
          "vsp",
          "vsp3",
          "T",
          "Si1",
          "eq_cylinder_nef",
          "eq_cylinder_naft",
          "eq_timer",
          "eq_balance_oil",
          "eq_balance_naft"
        ],
        "inputs": [
          "Vn",
          "m1",
          "m2"
        ],
        "produces": [
          "m3",
          "m4",
          "V"
        ]
      },
      {
        "operation_id": "op_titration_sample",
        "name": "Титрование образца нафты",
        "equipment": [
          "eq_titrator | SI"
        ],
        "inputs": [
          "m5",
          "m6",
          "Solution",
          "K"
        ],
        "produces": [
          "V2"
        ]
      },
      {
        "operation_id": "op_titration_blank",
        "name": "Проведение холостого опыта титрования",
        "equipment": [
          "eq_titrator | SI"
        ],
        "inputs": [
          "Solution",
          "K"
        ],
        "produces": [
          "V1"
        ]
      }
    ]
  },
  "calculation_definition": {
    "ast_nodes": [
      {
        "id": "mnf",
        "label": "Масса нефти",
        "expression": "m2 - m1",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "m",
        "label": "Масса отогнанной нафты",
        "expression": "m4 - m3",
        "data_type": "float",
        "unit": "г",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "mn",
        "label": "Масса образца нафты для титрования",
        "expression": "m6 - m5",
        "data_type": "float[]",
        "is_array": true,
        "unit": "г",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "C",
        "label": "Точная концентрация раствора нитрата серебра",
        "expression": "K * 0.01",
        "data_type": "float",
        "unit": "моль/дм³",
        "resolution": 0.000001,
        "data_source": "CALCULATION"
      },
      {
        "id": "f",
        "label": "Выход фракции нафты",
        "expression": "m2 - m1 == 0 ? 0.0 : round((m4 - m3) / (m2 - m1), 2)",
        "data_type": "float",
        "unit": "безразмерная",
        "resolution": 0.01,
        "data_source": "CALCULATION"
      },
      {
        "id": "X",
        "label": "Массовая доля хлорорганических соединений в нафте параллельная",
        "expression": "size(V2) == 0 ? 0.0 : ((V2 - V1) * C * 35460) / (m6 - m5)",
        "data_type": "float[]",
        "is_array": true,
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "Xh",
        "label": "Массовая доля хлорорганических соединений в нафте средняя",
        "expression": "size(X) == 0 ? 0.0 : average(X)",
        "data_type": "float",
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "AGGREGATION"
      },
      {
        "id": "Xn",
        "label": "Массовая доля хлорорганических соединений в нефти параллельная",
        "expression": "[x_i * (m2 - m1 == 0 ? 0.0 : round((m4 - m3) / (m2 - m1), 2)) for x_i in X]",
        "data_type": "float[]",
        "is_array": true,
        "unit": "млн⁻¹",
        "data_source": "CALCULATION"
      },
      {
        "id": "Xhn",
        "label": "Массовая доля хлорорганических соединений в нефти средняя",
        "expression": "size(Xn) == 0 ? 0.0 : average(Xn)",
        "data_type": "float",
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "AGGREGATION"
      },
      {
        "id": "calc_diff",
        "label": "Результат контрольной процедуры (размах)",
        "expression": "size(Xn) < 2 ? 0.0 : max(Xn) - min(Xn)",
        "data_type": "float",
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "calc_r",
        "label": "Предел повторяемости по таблице Метода А",
        "expression": "Xhn <= 1.0 ? 0.4 : (Xhn <= 2.0 ? 0.4 + (Xhn - 1.0) * 0.2 : (Xhn <= 3.0 ? 0.6 + (Xhn - 2.0) * 0.1 : (Xhn <= 4.0 ? 0.7 + (Xhn - 3.0) * 0.1 : (Xhn <= 5.0 ? 0.8 + (Xhn - 4.0) * 0.1 : (Xhn <= 6.0 ? 0.9 + (Xhn - 5.0) * 0.2 : (Xhn <= 8.0 ? 1.1 + (Xhn - 6.0) * 0.1 : (Xhn <= 10.0 ? 1.3 + (Xhn - 8.0) * 0.05 : (Xhn <= 12.0 ? 1.35 + (Xhn - 10.0) * 0.125 : 0.32 * pow((Xhn + 0.33), 0.644))))))))))",
        "data_type": "float",
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "calc_final_result",
        "label": "Окончательный результат измерения",
        "expression": "Xhn < 1.0 ? 'менее 1.0 млн⁻¹' : (size(Xn) >= 3 ? (calc_diff <= calc_r ? toString(round(Xhn, 1)) : toString(round(median(Xn), 1))) : toString(round(Xhn, 1)))",
        "data_type": "string",
        "unit": "млн⁻¹",
        "resolution": 0.1,
        "data_source": "CALCULATION"
      },
      {
        "id": "workflow_conclusion",
        "label": "Заключение по результатам контроля повторяемости по ГОСТ Р ИСО 5725-6-2002",
        "expression": "size(Xn) == 2 ? (calc_diff <= calc_r ? 'Результат получен как среднее арифметическое значение 2-х измерений' : 'Метрологический допуск превышен! Требуется получить третье измерение по п. 5.2.2.2') : (size(Xn) == 3 ? (calc_diff <= calc_r ? 'Результаты получены как среднее арифметическое значение результатов 3 измерений, по ГОСТ Р ИСО 5725-6-2002 п.5.2.2.2.' : 'Результаты получены как медиана результатов 3 измерений, по ГОСТ Р ИСО 5725-6-2002 п.5.2.2.2.') : (size(Xn) == 4 ? (calc_diff <= calc_r ? 'Результаты получены как среднее арифметическое значение результатов 4 измерений, по ГОСТ Р ИСО 5725-6-2002 п.5.2.2.1.' : 'Результаты получены как медиана результатов 4 измерений, по ГОСТ Р ИСО 5725-6-2002 п.5.2.2.1.') : 'Неопределенный статус серии'))",
        "data_type": "string",
        "data_source": "CALCULATION"
      }
    ]
  },
  "decision_workflow": {
    "description": "Проверка приемлемости результатов измерений в условиях повторяемости по ГОСТ Р ИСО 5725-6-2002",
    "states": [
      {
        "state_id": "evaluate_repeatability_2",
        "name": "Первоначальное получение результатов двух измерений (п. 5.2.2.1)",
        "condition": "size(Xn) == 2",
        "rule": "calc_diff <= calc_r",
        "on_true": "accepted_average_of_2",
        "on_false": "require_measurement_3"
      },
      {
        "state_id": "evaluate_repeatability_3",
        "name": "Проверка приемлемости при получении третьего измерения (п. 5.2.2.2 b)",
        "condition": "size(Xn) == 3",
        "rule": "calc_diff <= calc_r",
        "on_true": "accepted_average_of_3_by_52222",
        "on_false": "accepted_median_of_3_by_52222" 
      },
      {
        "state_id": "evaluate_repeatability_4",
        "name": "Проверка приемлемости при получении четырех измерений (п. 5.2.2.1)",
        "condition": "size(Xn) == 4",
        "rule": "calc_diff <= calc_r",
        "on_true": "accepted_average_of_4_by_5221",
        "on_false": "accepted_median_of_4_by_5221"
      }
    ]
  },
  "report_profile": {
    "template_id": "GOST_52247_A_REPORT",
    "journal_row_mapping": [
      {
        "header": "Дата проведения испытания",
        "source": "system_fields.record_date"
      },
      {
        "header": "Номер образца",
        "source": "system_fields.sample_id"
      },
      {
        "header": "Исполнитель (ФИО)",
        "source": "system_fields.operator_name"
      },
      {
        "header": "Аппарат для разгонки нефти (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.isp.label, ' ', equipment_roles.isp.type, ', зав. № ', equipment_roles.isp.serial_number, ', дата след. работы: ', equipment_roles.isp.next_calibration_date)"
      },
      {
        "header": "Колбонагреватель (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.vsp.label, ' ', equipment_roles.vsp.type, ', зав. № ', equipment_roles.vsp.serial_number, ', дата след. работы: ', equipment_roles.vsp.next_calibration_date)"
      },
      {
        "header": "Криотермостат (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.vsp3.label, ' ', equipment_roles.vsp3.type, ', зав. № ', equipment_roles.vsp3.serial_number, ', дата след. работы: ', equipment_roles.vsp3.next_calibration_date)"
      },
      {
        "header": "Термометр для разгонки (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.T.label, ' ', equipment_roles.T.type, ', зав. № ', equipment_roles.T.serial_number, ', дата след. работы: ', equipment_roles.T.next_calibration_date)"
      },
      {
        "header": "Термометр приёмного цилиндра (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.Si1.label, ' ', equipment_roles.Si1.type, ', зав. № ', equipment_roles.Si1.serial_number, ', дата след. работы: ', equipment_roles.Si1.next_calibration_date)"
      },
      {
        "header": "Микробюретка (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "has_value(equipment_roles.eq_titrator.serial_number) ? 'Не применяется (используется автотитратор)' : concat(equipment_roles.SI.label, ' ', equipment_roles.SI.type, ', зав. № ', equipment_roles.SI.serial_number, ', дата след. работы: ', equipment_roles.SI.next_calibration_date)"
      },
      {
        "header": "Цилиндр для нефти (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_cylinder_nef.label, ' ', equipment_roles.eq_cylinder_nef.type, ', зав. № ', equipment_roles.eq_cylinder_nef.serial_number, ', дата след. работы: ', equipment_roles.eq_cylinder_nef.next_calibration_date)"
      },
      {
        "header": "Цилиндр для нафты (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_cylinder_naft.label, ' ', equipment_roles.eq_cylinder_naft.type, ', зав. № ', equipment_roles.eq_cylinder_naft.serial_number, ', дата след. работы: ', equipment_roles.eq_cylinder_naft.next_calibration_date)"
      },
      {
        "header": "Секундомер (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_timer.label, ' ', equipment_roles.eq_timer.type, ', зав. № ', equipment_roles.eq_timer.serial_number, ', дата след. работы: ', equipment_roles.eq_timer.next_calibration_date)"
      },
      {
        "header": "Весы для нефти (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_balance_oil.label, ' ', equipment_roles.eq_balance_oil.type, ', зав. № ', equipment_roles.eq_balance_oil.serial_number, ', дата след. работы: ', equipment_roles.eq_balance_oil.next_calibration_date)"
      },
      {
        "header": "Весы для нафты (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_balance_naft.label, ' ', equipment_roles.eq_balance_naft.type, ', зав. № ', equipment_roles.eq_balance_naft.serial_number, ', дата след. работы: ', equipment_roles.eq_balance_naft.next_calibration_date)"
      },
      {
        "header": "Автоматический титратор (Тип, Зав. №, Дата следующей метрологической работы)",
        "source": "concat(equipment_roles.eq_titrator.label, ' ', equipment_roles.eq_titrator.type, ', зав. № ', equipment_roles.eq_titrator.serial_number, ', дата след. работы: ', equipment_roles.eq_titrator.next_calibration_date)"
      },
      {
        "header": "Объем нефти, см³",
        "source": "Vn"
      },
      {
        "header": "Масса пустой колбы, г",
        "source": "m1"
      },
      {
        "header": "Масса круглодонной колбы с нефтью, г",
        "source": "m2"
      },
      {
        "header": "Масса нефти, г",
        "source": "mnf"
      },
      {
        "header": "Скорость перегонки, см³/мин",
        "source": "tv"
      },
      {
        "header": "Объем отогнанной нафты, см³",
        "source": "V"
      },
      {
        "header": "Масса пустого цилиндра, г",
        "source": "m3"
      },
      {
        "header": "Масса цилиндра с нафтой, г",
        "source": "m4"
      },
      {
        "header": "Масса отогнанной нафты, г",
        "source": "m"
      },
      {
        "header": "Выход фракции нафты",
        "source": "f"
      },
      {
        "header": "Результат качественной реакции на наличие неорганических хлоридов",
        "source": "S1"
      },
      {
        "header": "Результат качественной реакции на наличие сероводорода",
        "source": "S2"
      },
      {
        "header": "Масса емкости с образцом нафты, г",
        "source": "m6"
      },
      {
        "header": "Масса емкости без образца нафты, г",
        "source": "m5"
      },
      {
        "header": "Масса навески нафты для титрования, г",
        "source": "mn"
      },
      {
        "header": "Объем раствора нитрата серебра (холостой опыт), см³",
        "source": "V1"
      },
      {
        "header": "Объем раствора нитрата серебра на титрование пробы, см³",
        "source": "V2"
      },
      {
        "header": "Точная концентрация раствора нитрата серебра, моль/дм³",
        "source": "C"
      },
      {
        "header": "Массовая доля хлорорганических соединений в нафте (Среднее), млн⁻¹",
        "source": "Xh"
      },
      {
        "header": "Массовая доля хлорорганических соединений в нефти (Среднее), млн⁻¹",
        "source": "Xhn"
      },
      {
        "header": "Результат контрольной процедуры (размах), млн⁻¹",
        "source": "calc_diff"
      },
      {
        "header": "Предел повторяемости по ГОСТ, млн⁻¹",
        "source": "calc_r"
      },
      {
        "header": "Окончательный результат измерения",
        "source": "calc_final_result"
      },
      {
        "header": "Заключение по результатам контроля повторяемости",
        "source": "workflow_conclusion"
      }
    ]
  }
}