in common-modules/common-service/src/main/java/com/google/cloud/healthcare/fdamystudies/mapper/BigQueryApis.java [162:572]
public void createViewsInBigQuery(String projectId, String datasetName) throws Exception {
logger.entry("GoogleBigQuery.createViewsInBigQuery() Begins ");
String questionnaireTable = "Questionnaire";
String questionnaireResponseTable = "QuestionnaireResponse";
String patientTable = "Patient";
String consentDataTable = "consent_data";
String ViewQuestionnaireForSpecificStudy = "ViewQuestionnaireForSpecificStudy";
String ViewAllParticipantResponsesForSpecificStudy =
"ViewAllParticipantResponsesForSpecificStudy";
String ViewAllParticipantResponsesForSpecificSiteId =
"ViewAllParticipantResponsesForSpecificSiteId";
String viewAllParticipantResponsesForSpecificParticipantId =
"ViewAllParticipantResponsesForSpecificParticipantId";
String query0 =
String.format(
"SELECT\r\n"
+ " questionnaire.id,\r\n"
+ " questionnaire.name,\r\n"
+ " questionnaire.status,\r\n"
+ " questionnaire.title,\r\n"
+ " questionnaire.version,\r\n"
+ " questionnaire.date,\r\n"
+ " questionnaire.effectivePeriod.start AS effectiveStartPeriod,\r\n"
+ " questionnaire.effectivePeriod.end AS effectiveEndPeriod,\r\n"
+ " \r\n"
+ " --questionnaire.Schedule.Anchor_Date.value.string AS Anchor_Date,\r\n"
+ " questionnaire.Schedule.Schedule_Option.value.string AS Schedule_Option,\r\n"
+ " questionnaire.Schedule.Schedule_Type.value.string AS Schedule_Type,\r\n"
+ "\r\n"
+ " questionnaire.StudyMetaData.StudyID.value.string AS StudyID,\r\n"
+ " questionnaire.StudyMetaData.StudyName.value.string AS StudyName,\r\n"
+ " questionnaire.StudyMetaData.StudyVersion.value.string AS StudyVersion,\r\n"
+ "\r\n"
+ " identifier.type.text AS identifier_type,\r\n"
+ " identifier.use AS identifier_use,\r\n"
+ " identifier.value AS identifier_value,\r\n"
+ "\r\n"
+ " items.linkId AS items_linkId,\r\n"
+ " items.definition AS item_definition,\r\n"
+ " items.repeats AS items_repeats,\r\n"
+ " items.required AS items_required,\r\n"
+ " items.text AS items_text,\r\n"
+ " items.type AS items_type,\r\n"
+ " -- Uncomment below columns \r\n"
+ " --items.DefaultSliderValue.value.integer AS DefaultSliderValue,\r\n"
+ " --items.DefaultSliderValue.value.string AS DefaultSliderValue,\r\n"
+ " --items.Description_for_maximum_value.value.string AS Description_for_maximum_value,\r\n"
+ " --items.Description_for_minimum_value.value.string AS Description_for_minimum_value,\r\n"
+ " --items.maxValue.value.integer AS maxValue,\r\n"
+ " --items.minValue.value.integer AS minValue,\r\n"
+ " --items.questionnaire_sliderStepValue.value.integer AS questionnaire_sliderStepValue,\r\n"
+ " --items.regex.value.string AS regex,\r\n"
+ "\r\n"
+ " items.enableBehavior,\r\n"
+ " enableWhen.answer.string AS enableWhen_answer,\r\n"
+ " enableWhen.operator AS enableWhen_operator,\r\n"
+ " enableWhen.question AS enableWhen_question,\r\n"
+ " answerOptions.value.string AS answerOptions,\r\n"
+ " initial.value.string AS initial_value,\r\n"
+ "\r\n"
+ " items2.linkId AS items_linkId2,\r\n"
+ " items2.definition AS item_definition2,\r\n"
+ " items2.repeats AS items_repeats2,\r\n"
+ " items2.required AS items_required2,\r\n"
+ " items2.text AS items_text2,\r\n"
+ " items2.type AS items_type2,\r\n"
+ " answerOptions2.value.string AS answerOptions_value2\r\n"
+ "\r\n"
+ "FROM\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ questionnaireTable
+ "` AS questionnaire\r\n"
+ " CROSS JOIN UNNEST(questionnaire.identifier) AS identifier\r\n"
+ " CROSS JOIN UNNEST(questionnaire.item) AS items\r\n"
+ " LEFT JOIN UNNEST(items.answerOption) AS answerOptions\r\n"
+ " LEFT JOIN UNNEST(items.enableWhen) AS enableWhen\r\n"
+ " LEFT JOIN UNNEST(items.initial) AS initial\r\n"
+ " LEFT JOIN UNNEST(items.item) AS items2\r\n"
+ " LEFT JOIN UNNEST(items2.answerOption) AS answerOptions2\r\n"
+ "\r\n"
+ "-- WHERE\r\n"
+ " -- questionnaire.name IN ('update_activity_id_here') \r\n"
+ " \r\n"
+ "ORDER BY questionnaire.date DESC;");
createViewInBigQuery(projectId, datasetName, ViewQuestionnaireForSpecificStudy, query0);
String query1 =
String.format(
"SELECT\r\n"
+ " questionnaireResponse.id,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(1)] AS studyID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(2)] AS SiteID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(3)] AS ParticipantID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(4)] AS ActivityID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(5)] AS RunID,\r\n"
+ " questionnaireResponse.authored AS responseCreated, --Date the answers were gathered\r\n"
+ " questionnaireResponse.identifier.type.text AS TaskType,\r\n"
+ " questionnaireResponse.identifier.use,\r\n"
+ "\r\n"
+ " consentData.ConsentType as ConsentType,\r\n"
+ " consentData.ConsentState as ConsentState,\r\n"
+ " consentData.DataSharingPermission,\r\n"
+ " -- Participant DATA \r\n"
+ " patient.active AS ParticipantEnrollmentStatus,\r\n"
+ " patient.meta.lastUpdated AS ParticipantDataUpdatedTime,\r\n"
+ " questionnaire AS questionnaire_fhir_path, -- \r\n"
+ " status AS response_status, --\r\n"
+ "\r\n"
+ " questionnaireResponse.source.patientId as PatientId,\r\n"
+ " questionnaireResponse.source.type as QuestionnaireSourceType,\r\n"
+ " questionnaireResponse.status as QuestionnaireResponseStatus,\r\n"
+ " item1.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item1.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item1.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns1.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns1.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns1.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns1.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns1.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns1.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns1.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item2.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item2.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item2.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns2.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns2.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns2.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns2.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns2.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns2.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns2.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item3.definition AS ActiveTaskDefinition , -- Provides the details for the item\r\n"
+ " item3.linkId AS ActiveTask_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item3.text AS ActiveTask_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns3.value.uri AS ActiveTaskUriAnswer,\r\n"
+ " itemAns3.value.boolean AS ActiveTaskBooleanAnswer,\r\n"
+ " itemAns3.value.dateTime AS ActiveTaskDateTimeAnswer,\r\n"
+ " itemAns3.value.decimal AS ActiveTaskDecimalAnswer,\r\n"
+ " itemAns3.value.integer AS ActiveTaskIntegerAnswer,\r\n"
+ " itemAns3.value.string AS ActiveTaskStringAnswer,\r\n"
+ " itemAns3.value.time AS ActiveTaskAnswerTime\r\n"
+ "\r\n"
+ "FROM\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ questionnaireResponseTable
+ "` AS questionnaireResponse\r\n"
+ " LEFT JOIN UNNEST(questionnaireResponse.item) AS item1\r\n"
+ " LEFT JOIN UNNEST(item1.answer) AS itemAns1\r\n"
+ " LEFT JOIN UNNEST(item1.item) AS item2\r\n"
+ " LEFT JOIN UNNEST(item2.answer) AS itemAns2\r\n"
+ " LEFT JOIN UNNEST(itemAns1.item) AS item3 \r\n"
+ " LEFT JOIN UNNEST(item3.answer) AS itemAns3 \r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ patientTable
+ "` AS patient\r\n"
+ "ON\r\n"
+ " SPLIT(source.patientId, '/')[safe_ORDINAL(1)] = patient.id\r\n"
+ " CROSS JOIN UNNEST(patient.identifier) AS participantId\r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ consentDataTable
+ "` AS consentData\r\n"
+ "ON\r\n"
+ " participantId.value = consentData.ParticipantId \r\n"
+ "WHERE\r\n"
+ " consentData.ConsentState NOT IN ('REVOKED', 'REJECTED') \r\n"
+ "ORDER BY authored DESC;");
createViewInBigQuery(
projectId, datasetName, ViewAllParticipantResponsesForSpecificStudy, query1);
String query2 =
String.format(
"SELECT\r\n"
+ " questionnaireResponse.id,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(1)] AS studyID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(2)] AS SiteID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(3)] AS ParticipantID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(4)] AS ActivityID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(5)] AS RunID,\r\n"
+ " questionnaireResponse.authored AS responseCreated, --Date the answers were gathered\r\n"
+ " questionnaireResponse.identifier.type.text AS TaskType,\r\n"
+ " questionnaireResponse.identifier.use,\r\n"
+ "\r\n"
+ " consentData.ConsentType as ConsentType,\r\n"
+ " consentData.ConsentState as ConsentState,\r\n"
+ " consentData.DataSharingPermission,\r\n"
+ " -- Participant DATA \r\n"
+ " patient.active AS ParticipantEnrollmentStatus,\r\n"
+ " patient.meta.lastUpdated AS ParticipantDataUpdatedTime,\r\n"
+ " questionnaire AS questionnaire_fhir_path, -- \r\n"
+ " status AS response_status, --\r\n"
+ "\r\n"
+ " questionnaireResponse.source.patientId as PatientId,\r\n"
+ " questionnaireResponse.source.type as QuestionnaireSourceType,\r\n"
+ " questionnaireResponse.status as QuestionnaireResponseStatus,\r\n"
+ " item1.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item1.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item1.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns1.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns1.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns1.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns1.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns1.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns1.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns1.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item2.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item2.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item2.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns2.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns2.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns2.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns2.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns2.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns2.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns2.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item3.definition AS ActiveTaskDefinition , -- Provides the details for the item\r\n"
+ " item3.linkId AS ActiveTask_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item3.text AS ActiveTask_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns3.value.uri AS ActiveTaskUriAnswer,\r\n"
+ " itemAns3.value.boolean AS ActiveTaskBooleanAnswer,\r\n"
+ " itemAns3.value.dateTime AS ActiveTaskDateTimeAnswer,\r\n"
+ " itemAns3.value.decimal AS ActiveTaskDecimalAnswer,\r\n"
+ " itemAns3.value.integer AS ActiveTaskIntegerAnswer,\r\n"
+ " itemAns3.value.string AS ActiveTaskStringAnswer,\r\n"
+ " itemAns3.value.time AS ActiveTaskAnswerTime\r\n"
+ "\r\n"
+ "FROM\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ questionnaireResponseTable
+ "` AS questionnaireResponse\r\n"
+ " LEFT JOIN UNNEST(questionnaireResponse.item) AS item1\r\n"
+ " LEFT JOIN UNNEST(item1.answer) AS itemAns1\r\n"
+ " LEFT JOIN UNNEST(item1.item) AS item2\r\n"
+ " LEFT JOIN UNNEST(item2.answer) AS itemAns2\r\n"
+ " LEFT JOIN UNNEST(itemAns1.item) AS item3 \r\n"
+ " LEFT JOIN UNNEST(item3.answer) AS itemAns3 \r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ patientTable
+ "` AS patient\r\n"
+ "ON\r\n"
+ " SPLIT(source.patientId, '/')[safe_ORDINAL(1)] = patient.id\r\n"
+ " CROSS JOIN UNNEST(patient.identifier) AS participantId\r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ consentDataTable
+ "` AS consentData\r\n"
+ "ON\r\n"
+ " participantId.value = consentData.ParticipantId \r\n"
+ "WHERE\r\n"
+ " consentData.ConsentState NOT IN ('REVOKED', 'REJECTED') \r\n"
+ " -- AND SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(2)] IN ('Update-Site-ID-Here') \r\n"
+ " -- AND SPLIT(questionnaireResponse.identifier.value, '@')[safe_ordinal(4)] IN ('Upate-Activity-ID-Here') \r\n"
+ "ORDER BY authored DESC\r\n"
+ " -- LIMIT 1000");
createViewInBigQuery(
projectId, datasetName, ViewAllParticipantResponsesForSpecificSiteId, query2);
String query3 =
String.format(
"SELECT\r\n"
+ " questionnaireResponse.id,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(1)] AS studyID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(2)] AS SiteID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(3)] AS ParticipantID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(4)] AS ActivityID,\r\n"
+ " SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(5)] AS RunID,\r\n"
+ " questionnaireResponse.authored AS responseCreated, --Date the answers were gathered\r\n"
+ " questionnaireResponse.identifier.type.text AS TaskType,\r\n"
+ " questionnaireResponse.identifier.use,\r\n"
+ "\r\n"
+ " consentData.ConsentType as ConsentType,\r\n"
+ " consentData.ConsentState as ConsentState,\r\n"
+ " consentData.DataSharingPermission,\r\n"
+ " -- Participant DATA \r\n"
+ " patient.active AS ParticipantEnrollmentStatus,\r\n"
+ " patient.meta.lastUpdated AS ParticipantDataUpdatedTime,\r\n"
+ " questionnaire AS questionnaire_fhir_path, -- \r\n"
+ " status AS response_status, --\r\n"
+ "\r\n"
+ " questionnaireResponse.source.patientId as PatientId,\r\n"
+ " questionnaireResponse.source.type as QuestionnaireSourceType,\r\n"
+ " questionnaireResponse.status as QuestionnaireResponseStatus,\r\n"
+ " item1.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item1.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item1.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns1.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns1.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns1.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns1.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns1.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns1.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns1.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item2.definition AS QuestionnaireDefinition , -- Provides the details for the item \r\n"
+ " item2.linkId AS questionnaire_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item2.text AS Questionnaire_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns2.value.uri AS QuestionnaireUriAnswer,\r\n"
+ " itemAns2.value.boolean AS QuestionnaireBooleanAnswer,\r\n"
+ " itemAns2.value.dateTime AS QuestionnaireDateTimeAnswer,\r\n"
+ " itemAns2.value.decimal AS QuestionnaireDecimalAnswer,\r\n"
+ " itemAns2.value.integer AS QuestionnaireIntegerAnswer,\r\n"
+ " itemAns2.value.string AS QuestionnaireStringAnswer,\r\n"
+ " itemAns2.value.time AS QuestionnaireAnswerTime,\r\n"
+ "\r\n"
+ " item3.definition AS ActiveTaskDefinition , -- Provides the details for the item\r\n"
+ " item3.linkId AS ActiveTask_linkID, -- Pointer to specific item from Questionnaire \r\n"
+ " item3.text AS ActiveTask_question_text, -- Text of the question being answered \r\n"
+ "\r\n"
+ " itemAns3.value.uri AS ActiveTaskUriAnswer,\r\n"
+ " itemAns3.value.boolean AS ActiveTaskBooleanAnswer,\r\n"
+ " itemAns3.value.dateTime AS ActiveTaskDateTimeAnswer,\r\n"
+ " itemAns3.value.decimal AS ActiveTaskDecimalAnswer,\r\n"
+ " itemAns3.value.integer AS ActiveTaskIntegerAnswer,\r\n"
+ " itemAns3.value.string AS ActiveTaskStringAnswer,\r\n"
+ " itemAns3.value.time AS ActiveTaskAnswerTime\r\n"
+ "\r\n"
+ "FROM\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ questionnaireResponseTable
+ "` AS questionnaireResponse\r\n"
+ " LEFT JOIN UNNEST(questionnaireResponse.item) AS item1\r\n"
+ " LEFT JOIN UNNEST(item1.answer) AS itemAns1\r\n"
+ " LEFT JOIN UNNEST(item1.item) AS item2\r\n"
+ " LEFT JOIN UNNEST(item2.answer) AS itemAns2\r\n"
+ " LEFT JOIN UNNEST(itemAns1.item) AS item3 \r\n"
+ " LEFT JOIN UNNEST(item3.answer) AS itemAns3 \r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ patientTable
+ "` AS patient\r\n"
+ "ON\r\n"
+ " SPLIT(source.patientId, '/')[safe_ORDINAL(1)] = patient.id\r\n"
+ " CROSS JOIN UNNEST(patient.identifier) AS participantId\r\n"
+ "LEFT OUTER JOIN\r\n"
+ " `"
+ projectId
+ "."
+ datasetName
+ "."
+ consentDataTable
+ "` AS consentData\r\n"
+ "ON\r\n"
+ " participantId.value = consentData.ParticipantId \r\n"
+ "WHERE\r\n"
+ " consentData.ConsentState NOT IN ('REVOKED', 'REJECTED') \r\n"
+ " -- AND SPLIT(questionnaireResponse.identifier.value, '@')[safe_ORDINAL(3)] IN ('Update-Participant-ID-Here') \r\n"
+ " -- AND SPLIT(questionnaireResponse.identifier.value, '@')[safe_ordinal(4)] IN ('Update-Activity-ID-Here') \r\n"
+ " -- AND SPLIT(questionnaireResponse.identifier.value, '@')[safe_ordinal(5)] IN ('Update-Run-ID-Here') \r\n"
+ "ORDER BY authored DESC\r\n"
+ " -- LIMIT 1000");
createViewInBigQuery(
projectId, datasetName, viewAllParticipantResponsesForSpecificParticipantId, query3);
logger.exit("GoogleBigQuery.createViewsInBigQuery() Ends ");
}