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


{
  "method_definition": {
    "identity_and_governance": {
      "standard_id": "ГОСТ_Р_52247-2021",
      "method_code": "Г", // 15.09.26  Г. КМ: устранено
      "revision": "Изменение № 1",
      "title": "Нефть. Методы определения хлорорганических соединений (метод Г)",// 15.09.26 метод Г
      "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": "Наличие/Отсутствие",
                    "items": [
                        { "id": "отсутствует", "label": "Реакция отсутствует" },
                        { "id": "присутствует", "label": "Реакция присутствует" }
                    ]
                }
            ],
            "equipment_roles": [
                { "id": "eq_distillation", "label": "Аппарат для разгонки нефти", "category": "TEST_EQUIPMENT" },
                { "id": "eq_heater", "label": "Колбонагреватель", "category": "AUXILIARY_EQUIPMENT" },
                { "id": "eq_cryostat", "label": "Криотермостат", "category": "AUXILIARY_EQUIPMENT" },
                { "id": "eq_cylinder_nef", "label": "Цилиндр (объем нефти)", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_cylinder_naft", "label": "Цилиндр (объем нафты)", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_balance_nef", "label": "Весы для нефти", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_balance_naft", "label": "Весы для нафты", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_thermometer_dist", "label": "Термометр (для получения нафты)", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_thermometer_amb", "label": "Термометр для определения температуры вокруг приемного цилиндра", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_timer", "label": "Секундомер", "category": "MEASURING_INSTRUMENT" },
                { "id": "eq_chlorine_analyzer", "label": "Анализатор хлора", "category": "MEASURING_INSTRUMENT" }
            ]
        },
        "observation_definitions": {
            "system_fields": [
                { "field": "record_date", "source": "system.current_date", "label": "Дата проведения испытания" },
                { "field": "sample_id", "source": "system.sample_id", "label": "Номер образца" },//15.09.26 Номер образца
                { "field": "operator_name", "source": "system.current_user", "label": "Исполнитель (ФИО)" }
            ],
            "inputs": { //15.09.26 исключаем поправки + перепроверить точность, она не соответствует.  
				"S1": { "label": "Результат качественной реакции на наличие неорганических хлоридов", "data_type": "enum", "enum_ref": "enum_presence_absence", "is_mandatory": true, "data_source": "MEASUREMENT" },
                "S2": { "label": "Результат качественной реакции на наличие сероводорода", "data_type": "enum", "enum_ref": "enum_presence_absence", "is_mandatory": true, "data_source": "MEASUREMENT" },
            },
            "primary_measurements": {

                "Vnef": { "label": "Объем нефти", "data_type": "float", "unit": "см³", "resolution": 1.0, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
				"Vnaf": { "label": "Объем отогнанной нафты", "data_type": "float", "unit": "см³", "resolution": 1.0, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
				
				
                "m1": { "label": "Масса пустой круглодонной колбы", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
                "m2": { "label": "Масса круглодонной колбы с нефтью", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
                "m3": { "label": "Масса пустого приемного цилиндра", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
                "m4": { "label": "Масса приемного цилиндра с нафтой", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "MEASUREMENT" },
				"mnef": { "label": "Масса нефти", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
                "mnaf": { "label": "Масса нафты", "data_type": "float", "unit": "г", "resolution": 0.1, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
				
				"f": { "label": "Выход фракции нафты", "data_type": "float", "unit": "безразмерная", "resolution": 0.01, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
                "tv": { "label": "Скорость дистилляции", "data_type": "float", "unit": "см³/мин", "resolution": 1.0, "is_mandatory": true, "allow_zero": true, "data_source": "MEASUREMENT" },				

				
				"N": { "label": "Массовая доля хлорорганических соединений в нафте (Едиинчные результаты)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.1, "is_mandatory": true, "is_array": true, "min_items": 2, "max_items": 4, "data_source": "MEASUREMENT" },// 15.09.26 неправильное обозначение, должно быть N. КМ: устранено, было X_array
				"Xnaf": { "label": "Массовая доля хлорорганических соединений в нафте (Среднее)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.1, "is_mandatory": false, "allow_zero": false, "data_source": "AGGREGATION" },
				
				"Xnef": { "label": "Массовая доля хлорорганических соединений в нефти (Единичные результаты)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.1, "is_mandatory": false, "allow_zero": false, "data_source": "CALCULATION" },
				"X": { "label": "Массовая доля хлорорганических соединений в нефти (Среднее)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.1, "is_mandatory": false, "allow_zero": false, "data_source": "AGGREGATION" },// 15.09.26 Для нефти обозначение Х, точность 0,1. КМ: устранено
				
				// 15.09.26 пересмотреть блок ниже. поправки убрать некоторые строки не относятся к этому методу+точность. КМ: замечание непринято.  
                
                "N_array": { "label": "Единичные измерения массовой доли хлоридов (с коррекцией на выход фракции)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.05, "is_mandatory": true, "is_array": true, "min_items": 2, "max_items": 4, "data_source": "CALCULATION" },
                "calc_diff": { "label": "Фактическое расхождение (Размах)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.05, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
                "calc_r": { "label": "Повторяемость (сходимость)", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.05, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
                "calc_final_result": { "label": "Окончательный результат измерения", "data_type": "float", "unit": "млн⁻¹", "resolution": 0.05, "is_mandatory": true, "allow_zero": false, "data_source": "CALCULATION" },
	
            }
        },
        "process_definition": {
            "operations": [
                {
                    "operation_id": "op_qualitative_check",
                    "name": "Проверка на сероводород и неорг. хлориды",
                    "produces": ["S1", "S2"]
                },
                {
                    "operation_id": "op_distillation",
                    "name": "Дистилляция нефти и отбор нафты",
                    "equipment": ["eq_distillation", "eq_heater", "eq_cryostat", "eq_thermometer_dist", "eq_timer"],
                    "inputs": ["Vnef", "m1", "m2"],
                    "produces": ["mnef", "Vnaf", "m3", "m4", "mnaf"]
                },
                {
                    "operation_id": "op_measurement",
                    "name": "Анализатор хлора",
                    "equipment": ["eq_icp_ms", "eq_balance_naft", "eq_cylinder_naft", "eq_chlorine_analyzer"],
                    "inputs": [],
                    "produces": ["N"] //15.09.26 переменная N. КМ: было X_array
                }
            ]
        },
        "calculation_definition": {
            "ast_nodes": [
                { 
                    "id": "mnef", 
                    "label": "Масса нефти (m2 - m1)", 
                    "expression": "m2 - m1", 
                    "unit": "г", 
                    "resolution": 0.01, 
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "mnaf", 
                    "label": "Масса нафты (m4 - m3)", 
                    "expression": "m4 - m3", 
                    "unit": "г", 
                    "resolution": 0.01, 
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "f", 
                    "label": "Выход фракции нафты", 
                    "expression": "(mnef = 0 ? 0 : mnaf / mnef)", 
                    "unit": "безразмерная", 
                    "resolution": 0.01, 
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "N_array_raw", 
                    "label": "Массовая доля хлорорганических соединений в нафте (с коррекцией) - массив сырых измерений", // 15.09.26 терминология. КМ: не устранено.
                    "expression": "map(X_array, x => x * f)", //15.09.26 N не получается по этой формуле. Так получается Xnef. А уже из среднего Xnef получается итоговое значение Х - массовая доля органических соединений в нефти. КМ: замечание не устранено. Что в итоге делаем?
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, 
                    "data_type": "float[]", 
                    "is_array": true, 
                    "min_items": 2, 
                    "max_items": 4, 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "N_array", //15.09.26 зачем это?. КМ: Для calc_diffa
                    "label": "Массовая доля хлорорганических соединений в нафте - массив", 
                    "expression": "map(N, x => x * f)", //КМ? устранено. Было X_array
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, 
                    "data_type": "float[]", 
                    "is_array": true, 
                    "min_items": 2, 
                    "max_items": 4, 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "Xnaf", 
                    "label": "Массовая доля хлорорганических соединений в нафте (Среднее)", 
                    "expression": "(N_array = null ? null : average(N_array))", 
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, // 15.09.26 точность 0,1. КМ:устранено
                    "data_type": "float", 
                    "data_source": "AGGREGATION" 
                },
                { 
                    "id": "Xnef", 
                    "label": "Массовая доля хлорорганических соединений в нефти (Единичные результаты)", 
                    "expression": "(N_array = null ? null : N * f)", //15.09.26 расчет неправильно указан, должно быть N*f
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, 
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "N_array_for_agg", 
                    "label": "Массовая доля хлорорганических соединений в нефти - массив для агрегации", 
                    "expression": "(Xnaf = null ? N_array : map(N_array, x => x * f))", 
                    "unit": "млн⁻¹", 
                    "resolution": 0.05, 
                    "data_type": "float[]", 
                    "is_array": true, 
                    "min_items": 2, 
                    "max_items": 4, 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "X", //15.09.26 должно быть Х. КМ: устранено
                    "label": "Массовая доля хлорорганических соединений в нефти (Среднее)", 
                    "expression": "(Xnaf = null ? N : average(N_array_for_agg))", 
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, //15.09.26 точность 0,1. КМ: устранено
                    "data_type": "float", 
                    "data_source": "AGGREGATION" 
                },
                { 
                    "id": "calc_diff", 
                    "label": "Фактическое расхождение (Размах)", 
                    "expression": "(N_array_for_agg = null ? null : max(N_array_for_agg) - min(N_array_for_agg))", 
                    "unit": "млн⁻¹", 
                    "resolution": 0.05, 
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "calc_r", 
                    "label": "Повторяемость (сходимость)", 
                    "expression": "0.643*pow(Xnef),0.44)",//15.09.26 со скобками нужно разобраться //1)Монохроматиче-ский волнодис-персионный рентгенофлуоресцентный спектрометр, 2) Монохроматиче-ский энергодиспер-сионный рентгено-флуоресцентный спектрометр  r=0.591〖∙X〗^0.44, 3) энергодисперсионный рентгенофлуоресцентный спектрометр =0.934〖∙(X+0.4)〗^0.48. КМ!!!: НЕ УСТРАНЕНО. Формулы понятны как их делать?
                   //16.09.26 оставляем пока повторяемость для волно-дисперсионного 0.643*pow(X,0.44)
				   "unit": "млн⁻¹", 
                    "resolution": 0.1, //15.09.26 точность 0,1. КМ: Устранено.
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                },
                { 
                    "id": "calc_final_result", 
                    "label": "Окончательный результат измерения", 
                    "expression": "if(size(N_array) == 4, if(calc_diff <= calc_r, average(N_array), median(N_array)), if(size(N_array) == 3, if(calc_diff <= calc_r, average(N_array), median(N_array)), N))", 
                    "unit": "млн⁻¹", 
                    "resolution": 0.1, //15.09.26 точность 0,1. КМ: устранено
                    "data_type": "float", 
                    "data_source": "CALCULATION" 
                }
            ]
        },
        "gum_uncertainty_budget": {
            "description": "Бюджет неопределенности",
            "result_field": "Xhn_G",
            "formula": "N*(m4 - m3)/(m2 - m1) + Fpov + Fokr",// 15.09.26 N*(m4 - m3)/(m2 - m1) + Fpov + Fokr. КМ: устранено
            "uncertainty_components": [
                {
                    "component_id": "u(N)",
                    "label": "Неопределённость массовой доли хлоридов в нафте",
                    "unit": "млн⁻¹",
                    "evaluation_type": "A",
                    "distribution": "normal",
                    "sensitivity_coefficient": "(m4-m3)/(m2-m1)",

                },
                {
                    "component_id": "u(m1)",
                    "label": "Неопределённость массы пустой круглодонной колбы",
                    "unit": "г",//15.09.26 перепроверить везде единицы измерения, тут граммы
                    "evaluation_type": "B",
                    "distribution": "rectangular",
                    "sensitivity_coefficient": "N*(m4-m3)/(pow(m2-m1),2)", //15.09.26 для указания степени до этого указывался формат (число,степень). сейчас через ^. КМ: Поправил через pow

                },
                {
                    "component_id": "u(m2)",
                    "label": "Неопределённость массы круглодонной колбы с нефтью",
                    "unit": "млн⁻¹",
                    "evaluation_type": "B",
                    "distribution": "rectangular",
                    "sensitivity_coefficient": "-N*(m4-m3)/(pow(m2-m1),2)",//15.09.26 аналогично. КМ: устранено.

                },
                {
                    "component_id": "u(m3)",
                    "label": "Неопределённость массы пустого приемного цилиндра",
                    "unit": "млн⁻¹",
                    "evaluation_type": "B",
                    "distribution": "rectangular",
                    "sensitivity_coefficient": "-N/(m2-m1)",

                },
                {
                    "component_id": "u(m4)",
                    "label": "Неопределённость массы приемного цилиндра с нафтой",
                    "unit": "млн⁻¹",
                    "evaluation_type": "B",
                    "distribution": "rectangular",
                    "sensitivity_coefficient": "N/(m2-m1)",

                },
                {
                    "component_id": "u(Fpov)",
                    "label": "Неопределённость повторяемости",
                    "unit": "млн⁻¹",
                    "evaluation_type": "A",
                    "distribution": "normal",
                    "sensitivity_coefficient": 1,

                },
                {
                    "component_id": "u(Fokr)",
                    "label": "Неопределённость округления",
                    "unit": "млн⁻¹",
                    "evaluation_type": "B",
                    "distribution": "rectangular",
                    "sensitivity_coefficient": 1,

                }
            ],
            "combined_standard_uncertainty_formula": "uc = sqrt(sum(u(xi)^2 * c(xi)^2))",
            "expanded_uncertainty_formula": "U = k * uc (при k=2 для 95% доверительной вероятности)",
            "coverage_probability": "0.95",
            "degrees_of_freedom": "effective"
        },
        "decision_workflow": {
            "states": [
                {
                    "state_id": "evaluate_repeatability_2",
                    "name": "Проверка приемлемости (2 измерения)",
                    "condition": "size(N) == 2", //КМ: устранено
                    "rule": "calc_diff <= calc_r",
                    "on_true": "accepted_series_of_2",
                    "on_false": "require_measurements_3_and_4"
                },
                {
                    "state_id": "evaluate_repeatability_3",
                    "name": "Проверка приемлемости (3 измерения)",
                    "condition": "size(N) == 3", //КМ: устранено
                    "rule": "calc_diff <= calc_r",
                    "on_true": "accepted_average_of_3",
                    "on_false": "accepted_median_of_3_warning"
                },
                {
                    "state_id": "evaluate_repeatability_4",
                    "name": "Проверка приемлемости (4 измерения)",
                    "condition": "size(N) == 4", //КМ: устранено
                    "rule": "calc_diff <= calc_r", 
                    "on_true": "accepted_average_of_4",
                    "on_false": "accepted_median_of_4_warning"
                }
            ]
        },
        "report_profile": {
            "template_id": "GOST_52247_G_REPORT",
	  "system_fields": [
                { "field": "record_date", "source": "system.current_date", "label": "Дата проведения испытания" }, 
                { "field": "sample_id", "source": "system.sample_id", "label": "Номер образца" }, //ст3//15.09.26 Номер образца. КМ: Устранено
                { "field": "operator_name", "source": "system.current_user", "label": "Исполнитель (ФИО)" },
				{ "field": "eq_distillation", "source": "eq_distillation", "label": "Аппарат для разгонки нефти" },	
				{ "field": "eq_heater", "source": "eq_heater", "label": "Колбонагреватель" },
                { "field": "eq_cryostat", "source": "eq_cryostat", "label": "Криотермостат" },
                { "field": "eq_cylinder_nef", "source": "eq_cylinder_nef", "label": "Цилиндр (объем нефти)" },
                { "field": "eq_cylinder_naft", "source": "eq_cylinder_naft", "label": "Цилиндр (объем нафты)" },					
                { "field": "eq_balance_nef", "source": "eq_balance_nef", "label": "Весы для нефти" },	
                { "field": "eq_balance_naft", "source": "Весы для нафты", "label": "Весы для нафты" },	
                { "field": "eq_thermometer_dist", "source": "eq_thermometer_dist", "label": "Термометр (для получения нафты)" },
                { "field": "eq_thermometer_amb", "source": "eq_thermometer_amb", "label": "Термометр для определения температуры вокруг приемного цилиндра" },
                { "field": "eq_timer", "source": "eq_timer", "label": "Секундомер" },	  
                { "field": "eq_chlorine_analyzer", "source": "eq_chlorine_analyzer", "label": "Анализатор хлора" }		
		],			
            "journal_row_mapping": [
                { "header": "Объем нефти, см³", "source": "Vnef" },
                { "header": "Масса пустой колбы , г", "source": "m1" },
                { "header": "Масса колбы с нефтью, г", "source": "m2" },
                { "header": "Масса нефти, г", "source": "mnef" },
                { "header": "Скорость перегонки, см³/мин", "source": "tv" }, 
                { "header": "Объем отогнанной нафты, см³", "source": "Vnf" },
                { "header": "Масса цилиндра без нафты, г", "source": "m3" },
                { "header": "Масса цилиндра с нафтой, г", "source": "m4" }, 
                { "header": "Масса нафты, г", "source": "mnf" }, 
                { "header": "Выход фракции нафты", "source": "f" }, 
                { "header": "Результат качественной реакции на наличие неорганических хлоридов", "source": "S1" },
                { "header": "Результат качественной реакции на наличие сероводорода", "source": "S2" },
				{ "header": "Массовая доля органических хлоридов во фракции, выкипающей до температуры 204°С (Едииничные результаты), млн⁻¹", "source": "N" }, //ст17// 15.09.26 неправильное обозначение. КМ: устранено
				{ "header": "Массовая доля органических хлоридов в нефти (Среднее), млн⁻¹", "source": "Xnaf" }, 
				{ "header": "Массовая доля хлорорганических соединений в нефти (Среднее), млн⁻¹", "source": "X" } // ст19 //15.09.26 тут должно быть обозначение Х. КМ: Устранено
				{ "header": "Фактическое расхождение результатов измерения, млн⁻¹", "source": "calc_diff" },
				{ "header": "Предел повторяемости (сходимости), млн⁻¹", "source": "calc_r" }
				
            ]
        }
    }}