Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b9a84c4bb | ||
|
|
6895562d9e | ||
|
|
d19f3549e0 | ||
|
|
cb0eb3a163 | ||
|
|
1a883a6711 | ||
|
|
9121dda277 | ||
|
|
1cf3ee09d9 | ||
|
|
81d4c756fa | ||
|
|
e497f2dda1 | ||
|
|
520fb58c3f | ||
|
|
e57ae45596 | ||
|
|
147fb23546 | ||
|
|
ed649d0350 | ||
|
|
e1bbdff49f | ||
|
|
a0bb626923 | ||
|
|
0646c8f11d | ||
|
|
7b594d658e | ||
|
|
2f519952b2 | ||
|
|
f6a6622095 | ||
|
|
45e5dbcd1a | ||
|
|
97b592ce72 | ||
|
|
4ce2178af5 | ||
|
|
cbcccccae4 | ||
|
|
8b5d071d0f | ||
|
|
78aa6004f1 | ||
|
|
5ebdd68f50 | ||
|
|
ac49d93342 | ||
|
|
8f3812ab67 | ||
|
|
93f2f4b569 | ||
|
|
d0b59833c8 | ||
|
|
c6494b7eaf | ||
|
|
d124e67552 | ||
|
|
772db018ee | ||
|
|
b86db17e88 | ||
|
|
82c90abf80 | ||
|
|
c4040961c8 | ||
|
|
47cc2de888 | ||
|
|
c83ad998a1 | ||
|
|
01b3bec343 | ||
|
|
7380207449 | ||
|
|
05e5e45b27 | ||
|
|
0c493dc646 | ||
|
|
cbd252b6ad | ||
|
|
1bd398ba69 | ||
|
|
31a4b3f278 | ||
|
|
c81f11fd8e | ||
|
|
f8a8c6a789 | ||
|
|
0715733163 | ||
|
|
aefcecf90f | ||
|
|
ebd9d23f12 | ||
|
|
e681a4a9bf | ||
|
|
f17408f5ce | ||
|
|
60a8044041 | ||
|
|
2d040ff1c8 | ||
|
|
e9da7a7983 | ||
|
|
4579ad914d | ||
|
|
b4ab8cbff0 | ||
|
|
d35510d39a | ||
|
|
5af8197664 | ||
|
|
29b7db446e | ||
|
|
ca71641341 | ||
|
|
45aecc658e | ||
|
|
5524f135ff | ||
|
|
65f5fdc428 | ||
|
|
4bf75a2473 | ||
|
|
87e4ca7c9a | ||
|
|
e34a618198 | ||
|
|
f9c054c62b |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -27,3 +27,10 @@ yarn-error.log*
|
|||||||
src/components/testData.json
|
src/components/testData.json
|
||||||
public/world-110m.json
|
public/world-110m.json
|
||||||
public/india-states.json
|
public/india-states.json
|
||||||
|
*.apk
|
||||||
|
*.apk
|
||||||
|
|
||||||
|
scripts/reports
|
||||||
|
scripts/data
|
||||||
|
firebase-debug.log
|
||||||
|
*.log
|
||||||
|
|||||||
18
.gitlab-ci.yml
Normal file
18
.gitlab-ci.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
stages:
|
||||||
|
- test
|
||||||
|
|
||||||
|
unit-test:
|
||||||
|
image: node:latest
|
||||||
|
stage: test
|
||||||
|
before_script:
|
||||||
|
- npm install
|
||||||
|
script:
|
||||||
|
- npm run test
|
||||||
|
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- coverage/
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
junit:
|
||||||
|
- junit.xml
|
||||||
146
device_5_result_csv_final.ipynb
Normal file
146
device_5_result_csv_final.ipynb
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "edbb2bd6-e678-4401-9c0d-83d9ad948bb7",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import csv\n",
|
||||||
|
"\n",
|
||||||
|
"def copy_columns(source_file, destination_file, header_names):\n",
|
||||||
|
" with open(source_file, 'r', newline='') as source_csvfile, open(destination_file, 'w', newline='') as destination_csvfile:\n",
|
||||||
|
" reader = csv.DictReader(source_csvfile)\n",
|
||||||
|
" fieldnames = header_names\n",
|
||||||
|
" writer = csv.DictWriter(destination_csvfile, fieldnames=fieldnames)\n",
|
||||||
|
"\n",
|
||||||
|
" writer.writeheader()\n",
|
||||||
|
"\n",
|
||||||
|
" for row in reader:\n",
|
||||||
|
" selected_data = {key: row[key] for key in fieldnames if key in row}\n",
|
||||||
|
" writer.writerow(selected_data)\n",
|
||||||
|
"\n",
|
||||||
|
"if __name__ == \"__main__\":\n",
|
||||||
|
" source_csv = \"path/to/source_file.csv\" # Replace with the path to your source CSV file\n",
|
||||||
|
" destination_csv = \"path/to/destination_file.csv\" # Replace with the path to your destination CSV file\n",
|
||||||
|
" header_names = [\"Name\", \"ABHA ID\", \"Age\", \"Gender\", \"Category\", \"Marital Status\", \"Care-of\", \"Address\", \"District\", \"State\", \"Pincode\", \"Mobile Number\", \"Blood group\", \"Test Result\"] # Replace with the header names you want to copy\n",
|
||||||
|
"\n",
|
||||||
|
" copy_columns(source_csv, destination_csv, header_names)\n",
|
||||||
|
"\n",
|
||||||
|
" print(\"Data copied successfully.\")\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"id": "c242e21e-48a9-462c-8e3f-453913f84564",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Data copied successfully with new header.\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import csv\n",
|
||||||
|
"from datetime import datetime\n",
|
||||||
|
"\n",
|
||||||
|
"def calculate_age(birth_year):\n",
|
||||||
|
" current_year = datetime.now().year\n",
|
||||||
|
" return current_year - birth_year\n",
|
||||||
|
"\n",
|
||||||
|
"def copy_csv_with_new_header(source_file, destination_file, destination_header):\n",
|
||||||
|
" # Create a list to store the filtered data from the source CSV file\n",
|
||||||
|
" temp_data = []\n",
|
||||||
|
"\n",
|
||||||
|
" # Create a mapping for the destination header names to the source header names\n",
|
||||||
|
" header_mapping = {\n",
|
||||||
|
" \"Name\": \"name\",\n",
|
||||||
|
" \"ABHA ID\": \"abhaId\",\n",
|
||||||
|
" \"Age\": \"birthYear\",\n",
|
||||||
|
" \"Gender\": \"gender\",\n",
|
||||||
|
" \"Category\": \"category\",\n",
|
||||||
|
" \"Marital Status\": \"maritalStatus\",\n",
|
||||||
|
" \"Care-of\": \"careOf\",\n",
|
||||||
|
" \"Address\": \"house\",\n",
|
||||||
|
" \"District\": \"district\",\n",
|
||||||
|
" \"State\": \"state\",\n",
|
||||||
|
" \"Pincode\": \"pinCode\",\n",
|
||||||
|
" \"Mobile Number\": \"phoneNumber\",\n",
|
||||||
|
" \"Blood Group\": \"bloodGroup\",\n",
|
||||||
|
" \"Test Result\": \"Class\"\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" with open(source_file, 'r', newline='') as source_csvfile:\n",
|
||||||
|
" reader = csv.DictReader(source_csvfile)\n",
|
||||||
|
"\n",
|
||||||
|
" # Read the data from the source CSV file\n",
|
||||||
|
" for row in reader:\n",
|
||||||
|
" # Assuming the column \"birthYear\" exists in the CSV\n",
|
||||||
|
" birth_year = int(row.get(\"birthYear\", 0))\n",
|
||||||
|
" updated_age = calculate_age(birth_year)\n",
|
||||||
|
"\n",
|
||||||
|
" # Filter out unwanted fields from the row based on the destination header\n",
|
||||||
|
" filtered_row = {key: row[header_mapping[key]] if key != \"Age\" else updated_age for key in destination_header}\n",
|
||||||
|
"\n",
|
||||||
|
" # Add the filtered row to the temporary data list\n",
|
||||||
|
" temp_data.append(filtered_row)\n",
|
||||||
|
"\n",
|
||||||
|
" with open(destination_file, 'w', newline='') as destination_csvfile:\n",
|
||||||
|
" writer = csv.DictWriter(destination_csvfile, fieldnames=destination_header)\n",
|
||||||
|
"\n",
|
||||||
|
" # Write the new header to the destination CSV file\n",
|
||||||
|
" writer.writeheader()\n",
|
||||||
|
"\n",
|
||||||
|
" # Write the updated data to the destination CSV file\n",
|
||||||
|
" writer.writerows(temp_data)\n",
|
||||||
|
"\n",
|
||||||
|
"if __name__ == \"__main__\":\n",
|
||||||
|
" source_csv = r\"C:\\Users\\Durga\\Desktop\\from27.csv\" # Replace with the path to your source CSV file\n",
|
||||||
|
"\n",
|
||||||
|
" # Replace with the destination header names you want in the new CSV\n",
|
||||||
|
" destination_header = [\"Name\", \"ABHA ID\", \"Age\", \"Gender\", \"Category\", \"Marital Status\", \"Care-of\", \"Address\", \n",
|
||||||
|
" \"District\", \"State\", \"Pincode\", \"Mobile Number\", \"Blood Group\", \"Test Result\"]\n",
|
||||||
|
"\n",
|
||||||
|
" destination_csv = r\"C:\\Users\\Durga\\Desktop\\result tilljuly31.csv\" # Replace with the path to your destination CSV file\n",
|
||||||
|
"\n",
|
||||||
|
" copy_csv_with_new_header(source_csv, destination_csv, destination_header)\n",
|
||||||
|
"\n",
|
||||||
|
" print(\"Data copied successfully with new header.\")\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "965db908-c717-40a3-81cb-3da73b744ec5",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3 (ipykernel)",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
45
firmware/hemocube_mock/hemocube_mock.ino
Normal file
45
firmware/hemocube_mock/hemocube_mock.ino
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
void setup() {
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
Serial.begin(115200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
|
||||||
|
Serial.println("SN:182829");
|
||||||
|
while (Serial.available() == 0) {} //wait for data available
|
||||||
|
String bufferCommand = Serial.readString(); //read until timeout
|
||||||
|
bufferCommand.trim(); // remove any \r \n whitespace at the end of the String
|
||||||
|
if (bufferCommand == "B") {
|
||||||
|
Serial.println("#Start Buffer");
|
||||||
|
delay(2000);
|
||||||
|
Serial.println("#Buffer Completed");
|
||||||
|
}
|
||||||
|
|
||||||
|
while (Serial.available() == 0) {} //wait for data available
|
||||||
|
String SampleCommand = Serial.readString(); //read until timeout
|
||||||
|
SampleCommand.trim(); // remove any \r \n whitespace at the end of the String
|
||||||
|
if (SampleCommand == "S") {
|
||||||
|
Serial.println("#Sample Started");
|
||||||
|
delay(2000);
|
||||||
|
Serial.println("#Sample Completed");
|
||||||
|
}
|
||||||
|
|
||||||
|
while (Serial.available() == 0) {} //wait for data available
|
||||||
|
String resultCommand = Serial.readString(); //read until timeout
|
||||||
|
resultCommand.trim(); // remove any \r \n whitespace at the end of the String
|
||||||
|
if (resultCommand == "P") {
|
||||||
|
delay(3000);
|
||||||
|
Serial.println("RESULT SN 18291 1937.23 2828.11 28211.20 121829.12 REND");
|
||||||
|
delay(15000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// while (Serial.available() == 0) {} //wait for data available
|
||||||
|
// String resultCommand = Serial.readString(); //read until timeout
|
||||||
|
// resultCommand.trim(); // remove any \r \n whitespace at the end of the String
|
||||||
|
// if (resultCommand == "B") {
|
||||||
|
// delay(3000);
|
||||||
|
// Serial.println("ERROR 500 REND");
|
||||||
|
// delay(15000);
|
||||||
|
// }
|
||||||
|
}
|
||||||
35
package-lock.json
generated
35
package-lock.json
generated
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "hpos-dashboard",
|
"name": "hpos-web",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "hpos-dashboard",
|
"name": "hpos-web",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@testing-library/jest-dom": "^5.16.5",
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"react-dropdown": "^1.11.0",
|
"react-dropdown": "^1.11.0",
|
||||||
"react-flip-numbers": "^3.0.8",
|
"react-flip-numbers": "^3.0.8",
|
||||||
"react-icons": "^4.10.1",
|
"react-icons": "^4.10.1",
|
||||||
|
"react-odometerjs": "^3.1.0",
|
||||||
"react-router-dom": "^6.14.2",
|
"react-router-dom": "^6.14.2",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"react-select": "^5.7.4",
|
"react-select": "^5.7.4",
|
||||||
@@ -14094,6 +14095,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
|
||||||
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
||||||
},
|
},
|
||||||
|
"node_modules/odometer": {
|
||||||
|
"version": "0.4.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/odometer/-/odometer-0.4.8.tgz",
|
||||||
|
"integrity": "sha512-bfKuAhWE/qMCiX9bwX90c5bTpt7MDVeq1e6YsOHQrYokNhv9jhS5JbR9kg6i+FeWmDgalf3VUtwNx1aVaZ8cgg=="
|
||||||
|
},
|
||||||
"node_modules/on-finished": {
|
"node_modules/on-finished": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||||
@@ -16116,6 +16122,18 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||||
},
|
},
|
||||||
|
"node_modules/react-odometerjs": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-odometerjs/-/react-odometerjs-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-jHG1wyNgg3J7OYaJugixkQTPpUHK5ddfa13XSQlxs5YR5qIWIPwVtjlxSp8xD3UuXjUXjjGAyCyYZ9k3ar8aCg==",
|
||||||
|
"dependencies": {
|
||||||
|
"odometer": "^0.4.8"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">= 16.8.0",
|
||||||
|
"react-dom": ">= 16.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-refresh": {
|
"node_modules/react-refresh": {
|
||||||
"version": "0.11.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||||
@@ -29388,6 +29406,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
|
||||||
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
|
||||||
},
|
},
|
||||||
|
"odometer": {
|
||||||
|
"version": "0.4.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/odometer/-/odometer-0.4.8.tgz",
|
||||||
|
"integrity": "sha512-bfKuAhWE/qMCiX9bwX90c5bTpt7MDVeq1e6YsOHQrYokNhv9jhS5JbR9kg6i+FeWmDgalf3VUtwNx1aVaZ8cgg=="
|
||||||
|
},
|
||||||
"on-finished": {
|
"on-finished": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||||
@@ -30668,6 +30691,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||||
},
|
},
|
||||||
|
"react-odometerjs": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-odometerjs/-/react-odometerjs-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-jHG1wyNgg3J7OYaJugixkQTPpUHK5ddfa13XSQlxs5YR5qIWIPwVtjlxSp8xD3UuXjUXjjGAyCyYZ9k3ar8aCg==",
|
||||||
|
"requires": {
|
||||||
|
"odometer": "^0.4.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"react-refresh": {
|
"react-refresh": {
|
||||||
"version": "0.11.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
"react-dropdown": "^1.11.0",
|
"react-dropdown": "^1.11.0",
|
||||||
"react-flip-numbers": "^3.0.8",
|
"react-flip-numbers": "^3.0.8",
|
||||||
"react-icons": "^4.10.1",
|
"react-icons": "^4.10.1",
|
||||||
|
"react-odometerjs": "^3.1.0",
|
||||||
"react-router-dom": "^6.14.2",
|
"react-router-dom": "^6.14.2",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"react-select": "^5.7.4",
|
"react-select": "^5.7.4",
|
||||||
|
|||||||
BIN
scripts/224321944144PADGMC.pdf
Normal file
BIN
scripts/224321944144PADGMC.pdf
Normal file
Binary file not shown.
100
scripts/226183001745JAHGMC.pdf
Normal file
100
scripts/226183001745JAHGMC.pdf
Normal file
File diff suppressed because one or more lines are too long
62
scripts/UserCollection.py
Normal file
62
scripts/UserCollection.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import os
|
||||||
|
import firebase_admin
|
||||||
|
from IPython.core.display import Image
|
||||||
|
from IPython.core.display_functions import display
|
||||||
|
from firebase_admin import credentials
|
||||||
|
from firebase_admin import firestore
|
||||||
|
import pandas as pd
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
|
# Initialize Firebase Admin SDK
|
||||||
|
cred = credentials.Certificate(r'C:\Users\smila\PycharmProjects\pythonProject\hpos-prod-firebase-adminsdk-bionp-5486f7becd.json') # Replace with your own service account key path
|
||||||
|
|
||||||
|
firebase_admin.initialize_app(cred)
|
||||||
|
|
||||||
|
# Get a reference to the Firestore database
|
||||||
|
db = firestore.client()
|
||||||
|
|
||||||
|
# Specify the collections
|
||||||
|
patient_collection = db.collection("patientData")
|
||||||
|
test_collection = db.collection("testData")
|
||||||
|
start_date = input("Please enter the start date (yyyy-mm-dd): ")
|
||||||
|
end_date = input("Please enter the end date (yyyy-mm-dd): ")
|
||||||
|
|
||||||
|
query = patient_collection.where("createdAt", ">=", start_date).where("createdAt", "<", end_date)
|
||||||
|
patient_docs = query.stream()
|
||||||
|
|
||||||
|
# Prepare data to store in CSV
|
||||||
|
data = []
|
||||||
|
for patient_doc in patient_docs:
|
||||||
|
patient_data = patient_doc.to_dict()
|
||||||
|
patient_id = patient_data["_id"]
|
||||||
|
|
||||||
|
# Query the document from testData collection based on the common _id
|
||||||
|
test_docs = test_collection.where("_id", "==", patient_id).stream()
|
||||||
|
|
||||||
|
for test_doc in test_docs:
|
||||||
|
test_data = test_doc.to_dict()
|
||||||
|
|
||||||
|
# Combine the data from both collections into a single dictionary
|
||||||
|
combined_data = {**patient_data, **test_data}
|
||||||
|
|
||||||
|
# Skip if the csvPath is not a valid URL
|
||||||
|
|
||||||
|
data.append(combined_data)
|
||||||
|
|
||||||
|
# Convert the data to a DataFrame
|
||||||
|
df = pd.DataFrame(data)
|
||||||
|
print(df.size)
|
||||||
|
|
||||||
|
# Save the DataFrame to a CSV file
|
||||||
|
output_filename = "data.csv"
|
||||||
|
df.to_csv(output_filename, index=False)
|
||||||
|
|
||||||
|
downloads_dir = os.path.join(os.path.expanduser("~"), "Downloads")
|
||||||
|
output_path = os.path.join(downloads_dir, output_filename)
|
||||||
|
df.to_csv(output_path, index=False)
|
||||||
|
|
||||||
|
print(f"Data saved to '{output_path}'")
|
||||||
|
|
||||||
|
# Close the Firebase Admin SDK
|
||||||
|
firebase_admin.delete_app(firebase_admin.get_app())
|
||||||
129
scripts/UserImageDownload.py
Normal file
129
scripts/UserImageDownload.py
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
import os
|
||||||
|
import firebase_admin
|
||||||
|
from firebase_admin import credentials, firestore
|
||||||
|
import pandas as pd
|
||||||
|
from urllib.request import urlopen
|
||||||
|
import datetime
|
||||||
|
import tkinter as tk
|
||||||
|
from tkinter import filedialog
|
||||||
|
|
||||||
|
# Initialize Firebase Admin SDK
|
||||||
|
cred = credentials.Certificate(r'C:\Users\smila\PycharmProjects\pythonProject\hpos-prod-firebase-adminsdk-bionp-5486f7becd.json') # Replace with your own service account key path
|
||||||
|
firebase_admin.initialize_app(cred)
|
||||||
|
|
||||||
|
# Get a reference to the Firestore database
|
||||||
|
db = firestore.client()
|
||||||
|
|
||||||
|
# Specify the collections
|
||||||
|
patient_collection = db.collection("patientData")
|
||||||
|
test_collection = db.collection("testData")
|
||||||
|
|
||||||
|
# Create a tkinter root window (hidden)
|
||||||
|
root = tk.Tk()
|
||||||
|
root.withdraw()
|
||||||
|
|
||||||
|
# Ask the user to select the base folder where images and data will be saved
|
||||||
|
base_output_folder = filedialog.askdirectory(title="Select Base Output Folder")
|
||||||
|
|
||||||
|
# Get user-defined date ranges
|
||||||
|
start_date = "2023-08-01"
|
||||||
|
end_date = "2023-08-10"
|
||||||
|
|
||||||
|
# Parse the date range to get a list of days
|
||||||
|
start_datetime = datetime.datetime.strptime(start_date, "%Y-%m-%d")
|
||||||
|
end_datetime = datetime.datetime.strptime(end_date, "%Y-%m-%d")
|
||||||
|
date_range = [start_datetime + datetime.timedelta(days=x) for x in range((end_datetime - start_datetime).days + 1)]
|
||||||
|
|
||||||
|
# Iterate through each day
|
||||||
|
for date in date_range:
|
||||||
|
current_date = date.strftime("%Y-%m-%d")
|
||||||
|
output_folder = os.path.join(base_output_folder, current_date)
|
||||||
|
os.makedirs(output_folder, exist_ok=True)
|
||||||
|
|
||||||
|
print(f"Processing data for {current_date}...")
|
||||||
|
|
||||||
|
# Query Firestore for patient data
|
||||||
|
query = patient_collection.where("createdAt", ">=", current_date).where("createdAt", "<", (date + datetime.timedelta(days=1)).strftime("%Y-%m-%d"))
|
||||||
|
patient_docs = query.stream()
|
||||||
|
|
||||||
|
# Initialize a list to hold the combined data
|
||||||
|
data = []
|
||||||
|
|
||||||
|
# Iterate through patient documents
|
||||||
|
for patient_doc in patient_docs:
|
||||||
|
patient_data = patient_doc.to_dict()
|
||||||
|
patient_id = patient_data["_id"]
|
||||||
|
|
||||||
|
# Query the document from testData collection based on the common _id
|
||||||
|
test_docs = test_collection.where("_id", "==", patient_id).stream()
|
||||||
|
|
||||||
|
# Iterate through test documents
|
||||||
|
for test_doc in test_docs:
|
||||||
|
test_data = test_doc.to_dict()
|
||||||
|
|
||||||
|
# Combine the data from both collections into a single dictionary
|
||||||
|
combined_data = {**patient_data, **test_data}
|
||||||
|
|
||||||
|
# Access specific attributes from the combined data
|
||||||
|
csv_path = combined_data.get("csvPath", "")
|
||||||
|
if csv_path and not csv_path.startswith("http"):
|
||||||
|
# Perform the desired action
|
||||||
|
print("CSV path does not start with 'http'.")
|
||||||
|
|
||||||
|
# Append the combined_data dictionary to the list
|
||||||
|
data.append(combined_data)
|
||||||
|
|
||||||
|
# Download images separately and store them in the specified folder
|
||||||
|
user_image_url = combined_data.get("userImageURL", "")
|
||||||
|
if user_image_url and user_image_url.startswith("http"):
|
||||||
|
image_data = urlopen(user_image_url).read()
|
||||||
|
image_filename = f"{patient_id}.jpg" # Use only patient ID as the filename
|
||||||
|
image_path = os.path.join(output_folder, image_filename)
|
||||||
|
with open(image_path, "wb") as image_file:
|
||||||
|
image_file.write(image_data)
|
||||||
|
|
||||||
|
# Convert the data to a DataFrame
|
||||||
|
df = pd.DataFrame(data)
|
||||||
|
|
||||||
|
# Rename columns
|
||||||
|
df.rename(columns={
|
||||||
|
"name": "Name",
|
||||||
|
"abhaId": "ABHA ID",
|
||||||
|
"birthYear": "Age",
|
||||||
|
"gender": "Gender",
|
||||||
|
"category": "Category",
|
||||||
|
"maritalStatus": "Marital Status",
|
||||||
|
"careOf": "Care-of",
|
||||||
|
"city": "Address",
|
||||||
|
"district": "District",
|
||||||
|
"state": "State",
|
||||||
|
"pinCode": "Pincode",
|
||||||
|
"phoneNumber": "Mobile Number",
|
||||||
|
"bloodGroup": "Blood group",
|
||||||
|
"result": "Test Result"
|
||||||
|
}, inplace=True)
|
||||||
|
|
||||||
|
# Select specific columns
|
||||||
|
selected_columns = [
|
||||||
|
"Name", "ABHA ID", "Age", "Gender", "Category", "Marital Status",
|
||||||
|
"Care-of", "Address", "District", "State", "Pincode", "Mobile Number",
|
||||||
|
"Blood group", "Test Result"
|
||||||
|
]
|
||||||
|
|
||||||
|
# Check if selected columns are present in the DataFrame
|
||||||
|
missing_columns = [col for col in selected_columns if col not in df.columns]
|
||||||
|
if missing_columns:
|
||||||
|
print(f"Missing columns: {missing_columns}")
|
||||||
|
else:
|
||||||
|
# Create a new DataFrame with selected columns
|
||||||
|
df = df[selected_columns]
|
||||||
|
|
||||||
|
# Save the DataFrame to a CSV file
|
||||||
|
output_filename = f"data_{current_date}.csv"
|
||||||
|
output_path = os.path.join(output_folder, output_filename)
|
||||||
|
df.to_csv(output_path, index=False)
|
||||||
|
|
||||||
|
print(f"Data and images for {current_date} saved to '{output_folder}'")
|
||||||
|
|
||||||
|
# Close the Firebase Admin SDK
|
||||||
|
firebase_admin.delete_app(firebase_admin.get_app())
|
||||||
219
scripts/data/result.csv
Normal file
219
scripts/data/result.csv
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
Sample No.,Name,Aadhar ID,ABHA ID,_id,Age,Gender,Category,Marital Status,Care-of,Address,District,State,Pincode,Mobile Number,Blood Group,Test Right device 5 ratio,Denovix Ratio,Test Result,testTime,sickleCellHistory
|
||||||
|
7,Yogesh Kanchanlal Choure,203986612834,91623848874425,203986612834YOGGMC,29,MALE,mahar,Single,kanchan lal ,"C/O Mahendra Dongre Plot No 40 Jaitala Road Near Rahi Hall Janhit Co-Op Soc, Zade Layout Nagpur",Nagpur,MAHARASHTRA,440036,7620241967,,0.1864,0.0959,Normal (HbA),22-07-2023 11:45,
|
||||||
|
124,Parag Pramod Diwate,208937728105,71420673838565,208937728105PARGMC,21,MALE,kunbi ,Single,pramod diwate ,"C/O Kisanrao Diwate Ghar No. 195 New Shukrawari Road Near Gandhi Shala New Shukrawari, Mahal Mahal S.O",NAGPUR,MAHARASHTRA,440032,9370866090,,0.4147,0.1554,Inconclusive,25-07-2023 11:38,
|
||||||
|
47,Sandip Ramrao Mahure,210547712613,91403684150424,210547712613SANGMC,27,MALE,dhangar,Single,ram rao,C/O Ramrao Mahure At Po Pahungoan Tah Pauni Dist Bhandara Pahungaon,BHANDARA,MAHARASHTRA,441910,9172942525,A+ve,0.2608,0.118,Normal (HbA),22-07-2023 10:39,
|
||||||
|
193,Arpit Nath,215423576300,91377506662123,215423576300ARPGMC,18,MALE,,Single,sukumar nath ,C/O Sukmar Nath 15 Meera nagar E-6 Arera Colony Huzur,nagpur,Maharashtra ,441102,9926310912,O+ve,0.615,0.2318,Inconclusive,19-07-2023 11:18,
|
||||||
|
66,Monali Sureshrao Vaidya,220257248283,91636562654245,220257248283MONGMC,31,FEMALE,,Single,suresh mansaramji vaidya, behind daulatsing vidyalaya vidya vihar colony pipari meghe wardha Pipri,Wardha,MAHARASHTRA,440221,8767775652,O+ve,0.2826,0.1235,Normal (HbA),18-07-2023 12:17,
|
||||||
|
145,Pratik Vijay Rangari,224218333792,91288115824766,224218333792PRAGMC,33,MALE,mahar,Single,Vijay , PLOT NO 22/A NILGRUH SOCIETY JAITALA ROAD MALAPURE LAYOUT NAGPUR Nagpur (Urban),Nagpur,MAHARASHTRA,440036,9604758900,,0.4794,0.1738,Sickle Cell Trait (HbAS),22-07-2023 11:41,
|
||||||
|
165,Namrta Shrikrushan Dhone,224611407212,91614815065808,224611407212NAMGMC,32,FEMALE,mahar,Married,Krishna ,C/O Shrikrushan Dhone Mu po Ramthi Tah Narkhed Ramthi,Nagpur,MAHARASHTRA,440027,9356445464,,0.5215,0.1884,Sickle Cell Trait (HbAS),25-07-2023 10:39,
|
||||||
|
152,Prafulla Niranjan Thorat,225065546079,91652426707012,225065546079PRAGMC,26,MALE,Buddhists ,Single,Niranjan Thorat ,C/O Niranjan Thorat Jasapur Bhatkuli,Amravati,MAHARASHTRA,444602,7378909926,B+ve,0.4894,0.1771,Sickle Cell Trait (HbAS),21-07-2023 11:19,
|
||||||
|
107,Prachi Krushnaji Anjankar,232034355701,91385177656621,232034355701PRAGMC,18,FEMALE,mali,Single,krushanaji anjankar ,"C/O D/O Krushnaji Anjankar ward no. 2, house no. 387 Behind Hanuman Mandir Lonkhairi",Nagpur,MAHARASHTRA,441111,9545811381,,0.3537,0.1405,Inconclusive,26-07-2023 10:35,
|
||||||
|
207,Raj Lalit Vitole,236152092688,91354238446349,236152092688RAJGMC,10,MALE,fulmali,Single,lalit vitoe,C/O : N.M.C Ram Nagar Marathi Girls School Near Ram Mandir Ram Nagar Shankar Nagar,Nagpur,MAHARASHTRA,440010,7709100411,,0.6719,0.268,Sickle cell Disease (HbSS),26-07-2023 13:51,Lalit vitole AS pattern 7709100411
|
||||||
|
40,Sagar Sahebrao Gangurde,236855835504,91178542875335,236855835504SAGGMC,22,MALE,,Single,sahebrao gangurde,C/O Sahebrao Vitthal Gangurde sakorepada Sakore,Nashik,MAHARASHTRA,423501,8378897855,B+ve,0.2364,0.1113,Normal (HbA),20-07-2023 14:06,
|
||||||
|
94,Shivani Prakash Dhurve,240636077483,44881100866756,240636077483SHIGMC,25,FEMALE,gond,Single,prakash dhurve,"C/O D/O Prakash Dhurve kavadas,patansavangi,word no-3 at-po-patansavangi,ta-savner Patansavangi",NAGPUR,MAHARASHTRA,441113,8378876953,B+ve,0.3299,0.1349,Normal (HbA),24-07-2023 11:22,
|
||||||
|
34,Dinesh Sheshrao Badwaik,248277393938,91385308532253,248277393938DINGMC,36,MALE,,Single,sheshrao , Near Hanuman Mandir Rambag Colony Ajni,#NAME?,KARNATAKA,440003,8668348590,B+ve,0.2271,0.1087,Normal (HbA),20-07-2023 11:14,
|
||||||
|
211,Harshal Madhukar Rodge,251385655953,91551260601853,251385655953HARGMC,22,MALE,,Single,madhukar rodge, ward no.01 mu.Post.jivnapur Jiwanapur,Nagpur,MAHARASHTRA,441210,9370675745,B+ve,0.679,0.2731,Sickle cell Disease (HbSS),18-07-2023 10:52,uncle
|
||||||
|
106,Suraj Manraj Atram,256564101722,91514156376204,256564101722SURGMC,20,MALE,aadivasi,Single,manraj,"C/O Manraj Atram At. Kohla, Post. Pipara, Tah. Umred Kohla",Nagpur,MAHARASHTRA,441108,8262814092,,0.3534,0.1404,Inconclusive,22-07-2023 12:13,
|
||||||
|
114,Pranuti Suresh Sonsare,261435672727,91563526850703,261435672727PRAGMC,14,FEMALE,,Single,Suresh sonsare ,"C/O D/O: Suyesh Sonsare plot no. 40 sarwshri nagar ,umred road hatwar ration dukan dighori Hanuman Nagar",Nagpur,MAHARASHTRA,441204,9284317488,AB+ve,0.3755,0.1457,Inconclusive,19-07-2023 13:20,
|
||||||
|
131,Tanuja Prakashchandra Yele,261512400931,91143515883476,261512400931TANGMC,22,FEMALE,powar ,Single,Parkashchandra yele,C/O D/O: Tanuja Prakashchandra Yele gumadhawada Gumadhawada,Gondiya,MAHARASHTRA,441911,7820885790,,0.4425,0.1628,Inconclusive,21-07-2023 11:07,
|
||||||
|
56,rohan ramesh narule,262819245799,91587003274020,262819245799ROHGMC,27,Male,,Single,ramesh narule,"s/o ramesh narule near dharamraj school dhammanand nagar pili nadi , Uppalawadi nagpur",nagpur,Maharashtra,440026,8007034845,O+ve,0.2701,0.1204,Normal (HbA),19-07-2023 11:15,
|
||||||
|
5,Suhani Mukunda Gajbhiye,266861946497,91423327336065,266861946497SUHGMC,17,FEMALE,,Single,mukunda,C/O D/O Mukunda Gajbhiye NEAR POHARKAR KIRANA STORS JAGDISH NAGAR KATOL ROAD,Nagpur,MAHARASHTRA,440013,9579257972,O-ve,0.1806,0.0939,Normal (HbA),20-07-2023 11:00,
|
||||||
|
213,Heena Pradip Lonare,270722892447,91541045221671,270722892447HEEGMC,19,FEMALE,mahar ,Single,pradip,C/O Tikaram Meshram House No. 1128B/616 K.D.K. College Road Ambedkar Chowk Nandanvan Zopadpatti Nagpur,Nagpur,MAHARASHTRA,440024,7517769583,,0.726,0.3111,Sickle cell Disease (HbSS),25-07-2023 13:22,pradip :F
|
||||||
|
177,Jaya Movade,271991172310,91704508113427,271991172310JAYGMC,23,FEMALE,kunbi ,Single,gopal mowade ,C/O D/O: Gopalji Movade ward no. 15 mu. kabar pipla tah sausar Kabarpipla,Chhindwara,Madhya Pradesh,480108,9302742959,,0.5702,0.2089,Inconclusive,21-07-2023 10:50,
|
||||||
|
140,Chaitali Mahendra Tambe,273695959825,91135318140252,273695959825CHAGMC,21,FEMALE,Hindu ,Single,Mahendra ,C/O D/O: Mahendra Tambe near anusaya mandir butibori Bori,Nagpur,MAHARASHTRA,441108,9623735881,AB+ve,0.4635,0.1689,Inconclusive,25-07-2023 11:30,
|
||||||
|
184,Taranya Vijay Markam,281376469920,91155441810670,281376469920TARGMC,11,FEMALE,,Single,Vijay markam,C/O : Kanta Raut Plot No. 1 IT Park Road Behind Gayatri Mandir Lokhande Nagar Ranapratap Nagar,Nagpur,MAHARASHTRA,440022,7620933159,B+ve,0.5935,0.2202,Inconclusive,18-07-2023 10:54,"bhagyashree markam (mother)age 43 , juhi markam (sister) age 24"
|
||||||
|
113,Mahendra Wasudev Bawankar,290033869037,91360068085172,290033869037MAHGMC,34,MALE,Teli,Married,wasudev bawankar,C/O Mahendra Wasudev Bawankar mu.garada Garada,Gondiya,MAHARASHTRA,441001,8007879455,,0.3731,0.1451,Inconclusive,24-07-2023 10:16,
|
||||||
|
122,Sonam Dinesh Gupta,293908356872,91474378850454,293908356872SONGMC,21,FEMALE,Pardeshi,Single,Dinesh gupta,C/O D/O: Dinesh Gupta YASHWANT STADIUM DHANTOLI Patwardhan Ground,Nagpur,MAHARASHTRA,440012,8669778863,,0.4019,0.1521,Inconclusive,24-07-2023 10:44,
|
||||||
|
133,Sayyam Rajendra Mate,295115060017,91773467438877,295115060017SAYGMC,12,MALE,,Single,Rajendra mate,C/O Rajendra Mate mhasli Mhasli,Nagpur,MAHARASHTRA,441202,7387457568,B+ve,0.4469,0.1641,Inconclusive,19-07-2023 11:57,Father
|
||||||
|
187,Jamnotri Chouhan,300726681624,91353187841674,300726681624JAMGMC,22,FEMALE,rajput,Single,bharatsingh, Qtr No. 662 Mediical Qtr GMC Medical Campus Hanuman Nagar,#NAME?,#NAME?,440003,7083642002,A+ve,0.599,0.2231,Inconclusive,21-07-2023 12:16,
|
||||||
|
44,Dhanashri Satishrao Dhurai,300927118299,91581435735823,300927118299DHAGMC,21,FEMALE,,Single,Satish dhurai ,C/O D/O Satishrao Dhurai near chhoti gad payri bhagatsingh ward Ramtek,Nagpur,MAHARASHTRA,441106,8855968742,A+ve,0.2537,0.1161,Normal (HbA),19-07-2023 13:51,
|
||||||
|
29,Saurabh Pramod Wankhede,303806120289,91731718170616,303806120289SAUGMC,24,MALE,sc,Single,pramod,C/O Pramod Wankhede Manewada Besa Road Near Boudha Vihar Kapil Nagar Besa,Nagpur,MAHARASHTRA,440034,9172338439,A+ve,0.2209,0.1069,Normal (HbA),22-07-2023 10:21,
|
||||||
|
25,Rohit Shravanrao Alone,304447045628,91648248476042,304447045628ROHGMC,22,MALE,bhat,Single,shravanrao alone ,"C/O : Ashok Bawane Plot No. 158 Umred Road Near Hanuman Mandir Manav Shakti Gruhanirman Society, Dighori Naka No. 7 Hanuman Nagar",Nagpur,MAHARASHTRA,440009,9307041214,,0.2153,0.1052,Normal (HbA),22-07-2023 12:52,
|
||||||
|
35,Adarsh Kavdu Larokar,304883348213,34815238814702,304883348213ADAGMC,24,MALE,khatik,Single,kawdu larokar, S/O KAVDU LAROKAR 297 KHATIKPURA MACHHISATH MUTTON MARKET TIN NAL CHOWK ITWARI Nagpur City,NAGPUR,MAHARASHTRA,440002,9766557572,B+ve,0.2271,0.1087,Normal (HbA),22-07-2023 10:29,
|
||||||
|
204,Aniruddha Pralhad Waghmare,307289914993,60786156505100,307289914993ANIGMC,22,MALE,mahar ,Single,pralhad waghmare ,C/O Pralhad Waghmare indira nagar jatat rodi no 3 b/h ramesh kirana STORS Ajni,NAGPUR,MAHARASHTRA,440003,7020034226,,0.649,0.2524,Sickle cell Disease (HbSS),25-07-2023 11:25,shila waghmare 9561602332
|
||||||
|
101,Divakar Aahake,317888402317,30088647358331,317888402317DIVGMC,34,MALE,st,Married,kashiram,C/O Kashiram Aahake ward no 3 gram Khutamba post Aamladepo Tehsil sausar Amla F.V.,Chhindwara,Madhya Pradesh,480106,9644316266,,0.3457,0.1386,Normal (HbA),24-07-2023 13:33,"sagunabai aahakey ( mother) , Vandana aahakey ( wife)"
|
||||||
|
196,Suraj Rameshwar Gadling,320550327487,42426287243155,320550327487SURGMC,37,MALE,,Married,rameshwar gadling ,"C/O Rameshwar Gadling Near Suraj Kirana store Ghar No.169/A/100, Indira nagar, Jatatarodi Ajni S.O",NAGPUR,MAHARASHTRA,440003,7709106467,O+ve,0.6196,0.2344,Inconclusive,19-07-2023 12:57,kanta gadling (mother)age 60
|
||||||
|
173,Payal Sheshrao Bhimte,323854818047,91517703077266,323854818047PAYGMC,23,FEMALE,,Single,sheshrao bhimte,C/O D/O Shesharav Bhimte hari om kirana stor jwal 225 raut nagar umred road dighori Adegaon,Nagpur,MAHARASHTRA,440034,9075524167,B+ve,0.5535,0.2014,Inconclusive,18-07-2023 11:05,
|
||||||
|
163,Sunanda sonsare ,331175211385,91763261421831,331175211385SUNGMC,42,Female,,Married,Sureshji sonsare ,"45 k k developer , umread road bahadura Nagpur ",NAGPUR ,Maharashtra ,441204,9607753850,A+ve,0.5207,0.1881,Sickle Cell Trait (HbAS),19-07-2023 13:10,
|
||||||
|
126,Sanket Manohar Rasekar,334381433308,75588776350856,334381433308SANGMC,25,MALE,kunbi,Single,manohar,"C/O Natthuji Kolhe GANDHI KANYA ROAD NEW SHUKRAWARI, GADIKHANA Mahal S.O",#NAME?,#NAME?,440032,7709723090,,0.43,0.1594,Inconclusive,25-07-2023 11:46,
|
||||||
|
148,Lavkit Manraj Surpam,338035943530,91671726251570,338035943530LAVGMC,23,MALE,,Single,manraj,C/O Manraj Surpam KOHALA KOHALA Kohla,Nagpur,MAHARASHTRA,441108,8080231809,O+ve,0.4812,0.1744,Sickle Cell Trait (HbAS),20-07-2023 11:31,manraj surpam (Father) ss pattern
|
||||||
|
22,Shivam Raghunath Yewale,338225111489,91304875026128,338225111489SHIGMC,17,MALE,kunbi,Single,raghunath yewale ,"C/O Raghunath Yewale ZENDA CHOWK,BESIDE N.M.C HOSPITAL HOUSE NO-737,ZINGABAI TAKLI Mankapur S.O",Nagpur,MAHARASHTRA,440006,9284969427,,0.2112,0.1039,Normal (HbA),24-07-2023 13:22,
|
||||||
|
71,Karan Devendra Bhalavi,339468601438,91287557703637,339468601438KARGMC,19,MALE,gondhi,Single,Devendra bhalavi,C/O Devendra Bhalavi NEAR police chauki RAMDASPETH Shankar Nagar,Nagpur,MAHARASHTRA,440010,7821863823,,0.2904,0.1255,Normal (HbA),24-07-2023 13:41,
|
||||||
|
138,Rajat Yadav Ramteke,348941978528,91451681445446,348941978528RAJGMC,29,MALE,mahar,Single,yadav maniram ramteke , 194 NEAR ALOK BAUDDHA VIHAR JUNA BAGADGANJ nagpur,Nagpur,MAHARASHTRA,440008,8999723156,O+ve,0.4584,0.1674,Inconclusive,21-07-2023 11:33,
|
||||||
|
142,Rita Gowardhan Sakure,349918148748,91681724868051,349918148748RITGMC,33,FEMALE,,Married,govardhan sakure, plot 105 Manewada Ring road Near Prerna Convent New Amar Nagar Manewada Parvati Nagar,Nagpur,MAHARASHTRA,440027,7709592984,O+ve,0.4687,0.1705,Sickle Cell Trait (HbAS),18-07-2023 11:41,
|
||||||
|
171,Ravichandra Pramod Muneshwar,352405884025,91511212402016,352405884025RAVGMC,25,MALE,,Single,pramod," bakane layout , ward no 1 Deoli",Wardha,MAHARASHTRA,442101,7517583179,A+ve,0.547,0.1986,Sickle Cell Trait (HbAS),14-07-2023 13:13,mother name : nanda mb no: 8329830890
|
||||||
|
50,Prashant Rambhauji Kavde,352620541105,91317642528309,352620541105PRAGMC,34,MALE,,Single,Rambhauji kavde ,C/O Rambhauji Kavde chichghat Pardi,Wardha,MAHARASHTRA,442301,9689969951,A-ve,0.2646,0.119,Normal (HbA),18-07-2023 12:11,
|
||||||
|
8,Krushik Gangaram Pawar,353546842014,91238243437031,353546842014KRUGMC,23,MALE,,Single,gangaram,C/O : Lahudas Somkuwar Plot No 273 Near BSNL Office Jagjiwanram Nagar Bhandewadi,Nagpur,MAHARASHTRA,440008,7218112996,B+ve,0.1881,0.0965,Normal (HbA),20-07-2023 11:28,
|
||||||
|
51,Usha Ashish Meshram,361309473890,91716158774118,361309473890USHGMC,28,FEMALE,,Married,ashish meshram ,C/O : Ashish Meshram kundanlal gupta nagar buddha vihar Nagpur City,Nagpur,MAHARASHTRA,440002,8390206642,B+ve,0.2658,0.1193,Normal (HbA),20-07-2023 14:00,
|
||||||
|
9,Aditya Anil Meshram,362838010356,91744875650775,362838010356ADIGMC,23,MALE,mahar ,Single,Anil meshram ," Plot N.21,H.N.3266 Near Kushinara Buddha Vihar New Kailasha Nagar Bhagwan Nagar",Nagpur,MAHARASHTRA,440027,9767093130,O+ve,0.193,0.0981,Normal (HbA),22-07-2023 09:51,
|
||||||
|
45,Shivlal Batti,375993866028,91310836436744,375993866028SHIGMC,19,MALE,,Single,munnu,C/O Munnu Batti Ward N--07 Damua Mal Damua,#NAME?,#NAME?,480441,8959181696,A+ve,0.2551,0.1165,Normal (HbA),19-07-2023 11:48,
|
||||||
|
159,Gaurav Anil Kaikade,380000668093,91176155701806,380000668093GAUGMC,17,MALE,,Single,anil kaikade,C/O Anil Kaikade Plot No. 17 Near Manbhav Pant Mandir Vijayalaxmi Pandit Nagar Hanuman Nagar,Nagpur,MAHARASHTRA,440009,9765771868,A+ve,0.5088,0.1838,Sickle Cell Trait (HbAS),19-07-2023 10:57,"varsha kaikade , 39/f, nagpur, (AS) ( mother ) "
|
||||||
|
179,sujata patil ,383542775017,91628242000717,383542775017SUJGMC,37,Other,,Married,Amar patil ,01 jaybhim nagar Nagpur ,NAGPUR ,Maharashtra ,441106,8805056416,B+ve,0.5744,0.2108,Inconclusive,19-07-2023 11:04,
|
||||||
|
97,Sunita Bipin Bangade,399734067075,91255707582177,399734067075SUNGMC,39,FEMALE,teli ,Married,Bipin bangade,C/O W/O: Bipin Bangade At-Post-Parvati Nagar Parvati Nagar,Nagpur,MAHARASHTRA,440027,9637440543,,0.3361,0.1364,Normal (HbA),24-07-2023 12:18,
|
||||||
|
83,Swapnil Rajeshwar Motalwar,402131951644,91534084067600,402131951644SWAGMC,40,MALE,Beldar,Married,rajeshwar motalwar,C/O Rajeshwar Motalwar plot no.498/05 near shiv mandir chandan nagar Hanuman Nagar,Nagpur,MAHARASHTRA,440009,8329883744,A+ve,0.3051,0.129,Normal (HbA),22-07-2023 09:59,
|
||||||
|
93,Pawan Vijay Ginnare,406979678757,91280610037754,406979678757PAWGMC,23,MALE,bhavsar,Single,Vijay ginnare,"C/O Vijay Ginnare 128 Kumbhartoli Chowk Juna Bagadganj, Bajrang Nagar Bhandewadi",Nagpur,MAHARASHTRA,440008,7709644160,,0.3275,0.1343,Normal (HbA),24-07-2023 13:26,
|
||||||
|
91,Premchand Chandrakant Kumbhare,407895809526,91517308425670,407895809526PREGMC,33,MALE,costi,Single,chandrakant kumbhare ,"C/O Chandrakant Kumbhare BEHIND PANCHSHEEL VIDYALAYA P.N.807,BALA BHAU PETH,BAPUKUTI NAGAR Dr.Ambedkar Marg S.O",Nagpur,MAHARASHTRA,440017,8459333800,O+ve,0.3223,0.1331,Normal (HbA),24-07-2023 11:56,
|
||||||
|
149,Dinesh Chintamanji Dodke,409322281980,91423706206566,409322281980DINGMC,39,MALE,mang ,Married,chitamanji dodke," House 97 Amravati Road Near Avdhoot Ata Chakki Heti , 8th mile , Dawlameti Nagpur (Urban)",Nagpur,MAHARASHTRA,440023,7620441989,,0.4839,0.1753,Sickle Cell Trait (HbAS),21-07-2023 10:44,
|
||||||
|
110,Vaishali Santosh Bagde,411806169311,91113882174262,411806169311VAIGMC,22,FEMALE,mahar,Single,Santosh bagde,"C/O D/O Santosh Bagde near narendra sawaji bhojanalay 88, gurudeo nagar,hudkeshwar road Ayodhya Nagar S.O",Nagpur,MAHARASHTRA,440024,7558230604,B+ve,0.3614,0.1423,Inconclusive,25-07-2023 10:22,
|
||||||
|
98,Pratik Sahebrao Umare,413378207996,75845328112089,413378207996PRAGMC,21,MALE,Buddha ,Married,sahebrao umare ,C/O Sahebarao Umare kinhi Kinhi,yavatmal ,Maharashtra ,445306,7887973520,,0.3376,0.1367,Normal (HbA),21-07-2023 10:58,
|
||||||
|
12,Shivam Sanjay Chourasia,414109196042,91472032745326,414109196042SHIGMC,22,MALE,,Single,Sanjay chourasia ,C/O Sanjay Chourasiya CHOURASIYA HOTEL CHOWK OPP. SUVIDHA LODGE KHALASI LINE MOHAN NAGAR Nagpur (Urban),Nagpur,MAHARASHTRA,440001,9175860682,O+ve,0.1951,0.0988,Normal (HbA),20-07-2023 12:34,
|
||||||
|
203,Shweta Vijay Tekam,415802529942,91618863285630,415802529942SHWGMC,29,FEMALE,,Married,Vijay , House No 299 Near sharda Mata Mandir Takiya Dhantoli Nagpur,Nagpur,MAHARASHTRA,440012,8669751942,A+ve,0.6454,0.2501,Sickle cell Disease (HbSS),19-07-2023 10:37,"gaura Vijay tekam 42 /f , ( AS ) Vijay tekam , 61/m ( AS ) , Nagpur "
|
||||||
|
77,Rina Rajesh Kumbhare,417687247525,91500481223278,417687247525RINGMC,31,FEMALE,,Married,Rajesh kumbhare,C/O : Rajesh Laxman Kumbhare H.N 61 Ward No.1 Near Gram Panchayat Bhowari Bhowari,Nagpur,MAHARASHTRA,441104,9579516122,B+ve,0.2958,0.1268,Normal (HbA),18-07-2023 13:27,
|
||||||
|
41,Mandar Ratnakar Kawale,423160089593,91553642455784,423160089593MANGMC,19,MALE,sonar,Single,ratnakar kawale,C/O Ratnakar Deoraoji Kawale near gajanan maharaj mandir waard no.5 laxmi nagar at.po.th.mauda Mauda,Nagpur,MAHARASHTRA,441104,9420221535,,0.2406,0.1125,Normal (HbA),25-07-2023 13:15,
|
||||||
|
134,Adarsh Bhupesh Bhaisare,427882870427,91680136107447,427882870427ADAGMC,31,MALE,,Single,bhupesh bhaisare ,C/O Bhupesh Bhaisare NEAR FAMOUS LAIBRARY GAUTAM NAGAR GADDIGODAM Nagpur (Urban),Nagpur,MAHARASHTRA,440001,7218981011,A+ve,0.4495,0.1648,Inconclusive,19-07-2023 13:26,
|
||||||
|
64,Raushan Khatun Jahagir Ansari,428367386324,37554086082438,428367386324RAUGMC,40,FEMALE,Ansari ,Married,jahagir Ansari , WARD NO.1 HARIHAR NAGAR KANDRI KANHAN TAL PARSEONI Sihora,NAGPUR,MAHARASHTRA,441401,9637175096,B+ve,0.2799,0.1229,Normal (HbA),24-07-2023 11:10,
|
||||||
|
150,Trupti Gajanan Ingole,436950545584,91275755531447,436950545584TRUGMC,17,FEMALE,,Single,gajanan engole,C/O : Harichand Naik naik talaw bangaladesh near hanuman mandir Nagpur City,Nagpur,MAHARASHTRA,440032,8830143644,B+ve,0.4853,0.1757,Sickle Cell Trait (HbAS),18-07-2023 11:27,Ranjita gajanan engole 883043644
|
||||||
|
69,Vanshika Ajay Khairkar,439523119226,91338683063808,439523119226VANGMC,18,FEMALE,SC,Single,ajay khaikar,C/O D/O: Ajay Khairkar Plot No.01 Galli No.01 Near NIT Garden Chandramani Nagar Parvati Nagar,Nagpur,MAHARASHTRA,440027,9545750833,,0.286,0.1244,Normal (HbA),24-07-2023 12:55,
|
||||||
|
130,Sandip Madhukarrao Wankhede,441043890523,91714015452036,441043890523SANGMC,34,MALE,kunbi,Married,madhukar wankhede ,"C/O Madhukarrao Wankhede near thavkar kirana store plot no. 131, mini mata nagar, galli no. 5, Bhandewadi",Nagpur,MAHARASHTRA,440008,9326321466,,0.4425,0.1628,Inconclusive,22-07-2023 13:07,sonu wankhede 9322261341
|
||||||
|
65,Ehsas Ratan Patil,443970336106,91114806507520,443970336106EHSGMC,16,FEMALE,,Single,Ratan patil,"C/O D/O Ratan Patil front of ishwar deshmukh college ghar no.-423, tana kuti, chandan nagar Hanuman Nagar S.O",Nagpur,MAHARASHTRA,440009,7558658318,O+ve,0.2814,0.1232,Normal (HbA),18-07-2023 10:41,
|
||||||
|
39,Sachin Gangadhar Bhajabhuje,453249725047,91277431250566,453249725047SACGMC,32,MALE,tili,Married,Sachin bhajabhuje,C/O Gangadhar Bhajabhuje wasi Wasi,Nagpur,MAHARASHTRA,402107,8010262556,B+ve,0.2333,0.1105,Normal (HbA),25-07-2023 10:09,
|
||||||
|
79,Tanmay Sachchidanand Patil,455783858620,91464664174818,455783858620TANGMC,20,MALE,mahar ,Single,sachinad patil ,C/O Sachchidanand Patil PARDESI PURA ROAD Gaddigodam gautam nagar Nagpur (Urban),Nagpur,MAHARASHTRA,440005,8080760288,,0.3008,0.128,Normal (HbA),24-07-2023 10:27,
|
||||||
|
70,Durga Manoj Shende,459620981698,91416847780523,459620981698DURGMC,33,FEMALE,Lohar,Married,Manoj shende,C/O W/O Manoj Shende Near Primary Highschool Ashok Nagar Ner,Yavatmal ,Maharashtra ,445102,9921524052,,0.2888,0.1251,Normal (HbA),24-07-2023 12:15,
|
||||||
|
24,Amruta Ravindra Bhoyar,460877597788,58620744415171,460877597788AMRGMC,25,FEMALE,,Single,ravindra,C/O D/O: Ravindra Bhoyar Plot No 87 Bharatwada Road Talmale Lay Out Pardi,NAGPUR,MAHARASHTRA,440035,9529596923,O+ve,0.2149,0.1051,Normal (HbA),19-07-2023 10:33,
|
||||||
|
14,Akash Dashrath Pantavane,461481548603,70385844387373,461481548603AKAGMC,26,MALE,sc,Single,dashrath pantavane ,"C/O Dashrath Pantavane C/O Rekha Dharamji Mate Plot No. 4, Chikali Road Near Shewade Hardware Awdhoot Nagar Hudkeshwar bk.",Nagpur,Maharashtra,440034,8087796939,,0.1988,0.1,Normal (HbA),22-07-2023 12:07,
|
||||||
|
167,Nihar Sanjeev Aglawe,463136022041,91145636022041,463136022041NIHGMC,16,MALE,,Single,sanjeev,C/O Sanjeev Aglawe PLOT NO 307 NEAR N I T GARDEN UNTKHAN DAHIPURA Hanuman Nagar,Nagpur,MAHARASHTRA,440009,8888728581,O+ve,0.5284,0.1911,Sickle Cell Trait (HbAS),20-07-2023 12:30,Father AS pattern
|
||||||
|
137,Tushar Dinesh Bhede,464127789021,91448028757541,464127789021TUSGMC,19,MALE,,Single,DINESH ,C/O Dinesh Bhede navnat mandir jawal bhagatsing ward navin takli Bhandara,Bhandara,MAHARASHTRA,441904,7249361700,A+ve,0.4578,0.1672,Inconclusive,20-07-2023 12:22,
|
||||||
|
104,Bhagyashri Ramesh Patil,466265959859,91207140174401,466265959859BHAGMC,20,FEMALE,SC ,Single,ramesh patil,C/O D/O: Ramesh Patil PLOT NO 15 MAA AMBE NAGAR PARDI Bhandewadi,Nagpur,MAHARASHTRA,440008,9511886322,,0.3471,0.1389,Normal (HbA),24-07-2023 10:20,
|
||||||
|
108,Bhagyashri Vijay Markam,470615271987,91716877641242,470615271987BHAGMC,43,FEMALE,,Married,Vijay markam ,C/O : Smt. Kantabai K Raut Plot No. 01 Lokhande Nagar Parsodi Ranapratap Nagar,Nagpur,MAHARASHTRA,440022,7620933159,O+ve,0.3557,0.141,Inconclusive,18-07-2023 10:58,tarnya Vijay markam 7620933159
|
||||||
|
63,Supriya Rajesh Ukey,471195123226,91273774142189,471195123226SUPGMC,20,FEMALE,,Single,rajesh ukey,C/O D/O Rajesh Ganpat Ukey Plot No. 26 Near Lanjewar School Saibaba Nagar Kharbi Adegaon,Nagpur,MAHARASHTRA,440034,9325657894,O+ve,0.2785,0.1225,Normal (HbA),18-07-2023 13:28,
|
||||||
|
111,Shivani Mahesh Wasnik,471452821855,91686888822869,471452821855SHIGMC,28,FEMALE,mahar,Married,dhiraj ,C/O D/O Mahesh Wasnik NEAR BUDDHAM RAUT PLOT NO-76 RAMAKANT ROAD LAL CHOWK INDORA Bezonbagh S.O,Nagpur,MAHARASHTRA,441106,9657308384,,0.3639,0.1429,Inconclusive,22-07-2023 12:44,
|
||||||
|
181,Lata Vilas Shende,486617024152,91328310746271,486617024152LATGMC,36,FEMALE,Diwar,Married,vilas shende,"C/O W/O Vilas Shende waard n,5 po mul tah mul Mul",chandrapur ,Maharashtra ,441224,7030182528,,0.5797,0.2134,Inconclusive,24-07-2023 12:12,Nanaji tingusle (brother)
|
||||||
|
154,Kalpanabai Pruthviraj Patil,488108407429,91452574782713,488108407429KALGMC,37,FEMALE,,Married,pruthviraj,C/O : Pruthviraj Patil Plot no. 49 Bidgaon.,Nagpur,MAHARASHTRA,441203,9049902587,AB+ve,0.4934,0.1784,Sickle Cell Trait (HbAS),18-07-2023 11:34,"boy and girl tanushri patil ,shenhsir patil"
|
||||||
|
67,Soniya Prakash Dhurve,494966371438,12546573528013,494966371438SONGMC,32,FEMALE,gnode,Single,"prakash dhurve
|
||||||
|
","C/O D/O Prakash Dhurve kavadas,patansavangi,word no-3 at-po-patansavangi,ta-savner Patansavangi",NAGPUR,MAHARASHTRA,441113,9021287856,,0.2834,0.1237,Normal (HbA),24-07-2023 11:46,
|
||||||
|
31,Amar Pancham Hirekhan,503248707508,91256223328400,503248707508AMAGMC,29,MALE,mahar,Single,panchan, Plot No 314 Milan nagar Near Chandmari Mandir Wathoda Lay Out Vathoda,Nagpur,MAHARASHTRA,440035,9075357319,,0.5737,0.2105,Inconclusive,22-07-2023 12:01,
|
||||||
|
178,Rahul Vijay Kharkar,505426056223,91762713747165,505426056223RAHGMC,33,MALE,kunbhi,Married,Vijay , at post ghumthala tah kamptee Gumthala,Nagpur,MAHARASHTRA,441210,9307371637,,0.223,0.1075,Normal (HbA),22-07-2023 11:25,
|
||||||
|
32,Vaibhav Vinod Sukhchain,508159976113,91444072285539,508159976113VAIGMC,25,MALE,OBC ,Single,vinod Ramdas sukhchain , Pinjar Pinjar Pinjar Ta.Barshitakli Kardu,Akola,MAHARASHTRA,444407,7028284680,,0.2057,0.1022,Normal (HbA),22-07-2023 12:21,
|
||||||
|
15,Yogesh Girish Nirmal,509529186304,91784438125717,509529186304YOGGMC,20,MALE,chambhar,Single,Girish nirmal ,C/O Girish Nirmal bhande plot Sevadal nagar Ayodhya Nagar S.O, ,MAHARASHTRA,440024,8446858744,B+ve,0.4923,0.1781,Sickle Cell Trait (HbAS),21-07-2023 11:35,
|
||||||
|
153,Parag Jayawant Bhamare,509661674793,10678745568023,509661674793PARGMC,34,MALE,,Married,jayawant bhamare,C/O Jayawant Bhamare mu post bazar peth pimpalner Pimpalner,Dhule,Maharashtra,424306,9370476800,AB-ve,0.1668,0.089,Normal (HbA),20-07-2023 11:37,
|
||||||
|
26,Tanushree Gowardhan Sakure,514252542417,91621304260568,514252542417TANGMC,7,FEMALE,,Single,govardhan ,C/O D/O: Gowardhan Sakure gangabai ghat road ganesh mandir shivaji nagar Mahal,Nagpur,MAHARASHTRA,440032,7709592984,O+ve,0.2908,0.1256,Normal (HbA),18-07-2023 11:24,mother
|
||||||
|
72,Ratnmala Rajendra Gajbhiye,518517486144,91461147733202,518517486144RATGMC,34,FEMALE,Mahar,Married,Rajendra ,C/O W/O: Rajendra Gajbhiye ward No. 3 Paradi Deshmukh Pardi (Desh),Nagpur,MAHARASHTRA,441502,7378316656,,0.3724,0.1449,Inconclusive,24-07-2023 12:20,
|
||||||
|
112,Pratham Pravin Narel,524553947204,91728056052232,524553947204PRAGMC,21,MALE,beldar,Single,pravin neral,C/O : Vitthal Manjare plot no.9-b near jagdamba tayping shiv nagar nandanvan Hanuman Nagar,Nagpur,MAHARASHTRA,440009,7498436782,A+ve,0.6802,0.274,Sickle cell Disease (HbSS),21-07-2023 11:37,
|
||||||
|
212,Vinod Vitthalrao Moon,529539693651,47871414834456,529539693651VINGMC,43,MALE,,Married,vitthalrao moon, 92 chandika nagar no 2 manewada besa road Parvati Nagar S.O,Nagpur,Maharashtra,440027,9604939578,B+ve,0.5906,0.2188,Inconclusive,18-07-2023 11:13,vinod vitthalrao moon 9604939578
|
||||||
|
182,Priya Ranjanji Gaydhane,530419420624,91440108307222,530419420624PRIGMC,23,FEMALE,madi,Single,Ranjan ji ,"C/O D/O Ranjanji Gaydhane WAARD NO-03 AT-POST-MASORA,TAH-NARKHED MASORA",Nagpur,MAHARASHTRA,441306,9834736598,,0.5201,0.1879,Sickle Cell Trait (HbAS),21-07-2023 11:09,
|
||||||
|
162,Samay Manoj Shende,536079615618,91365820568670,536079615618SAMGMC,19,MALE,mahar,Single,manoj shende,C/O Manoj Shende 3331/7A 00 Nara Ghat Road Triratna Nagar Jaripatka,Nagpur,MAHARASHTRA,440014,7796793803,,0.3974,0.151,Inconclusive,25-07-2023 12:00,
|
||||||
|
119,Aditya Vinod Patil,540252260849,91534361104258,540252260849ADIGMC,23,MALE,mahar,Single,vinod patil , ghar no. 803 near vishakha mahila mandal jat tarodi no. 2 Ajni,Nagpur,MAHARASHTRA,440003,8600772466,AB-ve,0.3189,0.1323,Normal (HbA),24-07-2023 11:17,
|
||||||
|
90,Payal Pravin Shamkuwar,542345482977,91431200368832,542345482977PAYGMC,28,FEMALE,,Married,Pravin,C/O : Pravin Shamkuwar Bhande Plot Umred Road Sewadal Nagar Nagpur (Urban),Nagpur,MAHARASHTRA,440001,7620224122,O+ve,0.2661,0.1193,Normal (HbA),18-07-2023 12:15,
|
||||||
|
52,Manish Ganesh Badwaik,547500432358,91738102200842,547500432358MANGMC,22,MALE,teli,Single,ganesh,"C/O Ganesh Badwaik behind vrundawan lawn plot no. 33, shahu nagar, manewada besa road Mhalgi Nagar",Nagpur,MAHARASHTRA,440034,8788840502,,0.4808,0.1743,Sickle Cell Trait (HbAS),25-07-2023 10:30,"priti chakole ( sister ) ss , aashish balwaik ( ss ) , Sunita balwaik ( mother ) (as) , ganesh balwaik ( father ) ( as ) "
|
||||||
|
147,Aniket Dipak Korde,547636109632,91466065681549,547636109632ANIGMC,22,MALE,pawar,Single,dipak korde,C/O Dipak Korde gali no 2 k d k college road near nag mandir nandanvan zopadpatti Hanuman Nagar,Nagpur,MAHARASHTRA,440024,7066280727,O+ve,0.23,0.1095,Normal (HbA),24-07-2023 11:51,
|
||||||
|
37,Kashish Dinesh Sahagal,550398198758,31401661775000,550398198758KASGMC,18,FEMALE,Panjabi khatri,Single,Dinesh sahagal,C/O : Abahy Shinde House No 1128/B/750 Galli No 13 Near SHiv Mandir Nandanvan Zopadpatti Hanuman Nagar,NAGPUR,MAHARASHTRA,440009,7517612833,,0.5434,0.1971,Sickle Cell Trait (HbAS),21-07-2023 13:29,
|
||||||
|
170,Sakshi Pannalal Lanjewar,555872236142,91764467850641,555872236142SAKGMC,19,FEMALE,teli ,Single,Pannalal lanjewar , plot no.180 jay durga SocIety layout 3 beltarodi road behind mahajan hadwear shyam nagar somalwada Vivekanand Nagar,Nagpur,MAHARASHTRA,440037,9307179481,A+ve,0.4498,0.1649,Inconclusive,25-07-2023 10:16,
|
||||||
|
135,Swapnil Ramrav Nat,557610954424,91157866102039,557610954424SWAGMC,27,MALE,gawali,Single,ramrav nat, TA WARORA AT ARJUNI POST ARJUNI Arjuni Tukum,Chandrapur,MAHARASHTRA,440009,8669394913,,0.3937,0.1501,Inconclusive,25-07-2023 11:54,
|
||||||
|
118,Priti Chandrashekhar Sangole,566216578679,91132834636525,566216578679PRIGMC,39,FEMALE,sc,Single,chandrashekhar sangole,C/O D/O Chandrashekhar Sangole kamptee road shende nagar teka naka near samta school Uppalwadi,Nagpur,MAHARASHTRA,440026,9595592881,,0.6721,0.2681,Sickle cell Disease (HbSS),24-07-2023 13:10,Chandrashekhar sangole
|
||||||
|
208,Maithili Ravi Ade,571322451864,91100245552235,571322451864MAIGMC,9,FEMALE,,Single,Ravi ade,C/O : Ravi Govind Ade Dattnagar Gokunda,#NAME?,#NAME?,440034,8250292877,A+ve,0.3231,0.1333,Normal (HbA),19-07-2023 13:14,
|
||||||
|
57,Sadu Vinod Sawarkar,578479578451,91481088112158,578479578451SADGMC,17,FEMALE,tali,Single,Vinod ,C/O : Ashok Rewatkar Plot No. 7 Manewada Road Near Gajanan Maharaj Mandir Mitra Nagar Parvati Nagar,Nagpur,MAHARASHTRA,440024,9922182175,A+ve,0.2728,0.1211,Normal (HbA),22-07-2023 10:58,
|
||||||
|
81,Amol Ramsingh Uikey,579588566410,91151088476842,579588566410AMOGMC,58,MALE,,Single,ramsingh uikey,"C/O Ramsingh Mallusing Uikey Near Hanuman Mandir Mu -Wela (Harishchandra), Tal Dist- Nagpur Pipla",Nagpur,MAHARASHTRA,440034,8208738819,B+ve,0.3026,0.1284,Normal (HbA),19-07-2023 11:46,
|
||||||
|
160,Ram Laxman Wadibhashme,580785890063,91358352650362,580785890063RAMGMC,27,MALE,Teli,Single,laxman wadibhashme ,C/O Laxman Wadibhashme ashti ashti po khat th mouda Khat,Nagpur,MAHARASHTRA,441106,8796455216,,0.5147,0.1859,Sickle Cell Trait (HbAS),25-07-2023 12:15,
|
||||||
|
27,Rajkiran Kishor Patil,581532368548,91526833353836,581532368548RAJGMC,33,MALE,mahar,Single,kishor,C/O Kishor Patil killapura ward no. 13 Savner,Nagpur,MAHARASHTRA,441107,8956816990,B+ve,0.2184,0.1061,Normal (HbA),22-07-2023 10:36,
|
||||||
|
202,Priyanka Milind Bahadure,588442092331,91631705403568,588442092331PRIGMC,23,FEMALE,mahar ,Single,Milind bahadure,"C/O D/O Milind Bahadure PLOT NO 49, AVDHUT NAGAR, MANEWADA RING ROAD Parvati Nagar S.O",Nagpur,MAHARASHTRA,440027,9699893065,O+ve,0.6422,0.248,Inconclusive,25-07-2023 09:55,Priyanka bahadure (self )
|
||||||
|
75,Ravikala Dinesh Rahangdale,590357992304,91573806303075,590357992304RAVGMC,29,FEMALE,pavar,Married,dinesh rahangdale,C/O W/O Dinesh Rahangdale House No 611 At Chicholi Near Hanuman Mandir Chicholi,Bhandara,MAHARASHTRA,441912,8208717517,,0.2954,0.1267,Normal (HbA),25-07-2023 13:26,
|
||||||
|
6,Pranav Rajendraji Supatkar,590783464069,91711286466638,590783464069PRAGMC,20,MALE,sutat,Single,Rajendra ji,"C/O Rajendraji Supatkar AT-PO- MENDHEPATHAR, TAH-KATOL Mendhepathar",#NAME?,#NAME?,441302,9623942514,,0.1838,0.095,Normal (HbA),22-07-2023 11:11,
|
||||||
|
68,Ujwal Ravindra Raut,592922714261,91411043783678,592922714261UJWGMC,21,MALE,,Single,ravindra Raut , S/O Ravindra Raut Plot No 89 Antuji Nagar Near Masjid Railway Station Road Bhandewadi Pardi,Nagpur,MAHARASHTRA,440008,7448147081,O+ve,0.2845,0.124,Normal (HbA),20-07-2023 12:27,
|
||||||
|
54,Vinay Doliram Neware,595195901827,91171663238375,595195901827VINGMC,19,MALE,,Single,doliram neware ,C/O : Doliram Neware House No 237 Ganga Nagar Hajari Pahad Katolroad,Nagpur,MAHARASHTRA,440013,7498891146,O+ve,0.2692,0.1201,Normal (HbA),18-07-2023 11:02,
|
||||||
|
197,Ashish Ganesh Badwaik,603304665354,91301142706086,603304665354ASHGMC,25,MALE,teli ,Single,ganesh badwaik ,C/O Ganesh Badwaik Plot No 13 Gita Nagar Besa Road Near Essar Petrol Pump Manewada Hudkeshwar bk.,Nagpur,MAHARASHTRA,440034,7030787811,,0.6213,0.2354,Inconclusive,24-07-2023 10:41,ganesh badwaik (Father)age 54 As pattern 2) Sunita badwaik ( mother) 48 As 3) Manish badwaik (brother) As. age - 22 9011255055
|
||||||
|
128,Latika Diliprao Gadge,603473023065,91587613477187,603473023065LATGMC,20,FEMALE,pawar,Single,dilip gadge,C/O : Aarti D Sawarkar PLOT NO 11 LUV KUSH NAGAR MANEWADA ROAD Hudkeshwar bk.,Nagpur,MAHARASHTRA,440034,9112323962,O+ve,0.4353,0.1609,Inconclusive,25-07-2023 09:49,
|
||||||
|
201,Shrushti Sunil Gedam,603931916214,91578100733802,603931916214SHRGMC,5,FEMALE,,Single,Sunil Gedam , Ward No 01 At Owala Tah Nagbhir Palasgaon Kh,Chandrapur,MAHARASHTRA,441221,7798630025,AB+ve,0.6378,0.2453,Inconclusive,18-07-2023 13:39,1) Papa AS pattern 2) Mummy AS pattern
|
||||||
|
151,Rasika Dhanpal Bawankar,617155943301,91681228510878,617155943301RASGMC,22,FEMALE,teli,Single,dhanpal bawankar,C/O D/O Dhanpal Bawankar hanuman mandir mage mu.keshalwada po.mohadura Kesalwada,Bhandara,MAHARASHTRA,441906,9923524930,,0.4881,0.1767,Sickle Cell Trait (HbAS),25-07-2023 11:15,
|
||||||
|
103,Rahul Kisanrao Masram,620868858979,91171144386637,620868858979RAHGMC,31,MALE,,Married,kisanrao," Plot N. 7,Jay Durga Society Wardha Road Somalwada Nagpur",Nagpur,MAHARASHTRA,440037,7058302977,B+ve,0.3464,0.1388,Normal (HbA),18-07-2023 11:00,
|
||||||
|
17,Pravin Dnyandev Gadbail,621199873463,91774355001124,621199873463PRAGMC,32,MALE,teli,Single,dnyandev gadbail, ta barshitakali havili pura Kardu,Akola,MAHARASHTRA,444407,9730332410,,0.2062,0.1024,Normal (HbA),22-07-2023 12:23,
|
||||||
|
192,Tony Arjun Indurkar,623091631843,91672876316361,623091631843TONGMC,40,MALE,mahar ,Married,Arjun indurkar ,"C/O Arjun Indurkar MAHAPRAJAPATI BUDDHA VIHAR 329, GADDIGODAM, GAUTAM NAGAR Nagpur (Urban)",Nagpur,MAHARASHTRA,440001,9272473637,,0.6093,0.2286,Inconclusive,24-07-2023 12:26,
|
||||||
|
174,Shrawan Shamrao Dhurve,628888307576,91184565854256,628888307576SHRGMC,20,MALE,gond,Single,sham rao,C/O Shamrao Dhurve bidgaon Bid jatamkhora,Nagpur,MAHARASHTRA,441112,8010205596,O+ve,0.5573,0.203,Inconclusive,21-07-2023 12:04,
|
||||||
|
33,Diksha Arun Meshram,631723025707,91261037271200,631723025707DIKGMC,22,FEMALE,,Single,Arun meshram , Hiwara Tarsa,Nagpur,MAHARASHTRA,441106,8208289938,B+ve,0.2235,0.1076,Normal (HbA),19-07-2023 13:53,
|
||||||
|
92,Aachal Laxminarayan Varma,637764680553,91431713428040,637764680553AACGMC,22,FEMALE,,Single,Laxminarayan ,C/O D/O Laxminarayan Varma shivshakti bar jawal plot no 146 chintamani nagar kalmana juna kamthi road Uppalwadi S.O,Nagpur,MAHARASHTRA,440026,8806489105,O+ve,0.3258,0.1339,Normal (HbA),19-07-2023 13:52,
|
||||||
|
191,ritik Ramteke ,640047110809,91615878003867,640047110809RITGMC,21,Male,Buddhists ,Single,Yadav Ramteke ,juna bagadganj NAGPUR ,NAGPUR ,Maharashtra ,440008,8668470265,O+ve,0.6074,0.2276,Inconclusive,21-07-2023 11:29,
|
||||||
|
158,Vijay Kartik Kamble,644339826735,91451654172662,644339826735VIJGMC,39,MALE,bhudhist ,Married,kartik kamble,"C/O Kartik Kamble OLD POLICE STATION JATTARODI NO. 3, INDIRA NAGAR Ajni",Nagpur,MAHARASHTRA,440003,8446044438,,0.5015,0.1812,Sickle Cell Trait (HbAS),25-07-2023 11:22,
|
||||||
|
125,Aman Dinesh Tiwari,646290058285,91502115875119,646290058285AMAGMC,19,MALE,bramhan,Single,dinesh tiwari,C/O Dinesh Tiwari Hanuman Mandir. Shivaji Nagar Tumsar Tah.Tumsar Tumsar,Bhandara,MAHARASHTRA,441912,9673427245,,0.4266,0.1585,Inconclusive,25-07-2023 11:17,
|
||||||
|
132,Nilima Ritesh Sawarkar,647852551889,91270856621205,647852551889NILGMC,22,FEMALE,Sonar ,Single,ritesh sawarkar ," numbini nagara koradi road near ranu school mankapur, nagpur Mankapur",Nagpur,MAHARASHTRA,440014,9561721815,AB+ve,0.4431,0.163,Inconclusive,25-07-2023 09:34,
|
||||||
|
99,Prachi Tarun Gupta,650657749196,91434312526016,650657749196PRAGMC,23,FEMALE,baniya,Single,Tarun Gupta ,C/O D/O Tarun Gupta NEAR TAPASYA KIRANA STORES PLOT NO.19 BAJRANG NAGAR GALLI NO.1 Parvati Nagar S.O,Nagpur,MAHARASHTRA,440027,7387374506,,0.338,0.1368,Normal (HbA),25-07-2023 10:27,
|
||||||
|
120,Monali Ishwar Kulsange,653246965397,91432886206080,653246965397MONGMC,21,FEMALE,gond,Single,ishwar kulsange,C/O D/O: Ishwar Kulsange Plot No.48 Manewada Road Near Durga Mata Mandir Durga Nagar Ayodhya Nagar,Nagpur,MAHARASHTRA,440024,7840957615,O+ve,0.3997,0.1516,Inconclusive,21-07-2023 11:25,
|
||||||
|
46,Abhay Vishal Manohre,664411976347,91642574173844,664411976347ABHGMC,19,MALE,,Single,vishal manohare, Behind Isoleshan Hospital Imamwada Ajni S.O,Nagpur,MAHARASHTRA,440003,8308897762,O+ve,0.2586,0.1174,Normal (HbA),20-07-2023 10:41,
|
||||||
|
117,Devansh Bipin Bangade,665137592302,91462703788622,665137592302DEVGMC,11,MALE,teli ,Single,bipin bangade ,C/O Bipin Bangade At-Post-Parvati Nagar Parvati Nagar,Nagpur,MAHARASHTRA,440027,9637440543,,0.3882,0.1487,Inconclusive,25-07-2023 13:34,
|
||||||
|
62,Vandana Ravindra Patil,668553845136,91405005461463,668553845136VANGMC,40,FEMALE,agari ,Married,ravindra Patil ,"C/O W/O: Ravindra Pundalik Patil Room No-202, Vaishnav Banganga CHS Plot No-161 Sector-9, New Panvel(West) Panvel",Raigarh,MAHARASHTRA,410206,9082724401,,0.2768,0.1221,Normal (HbA),25-07-2023 13:36,
|
||||||
|
43,Vaibhav Vinod Kamde,673233437701,91338346703022,673233437701VAIGMC,22,MALE,teli ,Single,vinod kamde , Babupeth Junona Fata Near Hinglaj Bhavani Chandrapur Chandrapur,Chandrapur,MAHARASHTRA,442403,9130443081,,0.2512,0.1154,Normal (HbA),24-07-2023 13:43,
|
||||||
|
30,Bhagyashree Bhimraoji Thool,683495280995,91262273506374,683495280995BHAGMC,33,FEMALE,,Married,bhimraoji, 29 maskey layout near railway crossing tunnel narendra nagar Vivekanand Nagar,Nagpur,MAHARASHTRA,440015,8600290825,O+ve,0.2226,0.1074,Normal (HbA),20-07-2023 13:06,
|
||||||
|
143,Sairam Rajanna Margoni,685217003162,61628030116846,685217003162SAIGMC,24,MALE,kalar ,Single,rajanna margoni ,C/O Rajanna ward no.3 sironcha sironcha Sironcha,Gadchiroli,Maharashtra,442504,9423350048,,0.4728,0.1718,Sickle Cell Trait (HbAS),21-07-2023 13:34,
|
||||||
|
3,Pradip Balaji Kawale,685709514415,91703746280667,685709514415PRAGMC,38,MALE,kalar,Married,Balaji kawale,C/O Balaji Kawale Wagheda,Chandrapur,MAHARASHTRA,442904,8767613832,,0.1789,0.0933,Normal (HbA),22-07-2023 12:59,
|
||||||
|
141,Ashvini Kavadu Saratkar,686278624501,91326137030069,686278624501ASHGMC,23,FEMALE,TELI,Single,Kawdu Saratkar ,C/O D/O: Kavadu Saratkar at.narsala Post-salwa Tah-mouda Narsala,Nagpur,MAHARASHTRA,441401,8080505103,,0.4683,0.1704,Sickle Cell Trait (HbAS),25-07-2023 13:49,
|
||||||
|
216,Shubhangi Narhari Tirpude,690924196328,91425683040215,690924196328SHUGMC,38,FEMALE,sc,Single,narhari, H.N.761/A Near Buddha Vihar Jai Bhim Nagar Parvati Nagar S.O,Nagpur,MAHARASHTRA,440027,9511661474,,0.7561,0.3392,Sickle cell Disease (HbSS),25-07-2023 12:48,Shilpa kamble ( cousin sister ) diseased
|
||||||
|
10,Abhishek Balvant Jadhav,700012335166,91756080051714,700012335166ABHGMC,23,MALE,,Single,balvant jadhav ,C/O Balwant Jadhaw ranmangli ranmangli Ranmangli,Nagpur,MAHARASHTRA,440035,9545010689,A+ve,0.1937,0.0984,Normal (HbA),20-07-2023 12:20,
|
||||||
|
121,Manohar Mohan Kokane,701218955983,46218837158538,701218955983MANGMC,28,MALE,mahar,Single,mohan, AT MANA Mana,Akola,Maharashtra,444106,8551988081,,0.4013,0.152,Inconclusive,21-07-2023 11:12,
|
||||||
|
59,Mahendra Tidke ,707385421565,58182360251372,707385421565MAHGMC,35,Male,,Married,eknath tidke,"w/no. 11 at post . garra rampayli tahsil waraseoni , ",balaghat ,madya pradesh ,481331,7798301890,B+ve,0.2755,0.1218,Normal (HbA),19-07-2023 10:55,
|
||||||
|
215,Pawan Chintaman Sukhadeve,714731803867,91521553832606,714731803867PAWGMC,26,MALE,mahar ,Married,chintamanrao sukhadeve ,C/O Chintaman Sukhadeve house no. 199 near buddha vihar mu wag Wag,Nagpur,MAHARASHTRA,441210,9657358513,B+ve,0.7531,0.3363,Sickle cell Disease (HbSS),21-07-2023 11:31,
|
||||||
|
188,Reshama Vijay Mahurkar,721374376369,78062413481463,721374376369RESGMC,23,FEMALE,OBC ,Single,Vijay mahurkar , ADEGAON Gidamgad,NAGPUR,MAHARASHTRA,440023,9049630847,A+ve,0.5993,0.2233,Inconclusive,22-07-2023 10:53,
|
||||||
|
80,Kashish Bharatlal Bedre,722943981553,91358153442449,722943981553KASGMC,19,MALE,,Single,bharatlal,"C/O Bharatlal Bedre Near Rashtriya zenda Rambag ,Medical Chowk Ajni S.O",Nagpur,MAHARASHTRA,440003,8669459915,B+ve,0.3007,0.128,Normal (HbA),20-07-2023 10:44,
|
||||||
|
86,Aarav Amit Manusmare,725508986060,91771814506883,725508986060AARGMC,9,MALE,wadi,Single,Amit manusamare ,C/O Amit Manusmare plot no 55 kharabi layout saibaba nagar near hanuman mandir kharabi Hudkeshwar bk.,Nagpur,MAHARASHTRA,440034,9561158402,,0.3082,0.1298,Normal (HbA),24-07-2023 10:18,
|
||||||
|
85,Nirmal Ade,725800506696,91125036380470,725800506696NIRGMC,35,MALE,,Married,deneshlal ade,C/O : Dineshlal Ade Building No. B-12 Flat No. 005 Khasara No. 63 PMAY Tarodi Road Near Symbiosis University Wathoda Kapsi bk,Nagpur,MAHARASHTRA,440035,9669187517,A+ve,0.3055,0.1291,Normal (HbA),19-07-2023 11:00,
|
||||||
|
146,Chaturthi Dinesh Dodke,726312176282,91211736120455,726312176282CHAGMC,12,FEMALE,mang ,Single,Dinesh dodke,"C/O D/O: Dinesh Dodke house no.143 Amravati Road behind avdhut atta chakki Dawalameti,8th mile,nagpur Nagpur (Urban)",Nagpur,MAHARASHTRA,440023,7620441989,,0.4797,0.1739,Sickle Cell Trait (HbAS),21-07-2023 10:33,
|
||||||
|
189,Atul Sunil Bagde,727951395008,91281856514324,727951395008ATUGMC,34,MALE,,Married,Sunil bagde,C/O Sunil Bagde NEAR NIT GARDEN PARDESI GALLI 7L B/H MEDICAL HOSPITAL CHANDRAMANI NAGAR Parvati Nagar S.O,Nagpur,MAHARASHTRA,440027,9175062346,B+ve,0.6019,0.2246,Inconclusive,20-07-2023 14:03,1) sunil bagde 2) mala bagde AS pattern 3) pratiksha bagde SS 9607457973
|
||||||
|
105,anjal bagde,733075981147,91207564267889,733075981147ANJGMC,12,Female,,Single,shri rajesh,bhopal,chinwada,madhya pradesh ,462003,8517849357,A+ve,0.3504,0.1397,Normal (HbA),14-07-2023 13:33,
|
||||||
|
180,Sneha Ravindra Ramteke,734572655691,70802843134812,734572655691SNEGMC,24,FEMALE,SC,Single,ravindra ramteke,"C/O D/O Ravindra Lahanu Ramteke At-Post-Andhalgaon,tha-Mohadi Andhalgaon",#NAME?,#NAME?,441419,9579471636,,0.5787,0.2129,Inconclusive,24-07-2023 10:38,
|
||||||
|
102,Harshali Rushinath Narnavare,735191918963,91745021562723,735191918963HARGMC,21,FEMALE,mahar ,Single,rushinath narnavare ,C/O D/O: Rushinath Narnavare WARD NO 11 AMBEDKAR CHOWK AMBEDKAR NAGAR Narkhed,Nagpur,MAHARASHTRA,441304,7350519462,O+ve,0.3457,0.1386,Normal (HbA),22-07-2023 09:55,
|
||||||
|
28,Akshay Sudhir Khadatkar,740142460820,72607565165110,740142460820AKSGMC,24,MALE,bhat ,Single,sudhir khadatkar ,"C/O Sudhir Khadatkar galli no.14 plot no.148, ladekar layout, ayodhya nagar Ayodhya Nagar S.O",Nagpur,Maharashtra,440024,8623026880,,0.2202,0.1066,Normal (HbA),25-07-2023 11:13,
|
||||||
|
84,Gaurav Vinodrao Tayade,742641129802,91401422152884,742641129802GAUGMC,21,MALE,,Single,vinod,C/O Vinodrao Tayade plot no 24 samta nagar arni road wadgaon road Yavatmal (R),Yavatmal,MAHARASHTRA,445001,9604501864,A+ve,0.3048,0.129,Normal (HbA),20-07-2023 12:37,
|
||||||
|
4,Roshan Kumre,755746779209,91364210722138,755746779209ROSGMC,25,MALE,aadivasi,Single,rambhau,C/O Rambhaoo Kumre ward no.26 jvahar ward manganj gwon road pandhurna Pandhurna,#NAME?,#NAME?,480001,7559307254,,0.1803,0.0938,Normal (HbA),22-07-2023 12:37,
|
||||||
|
127,mukata Rameshwar vanwe ,756784842776,91102685081188,756784842776MUKGMC,34,FEMALE,,Married,Rameshwar vanwe ,ward no 2 at pandegaon po salwa th kuhi pandegaon nagpur ,nagpur ,MAHARASHTRA,441202,9637158336,B+ve,0.4348,0.1607,Inconclusive,18-07-2023 11:51,mukata Rameshwar vanwe 9325180992
|
||||||
|
209,Tanushree Vinayak Gawhale,757486916738,91342810878260,757486916738TANGMC,15,FEMALE,brahman,Single,vinayak gawhale , Plot No 78 Chamat Lay-Out Near Bawankule Sabhagruh Sai Baba Nagar Hudkeshwar bk.,Nagpur,MAHARASHTRA,440034,9730340085,B-ve,0.6748,0.2701,Sickle cell Disease (HbSS),21-07-2023 11:45,
|
||||||
|
73,Chandragupta Tukaram Bansod,761821800952,60507573313625,761821800952CHAGMC,38,MALE,mahar,Married,tukaram bansod,C/O Tukaram Bansod mu po Nanded Nanded,Chandrapur,Maharashtra,441221,9673799973,A+ve,0.2909,0.1256,Normal (HbA),24-07-2023 11:13,samyak=cousin ss pattern
|
||||||
|
210,Samiksha Ulhas Purkam,766401336144,91367422704307,766401336144SAMGMC,14,FEMALE,gondh,Single,ulhas purkam,"C/O D/O: Ulhas Purkam Plot no. 79, yogendra nagar Katolroad",Nagpur,MAHARASHTRA,440013,9423739604,,0.6756,0.2707,Sickle cell Disease (HbSS),24-07-2023 13:03,f-ulhas purkam(AS). m-jayanti purkam(AS)
|
||||||
|
13,Sagar Niranjan Patil,771317362729,91184781875275,771317362729SAGGMC,21,MALE,SC,Single,Niranjan patil,C/O Niranjan Patil SAMTA KIRDANGAN JAVAL PLOT NO. 165 B PRAVESH NAGAR WANJRI LAYOUT Uppalwadi S.O,Nagpur,MAHARASHTRA,440026,9673099354,O+ve,0.1984,0.0999,Normal (HbA),22-07-2023 09:48,
|
||||||
|
206,Tejaswini Dilip Marskolhe,772882060539,91434066200362,772882060539TEJGMC,19,FEMALE,gondh,Single,dilip,"C/O D/O: Dilip Marskolhe chunabhati chunabatti , F.C.I. godown ajani ,nagpur Vivekanand Nagar",Nagpur,MAHARASHTRA,440015,8999530867,,0.6662,0.264,Sickle cell Disease (HbSS),25-07-2023 12:44,F- dilip maraskolhe(as) / M- kusum maraskolhe (AS)
|
||||||
|
88,Bhavisha Prakash Bhagchandani,786163067750,91711785884554,786163067750BHAGMC,38,FEMALE,shindhi,Married,prakash bhagchandani ," 4th Floor,Flat No.403,Minarava Apartment Goal Maidan Road Near Post Office Ulhasnagar-1 Ulhasnagar",Thane,MAHARASHTRA,421001,7709160857,,0.3096,0.1301,Normal (HbA),24-07-2023 12:58,
|
||||||
|
100,Pranay Moreshwar Bhagadkar,786991281673,91256243011044,786991281673PRAGMC,21,MALE,kunbi ,Single,moreshwar bhagadkar ,C/O Moreshwar Bhagadkar awleghat mu.awleghat po.navegaon khairi Parshivni,Nagpur,MAHARASHTRA,441105,9373659361,,0.3415,0.1376,Normal (HbA),24-07-2023 10:48,
|
||||||
|
16,Surbhi Radheshyam Dhoble,807025536597,91767203676048,807025536597SURGMC,22,FEMALE,,Single,Radheshyam dhoble ,C/O D/O: Radheshyam Dhoble lodha Karwahi,Nagpur,MAHARASHTRA,441401,8815360481,A+ve,0.2055,0.1021,Normal (HbA),20-07-2023 14:05,
|
||||||
|
53,Nisha Dhanraj Mandalwar,814517961871,91345020522784,814517961871NISGMC,17,FEMALE,,Single,Dhanraj , at chandewani po ta karanja Chandewani,WARDHA,MAHARASHTRA,442203,9356048939,O+ve,0.2673,0.1197,Normal (HbA),19-07-2023 12:00,
|
||||||
|
48,Mrunali Ravindra Bhoyar,817229321951,91315165134026,817229321951MRUGMC,22,FEMALE,,Single,ravindra ,C/O D/O: Ravindra Bhoyar Plot No 87 Bharatwada Road Talmale Lay Out Pardi,Nagpur,MAHARASHTRA,440035,7498664807,O+ve,0.2612,0.1181,Normal (HbA),19-07-2023 10:29,
|
||||||
|
82,Subodh Onkar Gawande,820884796263,91141515316844,820884796263SUBGMC,21,MALE,,Single,onkar Gawande ,C/O Onkar Gawande Manikwada Ward No.01 Manikwada,yawatmal ,Maharashtra ,445102,8805602024,O+ve,0.3029,0.1285,Normal (HbA),19-07-2023 10:41,
|
||||||
|
157,Swati Keshav Patil,824805035216,91742265088366,824805035216SWAGMC,33,FEMALE,mahar,Married,keshav,C/O : Keshav Patil Ward No.3 Near Bus Stop At.Tishti Po.Telgaon Tishti bk.,Nagpur,MAHARASHTRA,440016,8080735790,,0.5007,0.1809,Sickle Cell Trait (HbAS),22-07-2023 11:35,
|
||||||
|
23,Mayur Keshavrao Hatwar,829555623625,91588763823444,829555623625MAYGMC,29,MALE,,Single,keshavrao,"C/O : Rajendra V Hatwar A / 22, Indraprastha Anushaktinagar Anushaktinagar Mumbai",Mumbai Suburban,MAHARASHTRA,400094,7030478956,B+ve,0.2146,0.105,Normal (HbA),20-07-2023 11:34,
|
||||||
|
76,Rohini Dilip Tantrapale,838467168469,91373820521012,838467168469ROHGMC,21,FEMALE,Buddhists ,Single,dilip tantrapale,C/O D/O: Dilip Tantrapale Galli No.13 Punjabrao Deshmukh marg Savitribai Fule Nagar Parvati Nagar,Nagpur,MAHARASHTRA,440027,8983403021,,0.2953,0.1267,Normal (HbA),22-07-2023 11:49,
|
||||||
|
186,Shrikrushn Sadashiv Dhone,841625523860,91376214770707,841625523860SHRGMC,37,MALE,mahar ,Married,Sadashiv dhone ,C/O Sadashiv Dhone mu post ramthi tah narkhed Ramthi,Nagpur,MAHARASHTRA,441301,7218301492,,0.5986,0.2229,Inconclusive,25-07-2023 10:33,
|
||||||
|
18,Vaishali Khemraj Parate,841675795081,91707070143557,841675795081VAIGMC,41,FEMALE,,Married,khemraj,"C/O W/O: Khemraj Parate FLAT NO. 301 C.A. ROAD BESIDE PUNJAB NATIONAL BANK UMIYA CO-OPERATIVE SOCIETY, CHHAPRU NAGAR CHOWK Kolar",Nagpur,MAHARASHTRA,440008,9579007670,O+ve,0.2063,0.1024,Normal (HbA),20-07-2023 10:21,
|
||||||
|
11,Misbah ansari ,841781136811,91103121823258,841781136811MISGMC,18,Female,julaha,Single,Nazeer ansari ,ahemad nagar wanjra nabiyan masjid ke pass NAGPUR ,NAGPUR ,Maharashtra ,440001,9075241881,,0.1935,0.0983,Normal (HbA),22-07-2023 13:47,
|
||||||
|
156,Ojas Ajay Ingole,842371907157,91761752336526,842371907157OJAGMC,13,MALE,matang ,Single,ajay ingole ,"C/O Ajay Ingole BEHIND SARSWATI NIGHT HIGH SCHOOL FAKIRAWADI, SARSWATI NAGAR, DHANTOLI Patwardhan Ground",Nagpur,MAHARASHTRA,440012,7507465571,,0.5003,0.1808,Sickle Cell Trait (HbAS),22-07-2023 12:55,ojas ingole( self ) age 13
|
||||||
|
87,Manoj Haribhau Rewatkar,847806990494,91484401101536,847806990494MANGMC,40,MALE,,Single,Haribhau Retkar,C/O Haribhau Rewatkar WAARD NO-03 AT-POST-BHISHNOOR TAH-NARKHED BHISHNUR,Nagpur,MAHARASHTRA,441305,7066916098,A+ve,0.3089,0.1299,Normal (HbA),19-07-2023 12:03,
|
||||||
|
109,Jayashree Vijay Puttewar,850730992932,91513724712528,850730992932JAYGMC,37,FEMALE,,Married,vijay puttewar ,C/O Nitin Darshanwar 980 Hudkeshwar Road Near Hanumaan Mandir Ashirwad Nagar Ayodhya Nagar,Nagpur,MAHARASHTRA,440024,9011107365,B+ve,0.3566,0.1412,Inconclusive,19-07-2023 11:39,
|
||||||
|
190,Nilesh Arjun Indurkar,851357352601,91644586351657,851357352601NILGMC,34,MALE,,Single,Arjun indurkar ,"C/O Arjun Indurkar MAHAPRAJAPATI BUDDHA VIHAR 329, GADDIGODAM, GAUTAM NAGAR Nagpur (Urban)",Nagpur,MAHARASHTRA,440001,8928729359,O+ve,0.6037,0.2256,Inconclusive,19-07-2023 13:23,
|
||||||
|
38,Shrusti Rama Hiwarkar,855086418995,35562154577124,855086418995SHRGMC,20,FEMALE,Dhobi ,Single,rama hiwarkar,C/O D/O: Rama Pandurang Hiwarkar F- 3 nisha mohan apartment central avenue near itwari highschool darodkar chouk Nagpur City,NAGPUR,MAHARASHTRA,440002,8080813740,,0.2317,0.11,Normal (HbA),24-07-2023 13:30,F-Rama hiwarkar (AS). M-archana hiwarkar(AS)
|
||||||
|
217,Priyanka Shrikant Malhari,855896569818,91770768353367,855896569818PRIGMC,29,FEMALE,,Married,shrikant malhari, plot no. 78 dayalu society mahavir nagar Jaripatka,Nagpur,MAHARASHTRA,440014,9923621310,A+ve,1.3524,1.8827,Unknown,19-07-2023 12:33,
|
||||||
|
115,Suhani Ratan Patil,857173745901,91375764438772,857173745901SUHGMC,38,FEMALE,,Married,ratan patil ,"C/O W/O Ratan Patil opp. ishwar deshmukh college plot no. 423/C, tana kuti, krida chowk, chandan nagar Hanuman Nagar S.O",Nagpur,MAHARASHTRA,440009,7558658318,O+ve,0.38,0.1467,Inconclusive,18-07-2023 10:45,
|
||||||
|
198,Kokila Sunil Ambekar,857681733150,91306258282236,857681733150KOKGMC,32,FEMALE,,Married,sunil ambekr,C/O W/O: Sunil Ambekar at mangali (jagrap) post nakshi Bhiwapur,Nagpur,MAHARASHTRA,441201,8830524271,O+ve,0.6246,0.2373,Inconclusive,19-07-2023 13:30,1)Jay ambekar 2)Sunit ambekar 8830524270
|
||||||
|
2,Umra Anjum,877075527709,91122110521350,877075527709UMRGMC,19,FEMALE,muslim ,Single,Mohammad Naushad,C/O D/O Mohammad Naushad NEAR MATAN MARKET 866/A HANSAPURI QASABPURA Mahatma Fule Bazar S.O,Nagpur,MAHARASHTRA,440018,7823002033,,0.1698,0.0901,Normal (HbA),22-07-2023 11:29,
|
||||||
|
19,Pallavi Dilip Khandekar,879721983759,91464464248374,879721983759PALGMC,26,FEMALE,,Single,dilip khandekar,"C/O D/O Dilip Khandekar rameshwari ring road near vimaltai tidke convent plot no. 32, maa renuka colony, rama nagar, Parvati Nagar S.O",Nagpur,MAHARASHTRA,440027,9767251905,A+ve,0.207,0.1026,Normal (HbA),19-07-2023 12:27, elder sister (AS ) pattern
|
||||||
|
36,Minakshi harishrao Parise ,879876717068,91465440552615,879876717068MINGMC,27,FEMALE,bhoi ,Married,Harishrao ,C/O D/O Tejrao Gawale Hingana Road Near Santosh Kirana Storss Sant Tukdoji Nagar Nagpur,amrawati,#NAME?,444708,9130060621,,0.2283,0.109,Normal (HbA),25-07-2023 12:42,
|
||||||
|
168,Yogini Ritesh Bawne,887901922176,91315764355840,887901922176YOGGMC,30,FEMALE,mahar,Married,ritesh bawane,C/O W/O: Ritesh Bawne H.No.95 Indira Nagar Mata Mai Mandir Ranala Kamptee,#NAME?,KARNATAKA,441002,8180010853,,0.5312,0.1922,Sickle Cell Trait (HbAS),22-07-2023 13:11,1)dhananjay bawane 2) Ritesh bawane
|
||||||
|
194,Sunil Haridas Gedam,888289621212,91567370341354,888289621212SUNGMC,46,MALE,,Married,Haridas gedam,C/O Haridas Gedam ward no.1 owala Owala,Chandrapur,MAHARASHTRA,440009,7798630025,A+ve,0.6153,0.232,Inconclusive,18-07-2023 13:36,1) shrushti gedam 2)shardha gedam 7798630025
|
||||||
|
42,Samata Bhagwan Wanjari,890515543459,91503474246868,890515543459SAMGMC,35,FEMALE,,Single,bhagwan wanjari,"C/O D/O: Bhagwan Wanjari M I G 32 Quarter no, 4/4 umred road OPP, mahatma fule sabhagruh vakil peth Hanuman Nagar",Nagpur,MAHARASHTRA,440024,9513087557,B+ve,0.2404,0.1125,Normal (HbA),20-07-2023 11:17,bhagwan wanjari (father)
|
||||||
|
185,Nagraju Raghunandan Gattu,890976574668,68806733608326,890976574668NAGGMC,24,MALE,Kalar,Single,Raghunandhan gattu, ward no 1 sironcha Sironcha,NAGPUR,MAHARASHTRA,440001,9423757761,,0.5956,0.2213,Inconclusive,21-07-2023 13:46,
|
||||||
|
169,Akshay Tulshiram Kohapare,891054393112,91504125357559,891054393112AKSGMC,23,MALE,kombhi,Single,tulshiram khopare,C/O Tulshiram Kohapare waard no. 2 at. kharalpeth po. wadholi tah gondpipari Kharal Peth,Chandrapur,MAHARASHTRA,442702,9370289668,,0.5382,0.195,Sickle Cell Trait (HbAS),25-07-2023 12:46,
|
||||||
|
89,Anmolkumar Ramaji Shahare,895889644479,20370331733504,895889644479ANMGMC,39,MALE,,Married,ramaji ,C/O Ramaji Shahare 266 paraswada road near bajar chowk ward no.01 Gond mohadi,gondiya,MAHARASHTRA,441911,8793207022,O+ve,0.3183,0.1322,Normal (HbA),18-07-2023 10:56,
|
||||||
|
172,Vaishnavi Chandrashekhar Chellirwar,897471476601,91276660034212,897471476601VAIGMC,22,FEMALE,navi,Single,chandrashekhar ,C/O D/O: Chandrashekhar Chellirwar Ward No.01 Balapur Bk,Chandrapur,MAHARASHTRA,441221,9370413667,O+ve,0.5527,0.201,Inconclusive,21-07-2023 12:14,
|
||||||
|
176,vrushabh zibal jangam,904422031827,91500347264631,904422031827VRUGMC,25,Male,,Married,zibal,"s/o zibal jangam, near nari bus stop, building no. 60 mhada colony ",NAGPUR ,Maharashtra ,440026,9923988364,A+ve,0.5682,0.2079,Inconclusive,20-07-2023 11:21,Swati vrushabh jangam ( wife) 23/f
|
||||||
|
144,kajal Sunil lode,908366621257,91432276056871,908366621257KAJGMC,16,Female,,Single,Sunil lode,Mahatma Gandhi nagar nagpur ,nagpur ,Maharashtra ,440013,9637359800,A+ve,0.4745,0.1723,Sickle Cell Trait (HbAS),18-07-2023 10:49,
|
||||||
|
200,Girish dongre ,910102695992,91387050633727,910102695992GIRGMC,19,Male,,Single,Gautam Dongre ,"59 hudkeshwar road , pipla ,Nagpur 34",Nagpur ,Maharashtra ,440034,7218301167,O+ve,0.6354,0.2438,Inconclusive,18-07-2023 13:52,"Gautam Dongre (Father) age 49, 2) padamshri Dongre (mother) age 49. 3) sumedha dongre (sister) age 13"
|
||||||
|
136,Vaishnavi Patiramji Nagpure,913429336058,91488081057314,913429336058VAIGMC,19,FEMALE,,Single,Patiramji,C/O D/O Patiramji Nagpure ward no. 4 ghogali road near hanuman nagar bajarang nagar Koradi (n.v.),Nagpur,MAHARASHTRA,441111,8767968029,B+ve,0.4508,0.1652,Inconclusive,20-07-2023 10:49,
|
||||||
|
116,Pranita Praful Dhengre,918225140668,91236224340620,918225140668PRAGMC,11,FEMALE,Buddhists ,Single,praful dhengre ,C/O D/O: Praful Dhengre PLOT NO.137 AKASH NAGAR PANCHASHIL CHOWK Hudkeshwar bk.,Nagpur,MAHARASHTRA,440034,9373931878,,0.3827,0.1474,Inconclusive,22-07-2023 13:49,
|
||||||
|
164,Nandu Dashrath Nagose,919427713788,91237718305152,919427713788NANGMC,28,MALE,,Single,dasrat,"C/O Dashrath Nagose NEAR GANGA APARTMENT SEWA NAGAR, HILL TOP Shankar Nagar",Nagpur,MAHARASHTRA,440010,9545438059,O+ve,0.5206,0.1881,Sickle Cell Trait (HbAS),18-07-2023 12:21,
|
||||||
|
161,Manish Vinayak Gavhale,931004981466,91228211872319,931004981466MANGMC,18,MALE,bramhan,Single,vinayak,"C/O : Ramesh Gangadhar Shikarkhan Plot No. 780,475 Near Bavankude Samaj Bhavan Chamat Lay-out Saibaba Nagar, Kharbi Ayodhya Nagar",Nagpur,MAHARASHTRA,440024,9730340085,B+ve,0.5154,0.1862,Sickle Cell Trait (HbAS),21-07-2023 11:39,
|
||||||
|
183,Bhawna Mohan Tiwari,933890898788,91464652232586,933890898788BHAGMC,40,FEMALE,brahamn,Married,mohan tiwari ,"C/O W/O Mohan Tiwari C/O, Vasant H. Kathalkar Behind Binzani Collage Qtr.no. 108/2, Somwari Qtr. Hanuman Nagar S.O",Nagpur,MAHARASHTRA,440009,7350413489,AB+ve,0.5929,0.2199,Inconclusive,21-07-2023 12:21,
|
||||||
|
1,Sagar Sunil Salve,934157112332,91730205704648,934157112332SAGGMC,23,MALE,mahar,Single,Sunil salve, At-Pasodi Post-Bharaj tq-Jafrabad Dist-Jalna Pasodi,Jalna,MAHARASHTRA,431206,8208289938,,0.1464,0.0812,Unknown,22-07-2023 12:15,
|
||||||
|
166,Ashit Yuwaraj Ramteke,940241847588,91326558387188,940241847588ASHGMC,33,MALE,,Married,yuwaraj ramteke,C/O D. N FULZELE H NO 3465/A/29 MASKE LAYOUT NEAR SMALL RAILWAY CROSSING TUNNEL NARENDRA NAGAR Parvati Nagar,Nagpur,MAHARASHTRA,440015,9766455260,B+ve,0.5273,0.1907,Sickle Cell Trait (HbAS),20-07-2023 13:04,Meghavi ramteke (sister)age 35
|
||||||
|
155,Rohan Shyamrao Kohle,940621638046,91545102802711,940621638046ROHGMC,24,MALE,,Single,shyamrao , shitala mata mandir rani bhosale nagar jhopadpatti Ayodhya Nagar S.O,Nagpur,MAHARASHTRA,440024,7447872388,AB+ve,0.4999,0.1806,Sickle Cell Trait (HbAS),20-07-2023 12:45,rohan shyamrao kohle
|
||||||
|
205,Nikhil Rajkapur,942132784866,91664481518424,942132784866NIKGMC,29,Male,,Single,rajkapur humne,"rajkapor humne, kharbu road, shivankar nagar zopadpatti Galli no9 nagpur ",nagpur ,Maharashtra ,440009,7798864183,O+ve,0.6577,0.2582,Sickle cell Disease (HbSS),19-07-2023 12:59,
|
||||||
|
20,Vaishnavi Shubhash Bhardwaj,947274661101,91140566312306,947274661101VAIGMC,23,FEMALE,St ,Single,Subhash bhardwaj ,"C/O D/O Shubhash Bhardwaj Q N- 74/1 at-chanakapur,po-sillewada,ta-savner chankapur",Nagpur,MAHARASHTRA,441109,9822488996,,0.2071,0.1026,Normal (HbA),22-07-2023 11:59,
|
||||||
|
60,Laxmikant Vrundavan Kushwah,948154309895,91388524178851,948154309895LAXGMC,26,MALE,kahhi,Single,vrundavan kushwah,"C/O Vrundavan Kushwah kavadas,patansavangi at-patansavangi,po-patansavangi ta-savner Patansavangi",Nagpur,MAHARASHTRA,441113,7758090088,AB+ve,0.2755,0.1218,Normal (HbA),24-07-2023 11:25,
|
||||||
|
129,Urjita Umesh Sukhdeve,948285350683,91321876213232,948285350683URJGMC,7,FEMALE,mahar ,Single,Umesh sukhdeve ,C/O D/O: Umesh Sukhdeve Plot No 190 Near Noori Masjid Noori Colony Nara Road Jaripatka,Nagpur,MAHARASHTRA,440014,8055582886,AB+ve,0.4416,0.1626,Inconclusive,24-07-2023 11:28,
|
||||||
|
95,Gokul Devidas Gawande,958015234228,91752747834311,958015234228GOKGMC,39,MALE,,Married,devidas Gawande , Near Ambedkar Statue Indira Nagar Jatatroadi No 1 Ajni,NAGPUR ,Maharashtra ,440003,9960036075,A-ve,0.3305,0.135,Normal (HbA),19-07-2023 10:53,
|
||||||
|
175,Prajwal Gulab Gaddamwar,960306918228,11241336830168,960306918228PRAGMC,21,MALE,,Single,gulab gaddamwar,C/O Gulab Gaddamwar Kelzar,Chandrapur,Maharashtra,441224,9325917742,A+ve,0.5653,0.2066,Inconclusive,20-07-2023 13:17,
|
||||||
|
61,Ashwini Jageshwar Shendre.,960753131759,91482631604014,960753131759ASHGMC,22,FEMALE,teli ,Single,jageshwar shendre ,C/O D/O Jageshwar Shendre near jatiram barve school shivaji ward Ramtek,Nagpur,MAHARASHTRA,441106,9665234117,,0.2759,0.1219,Normal (HbA),25-07-2023 13:45,
|
||||||
|
214,Seema Ashish Pazare,965594454564,91286736203246,965594454564SEEGMC,34,FEMALE,SC,Married,Ashish pazare," Plot No 217 Kamptee, Tarodi Bk Bidbina",Nagpur,MAHARASHTRA,441001,9359424580,,0.7273,0.3122,Sickle cell Disease (HbSS),21-07-2023 13:15,Dharti pazer 9359424580
|
||||||
|
78,Trunal Arun Meshram,968814953390,91184065484372,968814953390TRUGMC,21,MALE,hindu,Single,arun meshram, garada garada Garada,#NAME?,#NAME?,441804,9325365350,B+ve,0.2968,0.127,Normal (HbA),24-07-2023 11:07,
|
||||||
|
49,Nitesh Gulab Shende,971447394581,91242757472400,971447394581NITGMC,28,MALE,,Single,gulab,C/O Gulab Shende JAGDISH NAGAR Katolroad S.O,Nagpur,MAHARASHTRA,440013,7743822252,O+ve,0.263,0.1185,Normal (HbA),19-07-2023 11:51,
|
||||||
|
195,Sahili Dasharath Bagde,971645125119,91686023636836,971645125119SAHGMC,21,FEMALE,Buddhists ,Single,dashrath bagde ,"C/O D/O Dasharath Bagde WAARD NO-02 AT-AGRA, POST-MOHGAON BHADADE, TAH-NARKHED AGRA",Nagpur,MAHARASHTRA,441306,7020851533,,0.6166,0.2327,Inconclusive,21-07-2023 11:14,sahili bagde (self) AS pattern
|
||||||
|
21,Pratik Prakash Dhole,971897603219,91110362336486,971897603219PRAGMC,30,MALE,Sonar ,Single,prakash dhole,C/O Prakash Dhole PLOT NO. 95/B PAVESHA NAGAR YASHODHARA CHOUK KAMPTEE ROAD aUppalwadi S. O.,Nagpur,MAHARASHTRA,440026,8928970083,B+ve,0.2094,0.1034,Normal (HbA),22-07-2023 10:25,
|
||||||
|
123,Vishal Bhuranlal Chakole,979536997367,91628767712100,979536997367VISGMC,34,MALE,teli,Married,bhuranlal , PLOT NO 67 SHANTI HOUSING SOCIETY PARDHI LAYOUT BELTARODI ROAD NEAR SAURYA STATE BELTARODI Nagpur,Nagpur,MAHARASHTRA,440018,9273755861,,0.4031,0.1524,Inconclusive,25-07-2023 12:03,wife - priti. ss pattern
|
||||||
|
74,Nitesh Ramchandra Chakulkar,982649459847,91525518450404,982649459847NITGMC,30,MALE,teli ,Married,ramchandra chakulkar ,C/O Ramchandra Chakulkar ward no. 2 house no. 96 near talav chauk mu weltur Weltur,nagpur ,Maharashtra ,441210,9595962003,,0.292,0.1259,Normal (HbA),25-07-2023 12:06,
|
||||||
|
58,Supriya Bhagwan Wanjari,982998735155,91236107782625,982998735155SUPGMC,40,FEMALE,,Single,bhagwan wanjri ,"C/O D/O: Bhagwan Wanjari Quarters No. 4/4, MIG -32 Opp Mahatama Phule Sabhagrah Vakil Peth Hanuman Nagar",Nagpur,MAHARASHTRA,440024,9513087557,A+ve,0.273,0.1211,Normal (HbA),20-07-2023 11:09,Bhagwan Wanjari-Father
|
||||||
|
139,Mohammad Hamid Jahagir Ansari,984441839919,91327281227410,984441839919MOHGMC,18,MALE,muslim,Single,Jahangir ansari, ward no 1 harihar nagr kandri kanhan near kali mata kandri kanhan Sihora,Nagpur,MAHARASHTRA,441401,9637175096,B+ve,0.4582,0.1673,Inconclusive,24-07-2023 11:19,
|
||||||
|
199,Sharda Sunil Gedam,988221580719,91112284528760,988221580719SHAGMC,37,FEMALE,,Married,Sunil Gedam , WARD NO 01 PALAGON OWALA Owala,Chandrapur,MAHARASHTRA,441601,7798630025,B+ve,0.6284,0.2396,Inconclusive,18-07-2023 13:30,1) Husband AS pattern
|
||||||
|
55,Baliram Dhote,989971800101,91218347354720,989971800101BALGMC,30,MALE,,Single,vishweshwar dhote ,C/O Vishweshwar Dhote chichpura Saoner,Nagpur,MAHARASHTRA,441107,7249086637,O+ve,0.2695,0.1202,Normal (HbA),19-07-2023 11:09,
|
||||||
|
96,Sneha Nandkishor Benote,994928579041,18622183642157,994928579041SNEGMC,20,FEMALE,lodhi,Single,nandkishor benote, shriram waard Nandpur,WARDHA,MAHARASHTRA,442201,8010136506,O+ve,0.3337,0.1358,Normal (HbA),24-07-2023 11:41,
|
||||||
|
BIN
scripts/logo.png
Normal file
BIN
scripts/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
BIN
scripts/logo_nobg.png
Normal file
BIN
scripts/logo_nobg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
235
scripts/report_template.html
Normal file
235
scripts/report_template.html
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.person-details-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.person-details-col {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 90px;
|
||||||
|
width: 50%;
|
||||||
|
margin: 1px;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.test-details-row {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.test-details-col {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.test-cell-div {
|
||||||
|
/* border: 1px solid black; */
|
||||||
|
border-collapse: collapse;
|
||||||
|
height: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-header {
|
||||||
|
border: 1px solid black;
|
||||||
|
margin: 0 0 -10px 10px;
|
||||||
|
background-color: rgb(191, 191, 191);
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
font-weight: 600;
|
||||||
|
height: 50px;
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
.table-header {
|
||||||
|
background-color: rgb(191, 191, 191) !important;
|
||||||
|
print-color-adjust: exact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
.vendorListHeading th {
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.test-method {
|
||||||
|
font-weight: 200 !important;
|
||||||
|
color: rgb(191, 191, 191);
|
||||||
|
}
|
||||||
|
|
||||||
|
.result-value {
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.end-of-report {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border: 1px solid black;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
/* margin: 0; */
|
||||||
|
/* padding: 0; */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<div class="logo">
|
||||||
|
<img src="./logo_nobg.png" width="128" height="128" alt="sickle cell logo" />
|
||||||
|
</div>
|
||||||
|
<table style="border: 1px solid black; margin: 10px; width: 98%;">
|
||||||
|
<tr class="person-details-row">
|
||||||
|
<td class="person-details-col" style="border-right: 2; width: 70%;">
|
||||||
|
<div><strong>Name:</strong></div>
|
||||||
|
<div><strong>Age / Gender:</strong></div>
|
||||||
|
<div><strong>Sample type:</strong></div>
|
||||||
|
<div><strong>Family History of Sickle Cell Anemia:</strong></div>
|
||||||
|
</td>
|
||||||
|
<td class="person-details-col" style="width: 30%;">
|
||||||
|
<div><strong>Marital Status:</strong></div>
|
||||||
|
<div><strong>Test Date:</strong></div>
|
||||||
|
<div><strong>Patient ID:</strong></div>
|
||||||
|
<div><strong>Sample ID:</strong></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div style="height: 2px;width: 98%; background-color: rgb(56, 105, 166); margin: 30px 10px 40px 10px;"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="table-header">POINT OF CARE SICKLE CELL ANEMIA TEST</div>
|
||||||
|
<table class="test-details-table" style="border: 1px solid black; margin: 10px; width: 98%;">
|
||||||
|
<tr style="height: 50px;">
|
||||||
|
<th>
|
||||||
|
Test Description
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
RESULT
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
REFERENCE RANGES
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr class="test-details-row">
|
||||||
|
<td class="test-details-col" style="width: 20%; margin: 10px;">
|
||||||
|
<div style="margin: 10px;">Sickle Cell
|
||||||
|
Anemia
|
||||||
|
<div class="test-method">(Method: HPOS)</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td style="width: 30%;">
|
||||||
|
<div class="result-value">Ra = 0.16</div>
|
||||||
|
<!-- <div class="test-cell-div">Normal</div>
|
||||||
|
<div class="test-cell-div">Sickle Cell Trait</div>
|
||||||
|
<div class="test-cell-div">Sickle Cell Disease</div>
|
||||||
|
<div class="test-cell-div">Negative Borderline</div>
|
||||||
|
<div class="test-cell-div">Positive Borderline</div> -->
|
||||||
|
</td>
|
||||||
|
<td style="width: 50%;">
|
||||||
|
<div class="test-cell-div">
|
||||||
|
< 0.16: Normal (HbA)</div>
|
||||||
|
<div class="test-cell-div">0.165 – 0.235: Sickle-cell Trait (HbAS)</div>
|
||||||
|
<div class="test-cell-div">> 0.24: Sickle-cell Disease (HbSS)</div>
|
||||||
|
<div class="test-cell-div">0.16-0.165: Inconclusive (Negative Borderline)</div>
|
||||||
|
<div class="test-cell-div">0.235 – 0.24: Inconclusive (Positive Borderline)</div>
|
||||||
|
</td>
|
||||||
|
<!-- <td style="width: 25%;">
|
||||||
|
<div class="test-cell-div">Normal</div>
|
||||||
|
<div class="test-cell-div">Sickle Cell Trait</div>
|
||||||
|
<div class="test-cell-div">Sickle Cell Disease</div>
|
||||||
|
<div class="test-cell-div">Recommended for HPLC or Electrophoresis Tests</div>
|
||||||
|
<div class="test-cell-div">Recommended for HPLC or Electrophore</div>
|
||||||
|
</td> -->
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- <div style="font-weight: 600; margin: 10px;">INTERPRETATION:</div> -->
|
||||||
|
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<strong>Test Principle:</strong> This point of care quantitative diagnostic test for sickle-cell anemia
|
||||||
|
works on the principle of absorption
|
||||||
|
spectroscopy. The test helps in differentiating heterozygous/homozygous hemoglobin from normal hemoglobin.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<strong>Method:</strong> High Performance Optical Spectroscopy (HPOS) for detection of Sickle cell trait and
|
||||||
|
sickle cell disease in whole blood capillary blood samples.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<strong> Note:</strong>
|
||||||
|
<!-- <ul>
|
||||||
|
<li>a. Blood transfusion may have an impact on the test results.</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
b. Patients already on sickle-cell medications may impact test results.
|
||||||
|
</li>
|
||||||
|
</ul> -->
|
||||||
|
|
||||||
|
Borderline cases are reported as inconclusive. It may occur due to several factors such as medication,
|
||||||
|
transfusion, field conditions and assay process. Further clinical tests are recommended in these cases for
|
||||||
|
diagnosis.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <div
|
||||||
|
style="margin: 80px 10px 20px 50px; width: 88%; display: flex; flex-direction: row; justify-content: space-between; align-items: center;">
|
||||||
|
<div style="margin: 5px;">DATE:</div>
|
||||||
|
<div style="margin: 5px;">Hematologist</div>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
|
<!-- <div style="margin: 30px;">
|
||||||
|
This report is for the perusal of doctor only. Not for medico legal cases. Clinical correlation is
|
||||||
|
essential.
|
||||||
|
Please contact us in case of unexpected result.
|
||||||
|
</div> -->
|
||||||
|
<div style="height: 3px;width: 98%; background-color: black; margin-top: 150px;"></div>
|
||||||
|
<div class="end-of-report">
|
||||||
|
*** END OF REPORT ***</div>
|
||||||
|
<div style="display: flex; justify-content: center; align-items: center; flex-direction: column;">
|
||||||
|
<div style="font-style: italic; color: rgb(191, 191, 191);">
|
||||||
|
This is an electronically generated report. Generated at HH:MM hrs on DD-MMM-YYYY.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Note: Assay results should be correlated clinically with other clinical findings
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
BIN
scripts/reports/203986612834YOGGMC.pdf
Normal file
BIN
scripts/reports/203986612834YOGGMC.pdf
Normal file
Binary file not shown.
701
scripts/result_generation.ipynb
Normal file
701
scripts/result_generation.ipynb
Normal file
@@ -0,0 +1,701 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"id": "30bd0387-b182-49a0-9591-6136df91f9b7",
|
||||||
|
"metadata": {
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Requirement already satisfied: xhtml2pdf in c:\\users\\acer\\anaconda3\\lib\\site-packages (0.2.11)\n",
|
||||||
|
"Requirement already satisfied: arabic-reshaper>=3.0.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (3.0.0)\n",
|
||||||
|
"Requirement already satisfied: html5lib>=1.0.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (1.1)\n",
|
||||||
|
"Requirement already satisfied: Pillow>=8.1.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (9.4.0)\n",
|
||||||
|
"Requirement already satisfied: pyHanko>=0.12.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (0.20.0)\n",
|
||||||
|
"Requirement already satisfied: pyhanko-certvalidator>=0.19.5 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (0.23.0)\n",
|
||||||
|
"Requirement already satisfied: pypdf>=3.1.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (3.15.2)\n",
|
||||||
|
"Requirement already satisfied: python-bidi>=0.4.2 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (0.4.2)\n",
|
||||||
|
"Requirement already satisfied: reportlab<4,>=3.5.53 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (3.6.13)\n",
|
||||||
|
"Requirement already satisfied: svglib>=1.2.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from xhtml2pdf) (1.5.1)\n",
|
||||||
|
"Requirement already satisfied: six>=1.9 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from html5lib>=1.0.1->xhtml2pdf) (1.16.0)\n",
|
||||||
|
"Requirement already satisfied: webencodings in c:\\users\\acer\\anaconda3\\lib\\site-packages (from html5lib>=1.0.1->xhtml2pdf) (0.5.1)\n",
|
||||||
|
"Requirement already satisfied: asn1crypto>=1.5.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (1.5.1)\n",
|
||||||
|
"Requirement already satisfied: qrcode>=6.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (7.4.2)\n",
|
||||||
|
"Requirement already satisfied: tzlocal>=4.3 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (5.0.1)\n",
|
||||||
|
"Requirement already satisfied: click>=7.1.2 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (8.0.4)\n",
|
||||||
|
"Requirement already satisfied: requests>=2.24.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (2.29.0)\n",
|
||||||
|
"Requirement already satisfied: pyyaml>=5.3.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (6.0)\n",
|
||||||
|
"Requirement already satisfied: cryptography>=3.3.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyHanko>=0.12.1->xhtml2pdf) (39.0.1)\n",
|
||||||
|
"Requirement already satisfied: oscrypto>=1.1.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyhanko-certvalidator>=0.19.5->xhtml2pdf) (1.3.0)\n",
|
||||||
|
"Requirement already satisfied: uritools>=3.0.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from pyhanko-certvalidator>=0.19.5->xhtml2pdf) (4.0.1)\n",
|
||||||
|
"Requirement already satisfied: lxml in c:\\users\\acer\\anaconda3\\lib\\site-packages (from svglib>=1.2.1->xhtml2pdf) (4.9.2)\n",
|
||||||
|
"Requirement already satisfied: tinycss2>=0.6.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from svglib>=1.2.1->xhtml2pdf) (1.2.1)\n",
|
||||||
|
"Requirement already satisfied: cssselect2>=0.2.0 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from svglib>=1.2.1->xhtml2pdf) (0.7.0)\n",
|
||||||
|
"Requirement already satisfied: colorama in c:\\users\\acer\\anaconda3\\lib\\site-packages (from click>=7.1.2->pyHanko>=0.12.1->xhtml2pdf) (0.4.6)\n",
|
||||||
|
"Requirement already satisfied: cffi>=1.12 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from cryptography>=3.3.1->pyHanko>=0.12.1->xhtml2pdf) (1.15.1)\n",
|
||||||
|
"Requirement already satisfied: typing-extensions in c:\\users\\acer\\anaconda3\\lib\\site-packages (from qrcode>=6.1->pyHanko>=0.12.1->xhtml2pdf) (4.6.3)\n",
|
||||||
|
"Requirement already satisfied: pypng in c:\\users\\acer\\anaconda3\\lib\\site-packages (from qrcode>=6.1->pyHanko>=0.12.1->xhtml2pdf) (0.20220715.0)\n",
|
||||||
|
"Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from requests>=2.24.0->pyHanko>=0.12.1->xhtml2pdf) (2.0.4)\n",
|
||||||
|
"Requirement already satisfied: idna<4,>=2.5 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from requests>=2.24.0->pyHanko>=0.12.1->xhtml2pdf) (3.4)\n",
|
||||||
|
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from requests>=2.24.0->pyHanko>=0.12.1->xhtml2pdf) (1.26.16)\n",
|
||||||
|
"Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\acer\\anaconda3\\lib\\site-packages (from requests>=2.24.0->pyHanko>=0.12.1->xhtml2pdf) (2023.5.7)\n",
|
||||||
|
"Requirement already satisfied: tzdata in c:\\users\\acer\\anaconda3\\lib\\site-packages (from tzlocal>=4.3->pyHanko>=0.12.1->xhtml2pdf) (2023.3)\n",
|
||||||
|
"Requirement already satisfied: pycparser in c:\\users\\acer\\anaconda3\\lib\\site-packages (from cffi>=1.12->cryptography>=3.3.1->pyHanko>=0.12.1->xhtml2pdf) (2.21)\n",
|
||||||
|
"C:\\Users\\acer\\Desktop\\SMI\n",
|
||||||
|
"Creating report 224321944144PADGMC.pdf ...\n",
|
||||||
|
"Created PDF report 224321944144PADGMC.pdf.\n",
|
||||||
|
"Creating report 226183001745JAHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 226183001745JAHGMC.pdf.\n",
|
||||||
|
"Creating report 226878454892ROSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 226878454892ROSGMC.pdf.\n",
|
||||||
|
"Creating report 229745607482KAHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 229745607482KAHGMC.pdf.\n",
|
||||||
|
"Creating report 237087936489DEEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 237087936489DEEGMC.pdf.\n",
|
||||||
|
"Creating report 237203051990AMAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 237203051990AMAGMC.pdf.\n",
|
||||||
|
"Creating report 255647157660SAUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 255647157660SAUGMC.pdf.\n",
|
||||||
|
"Creating report 263271759284SANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 263271759284SANGMC.pdf.\n",
|
||||||
|
"Creating report 268796021035MONGMC.pdf ...\n",
|
||||||
|
"Created PDF report 268796021035MONGMC.pdf.\n",
|
||||||
|
"Creating report 269278670283SASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 269278670283SASGMC.pdf.\n",
|
||||||
|
"Creating report 271596197534ISHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 271596197534ISHGMC.pdf.\n",
|
||||||
|
"Creating report 272237948944PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 272237948944PRAGMC.pdf.\n",
|
||||||
|
"Creating report 278272632291SHOGMC.pdf ...\n",
|
||||||
|
"Created PDF report 278272632291SHOGMC.pdf.\n",
|
||||||
|
"Creating report 283856462155ABDGMC.pdf ...\n",
|
||||||
|
"Created PDF report 283856462155ABDGMC.pdf.\n",
|
||||||
|
"Creating report 284146609891KUSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 284146609891KUSGMC.pdf.\n",
|
||||||
|
"Creating report 285846592059GAUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 285846592059GAUGMC.pdf.\n",
|
||||||
|
"Creating report 287500935512MANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 287500935512MANGMC.pdf.\n",
|
||||||
|
"Creating report 294917378637PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 294917378637PRAGMC.pdf.\n",
|
||||||
|
"Creating report 296362702170SAHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 296362702170SAHGMC.pdf.\n",
|
||||||
|
"Creating report 298781876459RITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 298781876459RITGMC.pdf.\n",
|
||||||
|
"Creating report 299644159567ROSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 299644159567ROSGMC.pdf.\n",
|
||||||
|
"Creating report 307721259755AMOGMC.pdf ...\n",
|
||||||
|
"Created PDF report 307721259755AMOGMC.pdf.\n",
|
||||||
|
"Creating report 310010093502PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 310010093502PRAGMC.pdf.\n",
|
||||||
|
"Creating report 311128923689HARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 311128923689HARGMC.pdf.\n",
|
||||||
|
"Creating report 311606424900VIJGMC.pdf ...\n",
|
||||||
|
"Created PDF report 311606424900VIJGMC.pdf.\n",
|
||||||
|
"Creating report 314426028466NIRGMC.pdf ...\n",
|
||||||
|
"Created PDF report 314426028466NIRGMC.pdf.\n",
|
||||||
|
"Creating report 317380302501TRUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 317380302501TRUGMC.pdf.\n",
|
||||||
|
"Creating report 319753488845SARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 319753488845SARGMC.pdf.\n",
|
||||||
|
"Creating report 319753488845SARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 319753488845SARGMC.pdf.\n",
|
||||||
|
"Creating report 325603399153CHIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 325603399153CHIGMC.pdf.\n",
|
||||||
|
"Creating report 327678894405SANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 327678894405SANGMC.pdf.\n",
|
||||||
|
"Creating report 337846930324RANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 337846930324RANGMC.pdf.\n",
|
||||||
|
"Creating report 341450969561PURGMC.pdf ...\n",
|
||||||
|
"Created PDF report 341450969561PURGMC.pdf.\n",
|
||||||
|
"Creating report 342593460393PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 342593460393PRAGMC.pdf.\n",
|
||||||
|
"Creating report 353279260573AJAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 353279260573AJAGMC.pdf.\n",
|
||||||
|
"Creating report 353306947152ZAKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 353306947152ZAKGMC.pdf.\n",
|
||||||
|
"Creating report 355360873978PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 355360873978PRAGMC.pdf.\n",
|
||||||
|
"Creating report 359765748394SAKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 359765748394SAKGMC.pdf.\n",
|
||||||
|
"Creating report 360535868118MANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 360535868118MANGMC.pdf.\n",
|
||||||
|
"Creating report 360908191249SHUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 360908191249SHUGMC.pdf.\n",
|
||||||
|
"Creating report 373377473748MANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 373377473748MANGMC.pdf.\n",
|
||||||
|
"Creating report 389121687339RIDGMC.pdf ...\n",
|
||||||
|
"Created PDF report 389121687339RIDGMC.pdf.\n",
|
||||||
|
"Creating report 393597721191BHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 393597721191BHAGMC.pdf.\n",
|
||||||
|
"Creating report 405674149187NEEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 405674149187NEEGMC.pdf.\n",
|
||||||
|
"Creating report 417508588250ARCGMC.pdf ...\n",
|
||||||
|
"Created PDF report 417508588250ARCGMC.pdf.\n",
|
||||||
|
"Creating report 421583296569AARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 421583296569AARGMC.pdf.\n",
|
||||||
|
"Creating report 433985179851ANKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 433985179851ANKGMC.pdf.\n",
|
||||||
|
"Creating report 443279685870SWAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 443279685870SWAGMC.pdf.\n",
|
||||||
|
"Creating report 455600775837SHEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 455600775837SHEGMC.pdf.\n",
|
||||||
|
"Creating report 459277955751SHUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 459277955751SHUGMC.pdf.\n",
|
||||||
|
"Creating report 465580226263RIKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 465580226263RIKGMC.pdf.\n",
|
||||||
|
"Creating report 471615484151ABHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 471615484151ABHGMC.pdf.\n",
|
||||||
|
"Creating report 475525838861YASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 475525838861YASGMC.pdf.\n",
|
||||||
|
"Creating report 479202598101RIDGMC.pdf ...\n",
|
||||||
|
"Created PDF report 479202598101RIDGMC.pdf.\n",
|
||||||
|
"Creating report 479442143845MUKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 479442143845MUKGMC.pdf.\n",
|
||||||
|
"Creating report 488029920533PRIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 488029920533PRIGMC.pdf.\n",
|
||||||
|
"Creating report 489219388428SHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 489219388428SHAGMC.pdf.\n",
|
||||||
|
"Creating report 490503954532JATGMC.pdf ...\n",
|
||||||
|
"Created PDF report 490503954532JATGMC.pdf.\n",
|
||||||
|
"Creating report 491019906660RITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 491019906660RITGMC.pdf.\n",
|
||||||
|
"Creating report 492125075012NISGMC.pdf ...\n",
|
||||||
|
"Created PDF report 492125075012NISGMC.pdf.\n",
|
||||||
|
"Creating report 493341165989RUPGMC.pdf ...\n",
|
||||||
|
"Created PDF report 493341165989RUPGMC.pdf.\n",
|
||||||
|
"Creating report 494297417882ANIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 494297417882ANIGMC.pdf.\n",
|
||||||
|
"Creating report 506852177535SAPGMC.pdf ...\n",
|
||||||
|
"Created PDF report 506852177535SAPGMC.pdf.\n",
|
||||||
|
"Creating report 509244275563RASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 509244275563RASGMC.pdf.\n",
|
||||||
|
"Creating report 512348509509YASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 512348509509YASGMC.pdf.\n",
|
||||||
|
"Creating report 513119622787SUPGMC.pdf ...\n",
|
||||||
|
"Created PDF report 513119622787SUPGMC.pdf.\n",
|
||||||
|
"Creating report 514901607969DULGMC.pdf ...\n",
|
||||||
|
"Created PDF report 514901607969DULGMC.pdf.\n",
|
||||||
|
"Creating report 519280474150UPLGMC.pdf ...\n",
|
||||||
|
"Created PDF report 519280474150UPLGMC.pdf.\n",
|
||||||
|
"Creating report 538108658900SAMGMC.pdf ...\n",
|
||||||
|
"Created PDF report 538108658900SAMGMC.pdf.\n",
|
||||||
|
"Creating report 541941536175AKAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 541941536175AKAGMC.pdf.\n",
|
||||||
|
"Creating report 550461542642NITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 550461542642NITGMC.pdf.\n",
|
||||||
|
"Creating report 560034121333SACGMC.pdf ...\n",
|
||||||
|
"Created PDF report 560034121333SACGMC.pdf.\n",
|
||||||
|
"Creating report 565038512261AKSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 565038512261AKSGMC.pdf.\n",
|
||||||
|
"Creating report 567222979316VANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 567222979316VANGMC.pdf.\n",
|
||||||
|
"Creating report 567798756109NITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 567798756109NITGMC.pdf.\n",
|
||||||
|
"Creating report 575462464598KAJGMC.pdf ...\n",
|
||||||
|
"Created PDF report 575462464598KAJGMC.pdf.\n",
|
||||||
|
"Creating report 580350702718KESGMC.pdf ...\n",
|
||||||
|
"Created PDF report 580350702718KESGMC.pdf.\n",
|
||||||
|
"Creating report 585270001058AADGMC.pdf ...\n",
|
||||||
|
"Created PDF report 585270001058AADGMC.pdf.\n",
|
||||||
|
"Creating report 587938357479DURGMC.pdf ...\n",
|
||||||
|
"Created PDF report 587938357479DURGMC.pdf.\n",
|
||||||
|
"Creating report 590553453852YOGGMC.pdf ...\n",
|
||||||
|
"Created PDF report 590553453852YOGGMC.pdf.\n",
|
||||||
|
"Creating report 590890585020CHEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 590890585020CHEGMC.pdf.\n",
|
||||||
|
"Creating report 591363992210DURGMC.pdf ...\n",
|
||||||
|
"Created PDF report 591363992210DURGMC.pdf.\n",
|
||||||
|
"Creating report 594841376463KRIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 594841376463KRIGMC.pdf.\n",
|
||||||
|
"Creating report 597085427787SAUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 597085427787SAUGMC.pdf.\n",
|
||||||
|
"Creating report 600608817741JITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 600608817741JITGMC.pdf.\n",
|
||||||
|
"Creating report 603297566444CHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 603297566444CHAGMC.pdf.\n",
|
||||||
|
"Creating report 603297566444CHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 603297566444CHAGMC.pdf.\n",
|
||||||
|
"Creating report 616513617547SHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 616513617547SHAGMC.pdf.\n",
|
||||||
|
"Creating report 616520778409KASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 616520778409KASGMC.pdf.\n",
|
||||||
|
"Creating report 622752150758SINGMC.pdf ...\n",
|
||||||
|
"Created PDF report 622752150758SINGMC.pdf.\n",
|
||||||
|
"Creating report 626223576285SANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 626223576285SANGMC.pdf.\n",
|
||||||
|
"Creating report 626223576285SANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 626223576285SANGMC.pdf.\n",
|
||||||
|
"Creating report 626683507657ROSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 626683507657ROSGMC.pdf.\n",
|
||||||
|
"Creating report 638267012322ANCGMC.pdf ...\n",
|
||||||
|
"Created PDF report 638267012322ANCGMC.pdf.\n",
|
||||||
|
"Creating report 642098628989VANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 642098628989VANGMC.pdf.\n",
|
||||||
|
"Creating report 643701315855RAJGMC.pdf ...\n",
|
||||||
|
"Created PDF report 643701315855RAJGMC.pdf.\n",
|
||||||
|
"Creating report 647499673461DURGMC.pdf ...\n",
|
||||||
|
"Created PDF report 647499673461DURGMC.pdf.\n",
|
||||||
|
"Creating report 653065092904CHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 653065092904CHAGMC.pdf.\n",
|
||||||
|
"Creating report 669591213509DIPGMC.pdf ...\n",
|
||||||
|
"Created PDF report 669591213509DIPGMC.pdf.\n",
|
||||||
|
"Creating report 670035450038ABHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 670035450038ABHGMC.pdf.\n",
|
||||||
|
"Creating report 670376336482MOIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 670376336482MOIGMC.pdf.\n",
|
||||||
|
"Creating report 674393517322HARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 674393517322HARGMC.pdf.\n",
|
||||||
|
"Creating report 681272836240SHUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 681272836240SHUGMC.pdf.\n",
|
||||||
|
"Creating report 684874896145KU.GMC.pdf ...\n",
|
||||||
|
"Created PDF report 684874896145KU.GMC.pdf.\n",
|
||||||
|
"Creating report 697644331965VAIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 697644331965VAIGMC.pdf.\n",
|
||||||
|
"Creating report 720576449689ANNGMC.pdf ...\n",
|
||||||
|
"Created PDF report 720576449689ANNGMC.pdf.\n",
|
||||||
|
"Creating report 725974004210JITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 725974004210JITGMC.pdf.\n",
|
||||||
|
"Creating report 728666171817KAJGMC.pdf ...\n",
|
||||||
|
"Created PDF report 728666171817KAJGMC.pdf.\n",
|
||||||
|
"Creating report 733220053897AKSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 733220053897AKSGMC.pdf.\n",
|
||||||
|
"Creating report 750322934305SARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 750322934305SARGMC.pdf.\n",
|
||||||
|
"Creating report 750853208769PRIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 750853208769PRIGMC.pdf.\n",
|
||||||
|
"Creating report 758907770937DHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 758907770937DHAGMC.pdf.\n",
|
||||||
|
"Creating report 759014921528SUMGMC.pdf ...\n",
|
||||||
|
"Created PDF report 759014921528SUMGMC.pdf.\n",
|
||||||
|
"Creating report 765225110445VAIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 765225110445VAIGMC.pdf.\n",
|
||||||
|
"Creating report 771905165783SHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 771905165783SHAGMC.pdf.\n",
|
||||||
|
"Creating report 774602363978SHLGMC.pdf ...\n",
|
||||||
|
"Created PDF report 774602363978SHLGMC.pdf.\n",
|
||||||
|
"Creating report 782614827816HARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 782614827816HARGMC.pdf.\n",
|
||||||
|
"Creating report 789364502481S AGMC.pdf ...\n",
|
||||||
|
"Created PDF report 789364502481S AGMC.pdf.\n",
|
||||||
|
"Creating report 792467787662SHRGMC.pdf ...\n",
|
||||||
|
"Created PDF report 792467787662SHRGMC.pdf.\n",
|
||||||
|
"Creating report 805043473836SUMGMC.pdf ...\n",
|
||||||
|
"Created PDF report 805043473836SUMGMC.pdf.\n",
|
||||||
|
"Creating report 815306073532MUSGMC.pdf ...\n",
|
||||||
|
"Created PDF report 815306073532MUSGMC.pdf.\n",
|
||||||
|
"Creating report 819077305910KHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 819077305910KHAGMC.pdf.\n",
|
||||||
|
"Creating report 827465570428ZEEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 827465570428ZEEGMC.pdf.\n",
|
||||||
|
"Creating report 831357896529CHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 831357896529CHAGMC.pdf.\n",
|
||||||
|
"Creating report 834051733492PRAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 834051733492PRAGMC.pdf.\n",
|
||||||
|
"Creating report 838194370051GAUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 838194370051GAUGMC.pdf.\n",
|
||||||
|
"Creating report 844097319729SHAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 844097319729SHAGMC.pdf.\n",
|
||||||
|
"Creating report 846948594390YASGMC.pdf ...\n",
|
||||||
|
"Created PDF report 846948594390YASGMC.pdf.\n",
|
||||||
|
"Creating report 848136889726MUGGMC.pdf ...\n",
|
||||||
|
"Created PDF report 848136889726MUGGMC.pdf.\n",
|
||||||
|
"Creating report 849079906443RAHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 849079906443RAHGMC.pdf.\n",
|
||||||
|
"Creating report 877147864729AKAGMC.pdf ...\n",
|
||||||
|
"Created PDF report 877147864729AKAGMC.pdf.\n",
|
||||||
|
"Creating report 888760045335RAKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 888760045335RAKGMC.pdf.\n",
|
||||||
|
"Creating report 892921681188ASHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 892921681188ASHGMC.pdf.\n",
|
||||||
|
"Creating report 895316097017RAKGMC.pdf ...\n",
|
||||||
|
"Created PDF report 895316097017RAKGMC.pdf.\n",
|
||||||
|
"Creating report 895989269042TILGMC.pdf ...\n",
|
||||||
|
"Created PDF report 895989269042TILGMC.pdf.\n",
|
||||||
|
"Creating report 900769653784TARGMC.pdf ...\n",
|
||||||
|
"Created PDF report 900769653784TARGMC.pdf.\n",
|
||||||
|
"Creating report 903247738868VAIGMC.pdf ...\n",
|
||||||
|
"Created PDF report 903247738868VAIGMC.pdf.\n",
|
||||||
|
"Creating report 908300994257SATGMC.pdf ...\n",
|
||||||
|
"Created PDF report 908300994257SATGMC.pdf.\n",
|
||||||
|
"Creating report 908300994257SATGMC.pdf ...\n",
|
||||||
|
"Created PDF report 908300994257SATGMC.pdf.\n",
|
||||||
|
"Creating report 910605003271SUJGMC.pdf ...\n",
|
||||||
|
"Created PDF report 910605003271SUJGMC.pdf.\n",
|
||||||
|
"Creating report 918039154000ANTGMC.pdf ...\n",
|
||||||
|
"Created PDF report 918039154000ANTGMC.pdf.\n",
|
||||||
|
"Creating report 920680985699ABHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 920680985699ABHGMC.pdf.\n",
|
||||||
|
"Creating report 921761502414SUNGMC.pdf ...\n",
|
||||||
|
"Created PDF report 921761502414SUNGMC.pdf.\n",
|
||||||
|
"Creating report 942751311120ABHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 942751311120ABHGMC.pdf.\n",
|
||||||
|
"Creating report 949461709290SNEGMC.pdf ...\n",
|
||||||
|
"Created PDF report 949461709290SNEGMC.pdf.\n",
|
||||||
|
"Creating report 950292912605HEMGMC.pdf ...\n",
|
||||||
|
"Created PDF report 950292912605HEMGMC.pdf.\n",
|
||||||
|
"Creating report 960105176414RITGMC.pdf ...\n",
|
||||||
|
"Created PDF report 960105176414RITGMC.pdf.\n",
|
||||||
|
"Creating report 964003970313MANGMC.pdf ...\n",
|
||||||
|
"Created PDF report 964003970313MANGMC.pdf.\n",
|
||||||
|
"Creating report 992346311078SHUGMC.pdf ...\n",
|
||||||
|
"Created PDF report 992346311078SHUGMC.pdf.\n",
|
||||||
|
"Creating report 995305552243MOHGMC.pdf ...\n",
|
||||||
|
"Created PDF report 995305552243MOHGMC.pdf.\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"\n",
|
||||||
|
"import sys\n",
|
||||||
|
"import csv\n",
|
||||||
|
"#import qrcode\n",
|
||||||
|
"! pip install xhtml2pdf\n",
|
||||||
|
"from xhtml2pdf import pisa\n",
|
||||||
|
"from jinja2 import Environment, FileSystemLoader\n",
|
||||||
|
"import os\n",
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"\n",
|
||||||
|
"# Capture our current directory\n",
|
||||||
|
"THIS_DIR = os.path.dirname(os.path.abspath(r\"C:\\Users\\acer\\Desktop\\SMI\"))\n",
|
||||||
|
"print(os.getcwd())\n",
|
||||||
|
"\n",
|
||||||
|
"#def generateQRCode(rptD):\n",
|
||||||
|
" # qrc = qrcode.QRCode(version=10,error_correction=qrcode.constants.ERROR_CORRECT_H)\n",
|
||||||
|
" # data = \"SRF ID : {} \\n ICMR ID: {} \\n IISc ID: {} \\n Name: {} \\n Age: {} \\n Gender: {} \\n Swab Collected On: {} \\n Lab Name: Indian Institute of Science, Bangalore\\n Result Date: {} \\n Test Type: RT-PCR\\n Test Result: {}.\\n\".format(rptD['srfid'],rptD['sampleICMRID'],rptD['sampleIIScID'],rptD['patientName'],rptD['patientAge'],rptD['patientGender'],rptD['sampleCollectionDate'],rptD['testDate'],rptD['testResult'])\n",
|
||||||
|
" # qrc.add_data(data)\n",
|
||||||
|
" #qrImg = qrc.make_image(fill_color=\"black\", back_color=\"white\")\n",
|
||||||
|
" #qrImg.save(rptD['qrcodeImgFile'])\n",
|
||||||
|
" #return\n",
|
||||||
|
"\n",
|
||||||
|
"def prepareData(row):\n",
|
||||||
|
" rptData = {}\n",
|
||||||
|
"\n",
|
||||||
|
" rptData['Person Name'] = row['Name']\n",
|
||||||
|
" rptData['Age'] = row['Age']\n",
|
||||||
|
" rptData['Gender'] = row['Gender']\n",
|
||||||
|
" rptData['Age / Sex'] = f\"{rptData['Age']} ({rptData['Gender']})\"\n",
|
||||||
|
" rptData['Sample type'] = 'Capillary Whole Blood'\n",
|
||||||
|
" rptData['Family History of Sickle Cell Anemia'] = 'Unknown'\n",
|
||||||
|
" rptData['Marital Status'] = row['Marital Status']\n",
|
||||||
|
" rptData['Test Date'] = pd.to_datetime(row['testTime']).date()\n",
|
||||||
|
" rptData['Patient ID'] = row['ABHA ID']\n",
|
||||||
|
" rptData['Sample ID'] = row['_id']\n",
|
||||||
|
" rptData['value'] = row['Measured Deovix Ratio']\n",
|
||||||
|
" #rptData['qrcodeImgFile'] = 'qr_' + row['SRF ID'] + '.png'\n",
|
||||||
|
" # generateQRCode(rptData)\n",
|
||||||
|
" return rptData\n",
|
||||||
|
"\n",
|
||||||
|
"def generatePDFReport(row):\n",
|
||||||
|
" outFilename = row['_id'] + '.pdf'\n",
|
||||||
|
" # fill template with sample result values\n",
|
||||||
|
" # generate report\n",
|
||||||
|
" # generate qr code\n",
|
||||||
|
" # convert to pdf\n",
|
||||||
|
" print(\"Creating report %s ...\" % outFilename)\n",
|
||||||
|
" j2_env = Environment(loader=FileSystemLoader(THIS_DIR),\n",
|
||||||
|
" trim_blocks=True)\n",
|
||||||
|
" rd = prepareData(row)\n",
|
||||||
|
" # template_path = os.path.join(THIS_DIR, 'report_template.html')\n",
|
||||||
|
"\n",
|
||||||
|
" report_template =r'''\n",
|
||||||
|
"<!DOCTYPE html>\n",
|
||||||
|
"<html>\n",
|
||||||
|
"\n",
|
||||||
|
"<head>\n",
|
||||||
|
" <style>\n",
|
||||||
|
" @media print {\n",
|
||||||
|
" body {\n",
|
||||||
|
" -webkit-print-color-adjust: exact;\n",
|
||||||
|
" }\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .person-details-row {\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" flex-direction: row;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .person-details-col {\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" flex-direction: column;\n",
|
||||||
|
" height: 90px;\n",
|
||||||
|
" width: 50%;\n",
|
||||||
|
" margin: 1px;\n",
|
||||||
|
" border: 0;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .test-details-row {\n",
|
||||||
|
" border: 0;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .test-details-col {\n",
|
||||||
|
" height: 100px;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .test-cell-div {\n",
|
||||||
|
" /* border: 1px solid black; */\n",
|
||||||
|
" border-collapse: collapse;\n",
|
||||||
|
" height: 20px;\n",
|
||||||
|
" padding: 10px;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .table-header {\n",
|
||||||
|
" border: 1px solid black;\n",
|
||||||
|
" margin: 0 0 -10px 10px;\n",
|
||||||
|
" background-color: rgb(191, 191, 191);\n",
|
||||||
|
" text-align: center;\n",
|
||||||
|
" justify-content: center;\n",
|
||||||
|
" align-items: center;\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" font-weight: 600;\n",
|
||||||
|
" height: 50px;\n",
|
||||||
|
" width: 98%;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" @media print {\n",
|
||||||
|
" .table-header {\n",
|
||||||
|
" background-color: rgb(191, 191, 191) !important;\n",
|
||||||
|
" print-color-adjust: exact;\n",
|
||||||
|
" }\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" @media print {\n",
|
||||||
|
" .vendorListHeading th {\n",
|
||||||
|
" color: white !important;\n",
|
||||||
|
" }\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .test-method {\n",
|
||||||
|
" font-weight: 200 !important;\n",
|
||||||
|
" color: rgb(191, 191, 191);\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .result-value {\n",
|
||||||
|
" justify-content: center;\n",
|
||||||
|
" align-items: center;\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .end-of-report {\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" align-items: center;\n",
|
||||||
|
" justify-content: center;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .logo {\n",
|
||||||
|
" display: flex;\n",
|
||||||
|
" justify-content: center;\n",
|
||||||
|
" align-items: center;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" table,\n",
|
||||||
|
" th,\n",
|
||||||
|
" td {\n",
|
||||||
|
" border: 1px solid black;\n",
|
||||||
|
" border-collapse: collapse;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" ul {\n",
|
||||||
|
" list-style-type: none;\n",
|
||||||
|
" /* margin: 0; */\n",
|
||||||
|
" /* padding: 0; */\n",
|
||||||
|
" }\n",
|
||||||
|
" </style>\n",
|
||||||
|
"</head>\n",
|
||||||
|
"\n",
|
||||||
|
"<body>\n",
|
||||||
|
" <div>\n",
|
||||||
|
" <div class=\"logo\">\n",
|
||||||
|
" <img src=\"C:\\Users\\acer\\Desktop\\SMI\\logo_nobg.png\" width=\"128\" height=\"128\" alt=\"sickle cell logo\" />\n",
|
||||||
|
" </div>\n",
|
||||||
|
" <table style=\"border: 1px solid black; margin: 10px; width: 98%;\">\n",
|
||||||
|
" <tr class=\"person-details-row\">\n",
|
||||||
|
" <td class=\"person-details-col\" style=\"border-right: 2; width: 70%;\">\n",
|
||||||
|
" <div><strong>Person Name:</strong> {{ reportData[\"Person Name\"] }}</div>\n",
|
||||||
|
" <div><strong>Age / Sex:</strong> {{reportData['Age']}} / {{reportData['Gender']}}</div>\n",
|
||||||
|
" <div><strong>Sample type:</strong>{{ reportData[\"Sample type\"] }}</div>\n",
|
||||||
|
" <div><strong>Family History of Sickle Cell Anemia:</strong>{{ reportData[\"Family History of Sickle Cell Anemia\"] }}</div>\n",
|
||||||
|
" </td>\n",
|
||||||
|
" <td class=\"person-details-col\" style=\"width: 30%;\">\n",
|
||||||
|
" <div><strong>Marital Status:</strong>{{ reportData[\"Marital Status\"] }}</div>\n",
|
||||||
|
" <div><strong>Test Date:</strong>{{ reportData[\"Test Date\"] }}</div> \n",
|
||||||
|
" <div><strong>ABHA ID:</strong>{{ reportData[\"Patient ID\"] }}</div>\n",
|
||||||
|
" <div><strong>Sample ID:</strong>{{ reportData[\"Sample ID\"] }}</div>\n",
|
||||||
|
" </td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </table>\n",
|
||||||
|
" </div>\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" <div style=\"height: 2px;width: 98%; background-color: rgb(56, 105, 166); margin: 30px 10px 40px 10px;\"></div>\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" <div>\n",
|
||||||
|
" <div class=\"table-header\">POINT OF CARE SICKLE CELL ANEMIA TEST</div>\n",
|
||||||
|
" <table class=\"test-details-table\" style=\"border: 1px solid black; margin: 10px; width: 98%;\">\n",
|
||||||
|
" <tr style=\"height: 50px;\">\n",
|
||||||
|
" <th>\n",
|
||||||
|
" Test Description\n",
|
||||||
|
" </th>\n",
|
||||||
|
" <th>\n",
|
||||||
|
" RESULT\n",
|
||||||
|
" </th>\n",
|
||||||
|
" <th>\n",
|
||||||
|
" REFERENCE RANGES\n",
|
||||||
|
" </th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr class=\"test-details-row\">\n",
|
||||||
|
" <td class=\"test-details-col\" style=\"width: 20%; margin: 10px;\">\n",
|
||||||
|
" <div style=\"margin: 10px;\">Sickle Cell\n",
|
||||||
|
" Anemia\n",
|
||||||
|
" <div class=\"test-method\">(Method: HPOS)</div>\n",
|
||||||
|
" </div>\n",
|
||||||
|
" </td>\n",
|
||||||
|
" <td style=\"width: 30%;\">\n",
|
||||||
|
" <div class=\"result-value\">Ra = {{ reportData[\"value\"] }}</div>\n",
|
||||||
|
" <!-- <div class=\"test-cell-div\">Normal</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Sickle Cell Trait</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Sickle Cell Disease</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Negative Borderline</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Positive Borderline</div> -->\n",
|
||||||
|
" </td>\n",
|
||||||
|
" <td style=\"width: 50%;\">\n",
|
||||||
|
" <div class=\"test-cell-div\">\n",
|
||||||
|
" < 0.16: Normal (HbA)</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">0.165 – 0.235: Sickle-cell Trait (HbAS)</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">> 0.24: Sickle-cell Disease (HbSS)</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">0.16-0.165: Inconclusive (Negative Borderline)</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">0.235 – 0.24: Inconclusive (Positive Borderline)</div>\n",
|
||||||
|
" </td>\n",
|
||||||
|
" <!-- <td style=\"width: 25%;\">\n",
|
||||||
|
" <div class=\"test-cell-div\">Normal</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Sickle Cell Trait</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Sickle Cell Disease</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Recommended for HPLC or Electrophoresis Tests</div>\n",
|
||||||
|
" <div class=\"test-cell-div\">Recommended for HPLC or Electrophore</div>\n",
|
||||||
|
" </td> -->\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </table>\n",
|
||||||
|
" </div>\n",
|
||||||
|
"\n",
|
||||||
|
" <div>\n",
|
||||||
|
" <!-- <div style=\"font-weight: 600; margin: 10px;\">INTERPRETATION:</div> -->\n",
|
||||||
|
"\n",
|
||||||
|
" <div style=\"margin: 10px;\">\n",
|
||||||
|
" <strong>Test Principle:</strong> This point of care quantitative diagnostic test for sickle-cell anemia\n",
|
||||||
|
" works on the principle of absorption\n",
|
||||||
|
" spectroscopy. The test helps in differentiating heterozygous/homozygous hemoglobin from normal hemoglobin.\n",
|
||||||
|
" </div>\n",
|
||||||
|
"\n",
|
||||||
|
" <div style=\"margin: 10px;\">\n",
|
||||||
|
" <strong>Method:</strong> High Performance Optical Spectroscopy (HPOS) for detection of Sickle cell trait and\n",
|
||||||
|
" sickle cell disease in whole blood capillary blood samples.\n",
|
||||||
|
" </div>\n",
|
||||||
|
"\n",
|
||||||
|
" <div style=\"margin: 10px;\">\n",
|
||||||
|
" <strong> Note:</strong>\n",
|
||||||
|
" <!-- <ul>\n",
|
||||||
|
" <li>a. Blood transfusion may have an impact on the test results.</li>\n",
|
||||||
|
"\n",
|
||||||
|
" <li>\n",
|
||||||
|
" b. Patients already on sickle-cell medications may impact test results.\n",
|
||||||
|
" </li>\n",
|
||||||
|
" </ul> -->\n",
|
||||||
|
"\n",
|
||||||
|
" Borderline cases are reported as inconclusive. It may occur due to several factors such as medication,\n",
|
||||||
|
" transfusion, field conditions and assay process. Further clinical tests are recommended in these cases for\n",
|
||||||
|
" diagnosis.\n",
|
||||||
|
" </div>\n",
|
||||||
|
"\n",
|
||||||
|
" <!-- <div\n",
|
||||||
|
" style=\"margin: 80px 10px 20px 50px; width: 88%; display: flex; flex-direction: row; justify-content: space-between; align-items: center;\">\n",
|
||||||
|
" <div style=\"margin: 5px;\">DATE:</div>\n",
|
||||||
|
" <div style=\"margin: 5px;\">Hematologist</div>\n",
|
||||||
|
" </div> -->\n",
|
||||||
|
"\n",
|
||||||
|
" <!-- <div style=\"margin: 30px;\">\n",
|
||||||
|
" This report is for the perusal of doctor only. Not for medico legal cases. Clinical correlation is\n",
|
||||||
|
" essential.\n",
|
||||||
|
" Please contact us in case of unexpected result.\n",
|
||||||
|
" </div> -->\n",
|
||||||
|
" <div style=\"height: 3px;width: 98%; background-color: black; margin-top: 150px;\"></div>\n",
|
||||||
|
" <div class=\"end-of-report\">\n",
|
||||||
|
" *** END OF REPORT ***</div>\n",
|
||||||
|
" <div style=\"display: flex; justify-content: center; align-items: center; flex-direction: column;\">\n",
|
||||||
|
" <div style=\"font-style: italic; color: rgb(191, 191, 191);\">\n",
|
||||||
|
" This is an electronically generated report. Generated at HH:MM hrs on DD-MMM-YYYY.\n",
|
||||||
|
" </div>\n",
|
||||||
|
" <div>\n",
|
||||||
|
" Note: Assay results should be correlated clinically with other clinical findings\n",
|
||||||
|
" </div>\n",
|
||||||
|
" </div>\n",
|
||||||
|
" </div>\n",
|
||||||
|
"</body>\n",
|
||||||
|
"\n",
|
||||||
|
"</html>\n",
|
||||||
|
"'''\n",
|
||||||
|
" rptHtml = j2_env.from_string(report_template).render(reportData=rd)\n",
|
||||||
|
" reportFile = open('reports/' + rd['Sample ID'] + '.pdf','w+b')\n",
|
||||||
|
" pisa_status = pisa.CreatePDF(rptHtml, dest=reportFile)\n",
|
||||||
|
" if not pisa_status.err:\n",
|
||||||
|
" print(\"Created PDF report %s.\" % outFilename)\n",
|
||||||
|
" #os.remove(rd['qrcodeImgFile'])\n",
|
||||||
|
" return\n",
|
||||||
|
"\n",
|
||||||
|
"if (len(sys.argv) < 2):\n",
|
||||||
|
" print(\"Usage: genLabReport.py <results_file.csv>\")\n",
|
||||||
|
" sys.exit(1)\n",
|
||||||
|
"\n",
|
||||||
|
"csv_file_path = r\"C:\\Users\\acer\\Desktop\\SMI\\TILL AUG5.csv\" # Replace this with the actual path to your CSV file\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"with open(csv_file_path) as resultsCSVFile:\n",
|
||||||
|
" reader = csv.DictReader(resultsCSVFile)\n",
|
||||||
|
" for row in reader:\n",
|
||||||
|
" generatePDFReport(row)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "90a2f709-7521-41ed-ba1b-99cbbf108ab0",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "3e31b418-eb4c-48e1-9a4f-bdfdc50365f4",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3 (ipykernel)",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.11.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
16
src/App.css
16
src/App.css
@@ -50,7 +50,7 @@ body {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
.last-update {
|
.last-update {
|
||||||
@@ -146,7 +146,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nscm-logo {
|
.nscm-logo {
|
||||||
@@ -206,7 +206,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-text {
|
.title-text {
|
||||||
@@ -289,7 +289,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.cards-container {
|
.cards-container {
|
||||||
height: 80vh;
|
height: 84vh;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -307,7 +307,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
font-size: xx-large;
|
font-size: xx-large;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-text {
|
.title-text {
|
||||||
@@ -356,7 +356,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.cards-container {
|
.cards-container {
|
||||||
height: 80vh;
|
height: 90vh;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -372,7 +372,7 @@ body {
|
|||||||
.dashboard-title {
|
.dashboard-title {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
background-color: rgb(215, 192, 252);
|
background-color: rgb(207, 235, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-text {
|
.title-text {
|
||||||
|
|||||||
34
src/App.js
34
src/App.js
@@ -2,11 +2,17 @@ import './App.css';
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
import { collection, onSnapshot, query } from "firebase/firestore";
|
import { collection, onSnapshot, query, where } from "firebase/firestore";
|
||||||
import Card from './components/Card';
|
import Card from './components/Card';
|
||||||
import db from './firebase';
|
import db from './firebase';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
|
const registrationCached = 19453;
|
||||||
|
const malesCached = 8321;
|
||||||
|
const femalesCached = 10646;
|
||||||
|
const normalCached = 9626;
|
||||||
|
const traitsCached = 2575;
|
||||||
|
const diseasesCached = 388;
|
||||||
const [totalScreened, setTotalScreened] = useState(0);
|
const [totalScreened, setTotalScreened] = useState(0);
|
||||||
const [males, setMales] = useState(0);
|
const [males, setMales] = useState(0);
|
||||||
const [females, setFemales] = useState(0);
|
const [females, setFemales] = useState(0);
|
||||||
@@ -19,7 +25,9 @@ function App() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
const q = query(collection(db, "patientData"));
|
// const q = query(collection(db, "patientData")); // cached
|
||||||
|
const notCachedDate = "2023-12-17";
|
||||||
|
const q = query(collection(db, "patientData"), where("createdAt", ">=", moment(notCachedDate).format("YYYY-MM-DD")));
|
||||||
|
|
||||||
const unsub = onSnapshot(q, (querySnapshot) => {
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
const patients = [];
|
const patients = [];
|
||||||
@@ -36,9 +44,9 @@ function App() {
|
|||||||
femaleCount++;
|
femaleCount++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setTotalScreened(patients.length);
|
setTotalScreened(registrationCached + patients?.length);
|
||||||
setMales(maleCount);
|
setMales(malesCached + maleCount);
|
||||||
setFemales(femaleCount);
|
setFemales(femalesCached + femaleCount);
|
||||||
setLastUpdate(moment());
|
setLastUpdate(moment());
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,7 +54,8 @@ function App() {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const q = query(collection(db, "testData"));
|
const notCachedDate = "2023-12-17";
|
||||||
|
const q = query(collection(db, "testData"), where("testTime", ">=", moment(notCachedDate).format("YYYY-MM-DD")));
|
||||||
|
|
||||||
const unsub = onSnapshot(q, (querySnapshot) => {
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
const hposTests = [];
|
const hposTests = [];
|
||||||
@@ -57,20 +66,21 @@ function App() {
|
|||||||
const hposTestData = document.data();
|
const hposTestData = document.data();
|
||||||
hposTests.push(hposTestData);
|
hposTests.push(hposTestData);
|
||||||
const { result } = hposTestData;
|
const { result } = hposTestData;
|
||||||
if (result === "NORMAL") {
|
const { classificationResult } = hposTestData;
|
||||||
|
if (result === "NORMAL" || classificationResult === 'Normal') {
|
||||||
normalCount++;
|
normalCount++;
|
||||||
}
|
}
|
||||||
if (result === 'SICKLECELLTRAIT') {
|
if (result === 'SICKLECELLTRAIT' || classificationResult === 'Sickle Cell Trait') {
|
||||||
traitCount++;
|
traitCount++;
|
||||||
}
|
}
|
||||||
if (result === 'SICKLECELLDISEASE') {
|
if (result === 'SICKLECELLDISEASE' || classificationResult === 'Sickle Cell Disease') {
|
||||||
diseaseCount++;
|
diseaseCount++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setNormal(normalCount);
|
setNormal(normalCached + normalCount);
|
||||||
// setPositives(traitCount + diseaseCount);
|
// setPositives(traitCount + diseaseCount);
|
||||||
setTraits(traitCount);
|
setTraits(traitsCached + traitCount);
|
||||||
setDiseases(diseaseCount);
|
setDiseases(diseasesCached + diseaseCount);
|
||||||
setLastUpdate(moment());
|
setLastUpdate(moment());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
422
src/AppOp.css
Normal file
422
src/AppOp.css
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
body {
|
||||||
|
background-color: rgb(247, 245, 249);
|
||||||
|
}
|
||||||
|
|
||||||
|
.App {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-logo {
|
||||||
|
height: 40vmin;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
.App-logo {
|
||||||
|
animation: App-logo-spin infinite 20s linear;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.App-header {
|
||||||
|
background-color: #282c34;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: calc(10px + 2vmin);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.dashboard-title::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-weight: 900;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
width: 100%;
|
||||||
|
font-family: Arial Black;
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: row;
|
||||||
|
font-size: xx-large;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
.last-update {
|
||||||
|
width: 100%;
|
||||||
|
font-size: small;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.developer {
|
||||||
|
font-size: medium;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dev-logo {
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nscm-logo {
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo {
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo-1 {
|
||||||
|
width: 1.79em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo-3 {
|
||||||
|
width: 1.79em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
margin: 0 1em 0 1em;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
.numeric-card {
|
||||||
|
height: 30vh;
|
||||||
|
width: 28vw;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 320px) {
|
||||||
|
.numeric-card {
|
||||||
|
height: 200px;
|
||||||
|
width: 300px;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
color: black;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-data {
|
||||||
|
color: black;
|
||||||
|
font-size: 4em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-container {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-row {
|
||||||
|
margin: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
font-size: xx-large;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nscm-logo {
|
||||||
|
width: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo {
|
||||||
|
width: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
margin: 0 1em 0 1em;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
.numeric-card {
|
||||||
|
height: 200px;
|
||||||
|
width: 300px;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
color: black;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-data {
|
||||||
|
color: black;
|
||||||
|
font-size: 8em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-container {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-row {
|
||||||
|
margin: 30px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
font-size: xx-large;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 900px) {
|
||||||
|
.numeric-card {
|
||||||
|
height: 150px;
|
||||||
|
width: 200px;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
color: black;
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-data {
|
||||||
|
color: black;
|
||||||
|
font-size: 4em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-container {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-row {
|
||||||
|
margin: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
font-size: xx-large;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
font-size: x-large;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
.numeric-card {
|
||||||
|
height: 200px;
|
||||||
|
width: 320px;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
color: black;
|
||||||
|
font-size: 1.6em;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-data {
|
||||||
|
color: black;
|
||||||
|
font-size: 6em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-container {
|
||||||
|
height: 90vh;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-row {
|
||||||
|
margin: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
height: 10vh;
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
font-size: xx-large;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
font-size: xx-large;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nscm-logo {
|
||||||
|
width: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo {
|
||||||
|
width: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo-3 {
|
||||||
|
width: 2.5em;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 2560px) {
|
||||||
|
.numeric-card {
|
||||||
|
height: 30vh;
|
||||||
|
width: 28vw;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 5px 10px 8px 10px #888888;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
color: black;
|
||||||
|
font-size: 6em;
|
||||||
|
font-weight: 600;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-data {
|
||||||
|
color: black;
|
||||||
|
font-size: 18em;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-container {
|
||||||
|
height: 90vh;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cards-row {
|
||||||
|
margin: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-title {
|
||||||
|
text-align: center;
|
||||||
|
align-self: center;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
font-size: 2vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nscm-logo {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo-1 {
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gov-logo-3 {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
div.chart {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 0.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.bar {
|
||||||
|
background-color: DarkRed;
|
||||||
|
color: white;
|
||||||
|
height: 3em;
|
||||||
|
line-height: 3em;
|
||||||
|
padding-right: 1em;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-color: rgb(207, 235, 250);
|
||||||
|
color: black;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
120
src/AppOp.js
Normal file
120
src/AppOp.js
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
// import './AppOp.css';
|
||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
import { collection, onSnapshot, query } from "firebase/firestore";
|
||||||
|
import Card from './components/Card';
|
||||||
|
import db from './firebase';
|
||||||
|
|
||||||
|
function AppOp() {
|
||||||
|
const [totalScreened, setTotalScreened] = useState(0);
|
||||||
|
const [males, setMales] = useState(0);
|
||||||
|
const [females, setFemales] = useState(0);
|
||||||
|
const [normal, setNormal] = useState(0);
|
||||||
|
// const [positives, setPositives] = useState(0);
|
||||||
|
const [traits, setTraits] = useState(0);
|
||||||
|
const [diseases, setDiseases] = useState(0);
|
||||||
|
const [lastUpdate, setLastUpdate] = useState(moment());
|
||||||
|
const [devMode, setDevMode] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
|
||||||
|
const q = query(collection(db, "patientData"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const patients = [];
|
||||||
|
let maleCount = 0;
|
||||||
|
let femaleCount = 0;
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
const patient = document.data();
|
||||||
|
patients.push(patient);
|
||||||
|
const { gender } = patient;
|
||||||
|
if (gender?.toLowerCase() === 'male') {
|
||||||
|
maleCount++;
|
||||||
|
}
|
||||||
|
if (gender?.toLowerCase() === 'female') {
|
||||||
|
femaleCount++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setTotalScreened(patients.length);
|
||||||
|
setMales(maleCount);
|
||||||
|
setFemales(femaleCount);
|
||||||
|
setLastUpdate(moment());
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const q = query(collection(db, "testData"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const hposTests = [];
|
||||||
|
let normalCount = 0;
|
||||||
|
let traitCount = 0;
|
||||||
|
let diseaseCount = 0;
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
const hposTestData = document.data();
|
||||||
|
hposTests.push(hposTestData);
|
||||||
|
const { result } = hposTestData;
|
||||||
|
if (result === "NORMAL") {
|
||||||
|
normalCount++;
|
||||||
|
}
|
||||||
|
if (result === 'SICKLECELLTRAIT') {
|
||||||
|
traitCount++;
|
||||||
|
}
|
||||||
|
if (result === 'SICKLECELLDISEASE') {
|
||||||
|
diseaseCount++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setNormal(normalCount);
|
||||||
|
// setPositives(traitCount + diseaseCount);
|
||||||
|
setTraits(traitCount);
|
||||||
|
setDiseases(diseaseCount);
|
||||||
|
setLastUpdate(moment());
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className='dashboard-title'>
|
||||||
|
<img className="nscm-logo" src={require('./logo_nobg.png')} alt='img' />
|
||||||
|
<div className='title-text'>HPOS Sickle Cell Test Dashboard</div>
|
||||||
|
<img className="gov-logo-1" src={require('./gov_logo2.png')} alt='img' />
|
||||||
|
<img className="gov-logo" src={require('./gov_logo3.png')} alt='img' />
|
||||||
|
<img className="gov-logo-3" src={require('./gov_logo4.png')} alt='img' />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='cards-container'>
|
||||||
|
<div className='cards-row'>
|
||||||
|
<Card title={"Total"} counter={"726"} color={'black'} backgroundColor={'rgb(254, 240, 227)'} />
|
||||||
|
<Card title={"Male"} counter={"406"} backgroundColor={'rgb(237, 190, 190)'} />
|
||||||
|
<Card title={"Female"} counter={"320"} backgroundColor={'rgb(249, 195, 195)'} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='cards-row'>
|
||||||
|
<Card title={"Normal"} counter={"405"} backgroundColor={'rgb(234, 240, 230)'} />
|
||||||
|
<Card title={"Sickle Cell Disease (HbSS)"} counter={"29"} backgroundColor={'rgb(234, 246, 245)'} />
|
||||||
|
<Card title={"Sickle Cell Trait (HbAS)"} counter={"50"} backgroundColor={'rgb(192,233, 199)'} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='footer'>
|
||||||
|
<div className='last-update'>
|
||||||
|
Updated at: {moment(lastUpdate).format("DD-MM-YYYY hh:mm:ss a")}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='developer' onClick={() => setDevMode(!devMode)}>
|
||||||
|
Developed by <img className="dev-logo" alt='img' src={require('./smi-logo-120x120.webp')} /> ShanMukha
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* {devMode &&
|
||||||
|
<div>dev mode is on</div>} */}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AppOp;
|
||||||
10
src/components/Alerts.css
Normal file
10
src/components/Alerts.css
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.alert-card {
|
||||||
|
width: 30vw;
|
||||||
|
height: 10vh;
|
||||||
|
background-color: white;
|
||||||
|
margin: 10px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgb(219, 219, 219);
|
||||||
|
border-radius: 6px;
|
||||||
|
border-width: max(1px, 0.0625rem);
|
||||||
|
}
|
||||||
42
src/components/Alerts.js
Normal file
42
src/components/Alerts.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import React, { useEffect, useState, useRef } from 'react';
|
||||||
|
import { query, collection, onSnapshot } from 'firebase/firestore';
|
||||||
|
|
||||||
|
import './Alerts.css';
|
||||||
|
import db from '../firebase';
|
||||||
|
|
||||||
|
const Alerts = () => {
|
||||||
|
const [alerts, setAlerts] = useState([]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!alerts.length) {
|
||||||
|
const q = query(collection(db, "alerts"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const testDevices = new Set();
|
||||||
|
const alerts = [];
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
console.log(document.data());
|
||||||
|
const alert = document.data();
|
||||||
|
alerts.push(alert);
|
||||||
|
});
|
||||||
|
const groups = [...testDevices];
|
||||||
|
// setDevices(groups);
|
||||||
|
setAlerts(alerts.sort((a, b) => { return a.createdAt < b.createdAt; }));
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{alerts.length &&
|
||||||
|
alerts.map((alert) => <div key={alert.id} className='alert-card'>
|
||||||
|
{alert.message}
|
||||||
|
{alert.createdAt}
|
||||||
|
</div>)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Alerts;
|
||||||
9
src/components/Calibrations.css
Normal file
9
src/components/Calibrations.css
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
.page-title {
|
||||||
|
/* width: 100vw; */
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
background: rgb(207, 235, 250);
|
||||||
|
color: black;
|
||||||
|
font-size: 30px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
78
src/components/Calibrations.js
Normal file
78
src/components/Calibrations.js
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
import { query, collection, onSnapshot } from 'firebase/firestore';
|
||||||
|
import Dropdown from 'react-dropdown';
|
||||||
|
import 'react-dropdown/style.css';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
import db from '../firebase';
|
||||||
|
import './Calibrations.css';
|
||||||
|
|
||||||
|
const Calibrations = () => {
|
||||||
|
const [device, setDevice] = useState("Select a device");
|
||||||
|
const [devices, setDevices] = useState([]);
|
||||||
|
const [curDeviceData, setCurDeviceData] = useState(null);
|
||||||
|
|
||||||
|
const changeDevice = ({ value }) => {
|
||||||
|
setDevice(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleShowDevice = () => {
|
||||||
|
console.log(devices.filter(x => x.deviceId === device))
|
||||||
|
setCurDeviceData(devices.find(x => x.deviceId === device));
|
||||||
|
// if (!device) {
|
||||||
|
// setCurDeviceData(devices.filter(x => x.deviceId === device));
|
||||||
|
// } else {
|
||||||
|
// setDevice(null);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!devices?.length) {
|
||||||
|
const q = query(collection(db, "devices"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const testDevices = [];
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
const deviceData = document.data();
|
||||||
|
testDevices.push(deviceData);
|
||||||
|
});
|
||||||
|
setDevices(testDevices);
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}
|
||||||
|
}, [device, curDeviceData]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="calibrations-page">
|
||||||
|
<div className='page-title'>Calibrations</div>
|
||||||
|
<div className='dropdown-group'>
|
||||||
|
<Dropdown className='device-dropdown' options={devices?.map(x => x.deviceId)} onChange={changeDevice} value={device} placeholder="Select an device" />
|
||||||
|
|
||||||
|
<button className='clear-button' onClick={toggleShowDevice}><img className="graph-icon" src={require('../assets/graph_icon.png')} alt='icon'></img>{device ? 'Clear' : 'Show'}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='graph-person-conatiner'>
|
||||||
|
{curDeviceData && <div className='test-details'>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>key</th>
|
||||||
|
<th>value</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>device</td> <td>{curDeviceData?.deviceId} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>calibratedAt</td> <td>{curDeviceData?.calibratedAt} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>coefficients</td> <td>{curDeviceData?.coefficients?.toString()} </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Calibrations;
|
||||||
0
src/components/Card.css
Normal file
0
src/components/Card.css
Normal file
@@ -1,13 +1,55 @@
|
|||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
import Odometer from 'react-odometerjs';
|
||||||
|
|
||||||
|
import './Card.css'; // Import your CSS file
|
||||||
|
import 'odometer/themes/odometer-theme-default.css';
|
||||||
|
|
||||||
const Card = ({ title, counter, color, backgroundColor }) => {
|
const Card = ({ title, counter, color, backgroundColor }) => {
|
||||||
|
const [animatedCounter, setAnimatedCounter] = useState(0);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const updateCounter = () => {
|
||||||
|
// Set the maximum number of iterations for the animation
|
||||||
|
const maxIterations = 50;
|
||||||
|
|
||||||
|
// Calculate the step value for each iteration
|
||||||
|
const step = Math.ceil(counter / maxIterations);
|
||||||
|
|
||||||
|
// Use setInterval to increment the counter gradually
|
||||||
|
const intervalId = setInterval(() => {
|
||||||
|
setAnimatedCounter((prevCounter) => {
|
||||||
|
const newCounter = prevCounter + step;
|
||||||
|
|
||||||
|
// Stop the animation when the counter reaches its final value
|
||||||
|
if (newCounter >= counter) {
|
||||||
|
clearInterval(intervalId);
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newCounter;
|
||||||
|
});
|
||||||
|
}, 30); // Adjust the duration of each iteration as needed
|
||||||
|
|
||||||
|
// Clear the interval when the component is unmounted
|
||||||
|
return () => clearInterval(intervalId);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Call the updateCounter function when the component mounts or the counter value changes
|
||||||
|
updateCounter();
|
||||||
|
}, [counter]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='numeric-card' style={{color: color, backgroundColor: backgroundColor}}>
|
<div className='numeric-card' style={{ color, backgroundColor }}>
|
||||||
<div className='card-title'>
|
<div className='card-title'>{title}</div>
|
||||||
{title}
|
|
||||||
</div>
|
|
||||||
<div className='card-data'>
|
<div className='card-data'>
|
||||||
{counter}
|
{/* <div className='odometer'>
|
||||||
|
<div>{animatedCounter}</div>
|
||||||
|
</div> */}
|
||||||
|
|
||||||
|
<Odometer value={counter} style={{ cursor: 'pointer' }} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
export default Card;
|
export default Card;
|
||||||
@@ -2,12 +2,14 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.insights-title {
|
||||||
|
/* width: 100vw; */
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: rgb(215, 192, 252);
|
background: rgb(207, 235, 250);
|
||||||
color: black;
|
color: black;
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
|
font-family: sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.device-dropdown {
|
.device-dropdown {
|
||||||
@@ -79,7 +81,7 @@
|
|||||||
background-color: rgb(207, 235, 250);
|
background-color: rgb(207, 235, 250);
|
||||||
width: 10vw;
|
width: 10vw;
|
||||||
height: 5vh;
|
height: 5vh;
|
||||||
margin: 5px;
|
/* margin: 5px; */
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
font-size: medium;
|
font-size: medium;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState, useRef } from 'react';
|
||||||
import { query, collection, onSnapshot } from 'firebase/firestore';
|
import { query, collection, onSnapshot } from 'firebase/firestore';
|
||||||
import Dropdown from 'react-dropdown';
|
import Dropdown from 'react-dropdown';
|
||||||
import 'react-dropdown/style.css';
|
import 'react-dropdown/style.css';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
import Select from 'react-select';
|
||||||
|
|
||||||
import DeviceGraph from "./DeviceGraph";
|
import DeviceGraph from "./DeviceGraph";
|
||||||
import db from '../firebase';
|
import db from '../firebase';
|
||||||
@@ -18,11 +19,15 @@ const Devices = () => {
|
|||||||
const [tests, setTests] = useState([]);
|
const [tests, setTests] = useState([]);
|
||||||
const [allTests, setAllTests] = useState(null);
|
const [allTests, setAllTests] = useState(null);
|
||||||
const [showGraph, setShowGraph] = useState(false);
|
const [showGraph, setShowGraph] = useState(false);
|
||||||
|
const selectDateDropdownRef = useRef();
|
||||||
|
const selectTestDropdownRef = useRef();
|
||||||
|
|
||||||
const changeDevice = ({ value }) => {
|
const changeDevice = ({ value }) => {
|
||||||
setDevice(value);
|
setDevice(value);
|
||||||
setTestDate(null);
|
setTestDate(null);
|
||||||
setCurTest(null);
|
setCurTest(null);
|
||||||
|
selectDateDropdownRef.current?.setValue("");
|
||||||
|
selectTestDropdownRef.current?.setValue("");
|
||||||
setDays([...new Set(allTests
|
setDays([...new Set(allTests
|
||||||
.filter((x) => x.deviceSerialNumber === value)
|
.filter((x) => x.deviceSerialNumber === value)
|
||||||
.map(x => moment(x.testTime).format("YYYY-MM-DD")))]
|
.map(x => moment(x.testTime).format("YYYY-MM-DD")))]
|
||||||
@@ -32,6 +37,7 @@ const Devices = () => {
|
|||||||
|
|
||||||
const changeTestDate = ({ value }) => {
|
const changeTestDate = ({ value }) => {
|
||||||
setTestDate(value);
|
setTestDate(value);
|
||||||
|
selectTestDropdownRef.current?.setValue("");
|
||||||
setCurTest(null);
|
setCurTest(null);
|
||||||
setCurTestData(null);
|
setCurTestData(null);
|
||||||
setShowGraph(false);
|
setShowGraph(false);
|
||||||
@@ -84,22 +90,45 @@ const Devices = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="devices-page">
|
<div className="devices-page">
|
||||||
<div className='title'>Insights</div>
|
<div className='insights-title'>Insights</div>
|
||||||
<div className='dropdown-group'>
|
<div className='dropdown-group'>
|
||||||
<Dropdown className='device-dropdown' options={devices} onChange={changeDevice} value={device} placeholder="Select an device" />
|
{/* <Dropdown className='device-dropdown' options={devices} onChange={changeDevice} value={device} placeholder="Select an device" />
|
||||||
<Dropdown className='day-dropdown' options={days} onChange={changeTestDate} value={testDate} placeholder="Select an test date" />
|
<Dropdown className='day-dropdown' options={days} onChange={changeTestDate} value={testDate} placeholder="Select an test date" />
|
||||||
<Dropdown className='test-dropdown' options={tests} onChange={changeTest} value={curTest} placeholder="Select an test" />
|
<Dropdown className='test-dropdown' options={tests} onChange={changeTest} value={curTest} placeholder="Select an test" /> */}
|
||||||
|
|
||||||
{/* <Select className='device-dropdown' options={devices.map(x => { return { value: x, label: x }; })} menuPlacement='auto' maxMenuHeight={250} menuShouldScrollIntoView={true} onChange={changeDevice} />
|
<Select
|
||||||
<Select className='day-dropdown' options={days.map(x => { return { value: x, label: x }; })} menuPlacement='auto' maxMenuHeight={250} menuShouldScrollIntoView={true} onChange={changeTestDate} />
|
className='device-dropdown'
|
||||||
<Select className='test-dropdown' options={tests.map(x => { return { value: x, label: x }; })} menuPlacement='auto' maxMenuHeight={220} menuShouldScrollIntoView={true} onChange={changeTestDate} /> */}
|
defaultValue={{ label: "Select a device", value: "Select a device" }}
|
||||||
|
options={devices.map(x => { return { value: x, label: x }; })}
|
||||||
|
menuPlacement='auto'
|
||||||
|
maxMenuHeight={250}
|
||||||
|
menuShouldScrollIntoView={true}
|
||||||
|
onChange={changeDevice} />
|
||||||
|
<Select
|
||||||
|
ref={selectDateDropdownRef}
|
||||||
|
className='day-dropdown'
|
||||||
|
defaultValue={{ label: "Select a test date", value: "Select a test date" }}
|
||||||
|
options={days.map(x => { return { value: x, label: x }; })}
|
||||||
|
menuPlacement='auto'
|
||||||
|
maxMenuHeight={250}
|
||||||
|
menuShouldScrollIntoView={true}
|
||||||
|
onChange={changeTestDate} />
|
||||||
|
<Select
|
||||||
|
ref={selectTestDropdownRef}
|
||||||
|
className='test-dropdown'
|
||||||
|
defaultValue={{ label: "Select a test", value: "Select a test" }}
|
||||||
|
options={tests.map(x => { return { value: x, label: x }; })}
|
||||||
|
menuPlacement='auto'
|
||||||
|
maxMenuHeight={220}
|
||||||
|
menuShouldScrollIntoView={true}
|
||||||
|
onChange={changeTest} />
|
||||||
|
|
||||||
<button className='clear-button' onClick={toggleShowGraph}><img className="graph-icon" src={require('../assets/graph_icon.png')} alt='icon'></img>{curTestData ? 'Clear' : 'Show'}</button>
|
<button className='clear-button' onClick={toggleShowGraph}><img className="graph-icon" src={require('../assets/graph_icon.png')} alt='icon'></img>{curTestData ? 'Clear' : 'Show'}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='graph-person-conatiner'>
|
<div className='graph-person-conatiner'>
|
||||||
{!curTestData && <div className='refresh-graph-message'>Select test device, date and person to get the detailed graph. Then, click show button to render graph.</div>}
|
{!curTestData && <div className='refresh-graph-message'>Select test device, date and person to get the detailed graph. Then, click show button to render graph.</div>}
|
||||||
{curTestData?.csvPath && <DeviceGraph url={curTestData?.csvPath} show={showGraph} />}
|
{curTestData?.csvPath && curTestData?.testType !== 'HEMOCUBE' && <DeviceGraph url={curTestData?.csvPath} show={showGraph} />}
|
||||||
|
|
||||||
{curTestData && <div className='test-details'>
|
{curTestData && <div className='test-details'>
|
||||||
<table>
|
<table>
|
||||||
@@ -122,6 +151,26 @@ const Devices = () => {
|
|||||||
<tr>
|
<tr>
|
||||||
<td>result</td> <td>{curTestData?.result}</td>
|
<td>result</td> <td>{curTestData?.result}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{curTestData?.testType === 'HEMOCUBE' && <tr>
|
||||||
|
<td>calculatedRatio</td>
|
||||||
|
<td>{curTestData?.calculatedRatio}</td>
|
||||||
|
</tr>}
|
||||||
|
{curTestData?.testType === 'HEMOCUBE' && <tr>
|
||||||
|
<td>deviceRatio</td>
|
||||||
|
<td>{curTestData?.deviceRatio}</td>
|
||||||
|
</tr>}
|
||||||
|
{curTestData?.testType === 'HEMOCUBE' && <tr>
|
||||||
|
<td>green led Average</td>
|
||||||
|
<td>{curTestData?.led1Average}</td>
|
||||||
|
</tr>}
|
||||||
|
{curTestData?.testType === 'HEMOCUBE' && <tr>
|
||||||
|
<td>blue led Average</td>
|
||||||
|
<td>{curTestData?.led2Average}</td>
|
||||||
|
</tr>}
|
||||||
|
{curTestData?.testType === 'HEMOCUBE' && <tr>
|
||||||
|
<td>blue led Average</td>
|
||||||
|
<td>{curTestData?.led2Average}</td>
|
||||||
|
</tr>}
|
||||||
</table>
|
</table>
|
||||||
{/* <img src={curTestData?.userImageURL} width={100} height={150} /> */}
|
{/* <img src={curTestData?.userImageURL} width={100} height={150} /> */}
|
||||||
</div>}
|
</div>}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
.locations-card {
|
.locations-card {
|
||||||
width: 40vw;
|
width: 40vw;
|
||||||
height: 45vh;
|
height: 40vh;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
.locations-graph-card {
|
.locations-graph-card {
|
||||||
width: 40vw;
|
width: 40vw;
|
||||||
height: 45vh;
|
height: 40vh;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
.locations-card-title {
|
.locations-card-title {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
padding-top: 10px;
|
/* padding-top: 10px; */
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|||||||
31
src/components/Samples.css
Normal file
31
src/components/Samples.css
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
.samples-card {
|
||||||
|
width: 35vw;
|
||||||
|
height: 25vh;
|
||||||
|
background-color: white;
|
||||||
|
margin: 1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgb(219, 219, 219);
|
||||||
|
border-radius: 6px;
|
||||||
|
border-width: max(1px, 0.0625rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.samples-heading {
|
||||||
|
margin: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sample-classification {
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sample-time {
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sample-time-ago {
|
||||||
|
font-size: x-small;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-samples-message {
|
||||||
|
margin: 35px;
|
||||||
|
}
|
||||||
51
src/components/Samples.js
Normal file
51
src/components/Samples.js
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import React, { useEffect, useState, useRef } from 'react';
|
||||||
|
import { query, collection, onSnapshot, where, orderBy } from 'firebase/firestore';
|
||||||
|
|
||||||
|
import './Samples.css';
|
||||||
|
import db from '../firebase';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
const Samples = () => {
|
||||||
|
const [samples, setSamples] = useState([]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!samples.length) {
|
||||||
|
const q = query(collection(db, "testData"), where("testTime", ">=", moment().format("YYYY-MM-DD")), orderBy("testTime", "desc"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const samples = [];
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
console.log(document.data());
|
||||||
|
const alert = document.data();
|
||||||
|
samples.push(alert);
|
||||||
|
});
|
||||||
|
setSamples(samples);
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className='samples-heading'><h3>Samples page for denovix useage</h3></div>
|
||||||
|
{samples.length ? (
|
||||||
|
samples.map((alert, index) => (
|
||||||
|
<div key={index} className='samples-card'>
|
||||||
|
<div tabIndex={index}><strong>{alert._id}</strong></div>
|
||||||
|
<p className='sample-classification'>{alert.classificationResult}</p>
|
||||||
|
<p className='sample-classification'>{alert.deviceSerialNumber}</p>
|
||||||
|
<p className='sample-classification'>led1Buffer: {alert.led1Buffer}</p>
|
||||||
|
<p className='sample-classification'>led2Buffer: {alert.led2Buffer}</p>
|
||||||
|
<p className='sample-time'>{alert.testTime}</p>
|
||||||
|
<p className='sample-time-ago'>{moment(alert.testTime).fromNow()}</p>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
) : (
|
||||||
|
<div className='no-samples-message'>No tests are conducted today</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Samples;
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
.resultratio-graph-card {
|
.resultratio-graph-card {
|
||||||
width: 40vw;
|
width: 40vw;
|
||||||
height: 45vh;
|
height: 40vh;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
|||||||
@@ -19,12 +19,10 @@ class ScatterPlot extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
drawChart(data) {
|
drawChart(data) {
|
||||||
console.log(data);
|
|
||||||
|
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
|
|
||||||
// set the dimensions and margins of the graph
|
// set the dimensions and margins of the graph
|
||||||
var margin = { top: 10, right: 30, bottom: 30, left: 60 },
|
var margin = { top: 10, right: 30, bottom: 40, left: 60 },
|
||||||
width = 460 - margin.left - margin.right,
|
width = 460 - margin.left - margin.right,
|
||||||
height = 250 - margin.top - margin.bottom;
|
height = 250 - margin.top - margin.bottom;
|
||||||
|
|
||||||
@@ -37,11 +35,9 @@ class ScatterPlot extends Component {
|
|||||||
.attr("transform",
|
.attr("transform",
|
||||||
"translate(" + margin.left + "," + margin.top + ")");
|
"translate(" + margin.left + "," + margin.top + ")");
|
||||||
|
|
||||||
//Read the data
|
|
||||||
|
|
||||||
// Add X axis
|
// Add X axis
|
||||||
var x = d3.scaleLinear()
|
var x = d3.scaleLinear()
|
||||||
.domain([0, 100])
|
.domain([0, 50])
|
||||||
.range([0, width]);
|
.range([0, width]);
|
||||||
svg.append("g")
|
svg.append("g")
|
||||||
.attr("transform", "translate(0," + height + ")")
|
.attr("transform", "translate(0," + height + ")")
|
||||||
@@ -49,7 +45,7 @@ class ScatterPlot extends Component {
|
|||||||
|
|
||||||
// Add Y axis
|
// Add Y axis
|
||||||
var y = d3.scaleLinear()
|
var y = d3.scaleLinear()
|
||||||
.domain([0, 2])
|
.domain([0, 1.2])
|
||||||
.range([height, 0]);
|
.range([height, 0]);
|
||||||
svg.append("g")
|
svg.append("g")
|
||||||
.call(d3.axisLeft(y));
|
.call(d3.axisLeft(y));
|
||||||
@@ -61,7 +57,7 @@ class ScatterPlot extends Component {
|
|||||||
.enter()
|
.enter()
|
||||||
.append("circle")
|
.append("circle")
|
||||||
.attr("cx", function (d, i) { return x(2023 - d.birthYear); })
|
.attr("cx", function (d, i) { return x(2023 - d.birthYear); })
|
||||||
.attr("cy", function (d) { return y(d.resultRatio); })
|
.attr("cy", function (d) { return y(d.resultRatio || d.calculatedRatio); })
|
||||||
.attr("r", 1.5)
|
.attr("r", 1.5)
|
||||||
.style("fill", "#69b3a2")
|
.style("fill", "#69b3a2")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,38 @@
|
|||||||
.container {
|
.analytics-page::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.analytics-title::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.analytics-page {
|
||||||
|
width: 100vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.analytics-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
height: 50vh;
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.analytics-title {
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
background: rgb(207, 235, 250);
|
||||||
|
color: black;
|
||||||
|
font-size: 30px;
|
||||||
|
font-family: sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 900px) {
|
@media screen and (min-width: 900px) {
|
||||||
.container {
|
.analytics-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
height: 50vh;
|
height: 45vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,6 +53,9 @@ const TestAnalytics = () => {
|
|||||||
const dailyCountsList = Object.entries(dailyCounts).sort().map(x => {
|
const dailyCountsList = Object.entries(dailyCounts).sort().map(x => {
|
||||||
return { date: x[0], count: x[1] };
|
return { date: x[0], count: x[1] };
|
||||||
});
|
});
|
||||||
|
if (dailyCountsList?.length > 7)
|
||||||
|
setDailyResults(dailyCountsList.slice(dailyCountsList.length - 7, dailyCountsList.length));
|
||||||
|
else
|
||||||
setDailyResults(dailyCountsList);
|
setDailyResults(dailyCountsList);
|
||||||
const rss = _.groupBy(hposTests, function (test) {
|
const rss = _.groupBy(hposTests, function (test) {
|
||||||
return moment(test.testTime).startOf('day').format();
|
return moment(test.testTime).startOf('day').format();
|
||||||
@@ -64,7 +67,7 @@ const TestAnalytics = () => {
|
|||||||
const todaysTests = hposTests.filter((x) => moment(x.testTime).isBetween(moment(lastTestedDate).startOf('day'), moment(lastTestedDate).endOf('day')));
|
const todaysTests = hposTests.filter((x) => moment(x.testTime).isBetween(moment(lastTestedDate).startOf('day'), moment(lastTestedDate).endOf('day')));
|
||||||
setCurDayTests(todaysTests);
|
setCurDayTests(todaysTests);
|
||||||
const dailyCategoryCounts = todaysTests.reduce(function (result, test) {
|
const dailyCategoryCounts = todaysTests.reduce(function (result, test) {
|
||||||
const category = test.result;
|
const category = test.classificationResult;
|
||||||
if (!result[category]) {
|
if (!result[category]) {
|
||||||
result[category] = 0;
|
result[category] = 0;
|
||||||
}
|
}
|
||||||
@@ -82,8 +85,8 @@ const TestAnalytics = () => {
|
|||||||
}, [curTestData, curTest, device, testDate]);
|
}, [curTestData, curTest, device, testDate]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="devices-page">
|
<div className="analytics-page">
|
||||||
<div className='title'>Analytics</div>
|
<div className='analytics-title'>Analytics</div>
|
||||||
{/* <div className='dropdown-group'>
|
{/* <div className='dropdown-group'>
|
||||||
<Dropdown className='device-dropdown' options={devices} onChange={changeDevice} value={device} placeholder="Select an device" />
|
<Dropdown className='device-dropdown' options={devices} onChange={changeDevice} value={device} placeholder="Select an device" />
|
||||||
<Dropdown className='day-dropdown' options={days} onChange={changeTestDate} value={testDate} placeholder="Select an test date" />
|
<Dropdown className='day-dropdown' options={days} onChange={changeTestDate} value={testDate} placeholder="Select an test date" />
|
||||||
@@ -92,11 +95,11 @@ const TestAnalytics = () => {
|
|||||||
<button className='clear-button' onClick={toggleShowGraph}><img className="graph-icon" src={require('./graph_icon.png')}></img>{curTestData ? 'Clear' : 'Show'}</button>
|
<button className='clear-button' onClick={toggleShowGraph}><img className="graph-icon" src={require('./graph_icon.png')}></img>{curTestData ? 'Clear' : 'Show'}</button>
|
||||||
</div> */}
|
</div> */}
|
||||||
|
|
||||||
<div className='container'>
|
<div className='analytics-container'>
|
||||||
{dailyCategoryCounts && <TestAnalyticsPie data={dailyCategoryCounts} />}
|
{dailyCategoryCounts && <TestAnalyticsPie data={dailyCategoryCounts} />}
|
||||||
{dailyResults && <TestAnalyticsGraph data={dailyResults} />}
|
{dailyResults && <TestAnalyticsGraph data={dailyResults} />}
|
||||||
</div>
|
</div>
|
||||||
<div className='container'>
|
<div className='analytics-container'>
|
||||||
{allTests && <ScatterPlot data={allTests} />}
|
{allTests && <ScatterPlot data={allTests} />}
|
||||||
{allTests && <Locations />}
|
{allTests && <Locations />}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
.tests-count-card {
|
.tests-count-card {
|
||||||
width: 40vw;
|
width: 40vw;
|
||||||
height: 45vh;
|
height: 40vh;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
/* display: flex;
|
/* display: flex;
|
||||||
@@ -59,3 +59,17 @@
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div#tests-count-graph {
|
||||||
|
height: 250px;
|
||||||
|
width: 450px;
|
||||||
|
/* border: 2px solid #000; */
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg#bargraph {
|
||||||
|
height: 240px; /* 500px; */
|
||||||
|
width: 450px; /* 1100px; */
|
||||||
|
/* border: 1px dotted #ccc; */
|
||||||
|
/* background-color: #ccc; */
|
||||||
|
}
|
||||||
@@ -23,13 +23,14 @@ class TestAnalyticsGraph extends Component {
|
|||||||
drawBar(data) {
|
drawBar(data) {
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
|
|
||||||
data.reverse();
|
// data.reverse();
|
||||||
|
|
||||||
var margin = { top: 60, right: 20, bottom: 30, left: 50 },
|
var margin = { top: 30, right: 20, bottom: 50, left: 55 },
|
||||||
width = 520 - margin.left - margin.right,
|
width = 440 - margin.left - margin.right,
|
||||||
height = 220 - margin.top - margin.bottom;
|
height = 250 - margin.top - margin.bottom;
|
||||||
|
|
||||||
var svg = d3.select("#tests-count-graph").append('svg')
|
var svg = d3.select("#tests-count-graph").append('svg')
|
||||||
|
.attr("id", "bargraph")
|
||||||
.attr("width", width + margin.left + margin.right)
|
.attr("width", width + margin.left + margin.right)
|
||||||
.attr("height", height + margin.top + margin.bottom)
|
.attr("height", height + margin.top + margin.bottom)
|
||||||
.append("g").attr("transform",
|
.append("g").attr("transform",
|
||||||
@@ -40,7 +41,7 @@ class TestAnalyticsGraph extends Component {
|
|||||||
yScale = d3.scaleLinear().range([height, 0]);
|
yScale = d3.scaleLinear().range([height, 0]);
|
||||||
|
|
||||||
var g = svg.append("g")
|
var g = svg.append("g")
|
||||||
.attr("transform", "translate(" + 10 + "," + 10 + ")");
|
.attr("transform", "translate(" + 5 + "," + 5 + ")");
|
||||||
|
|
||||||
|
|
||||||
xScale.domain(data.map(function (d) { return moment(d.date).format("MM-DD"); }));
|
xScale.domain(data.map(function (d) { return moment(d.date).format("MM-DD"); }));
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
.category-graph-card {
|
.category-graph-card {
|
||||||
width: 40vw;
|
width: 40vw;
|
||||||
height: 45vh;
|
height: 40vh;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
@@ -55,3 +55,37 @@
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.category-tooltip {
|
||||||
|
max-width: 200px;
|
||||||
|
/* padding: 0.5rem 0.75rem; */
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #000;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
line-height: 1rem;
|
||||||
|
font-weight: 400;
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
padding-left: 0.75rem;
|
||||||
|
padding-right: 0.75rem;
|
||||||
|
word-wrap: break-word;
|
||||||
|
/* position: absolute; */
|
||||||
|
/* will-change: transform; */
|
||||||
|
/* top: 0px; */
|
||||||
|
/* left: 0px; */
|
||||||
|
/* transform: translate3d(590px, 403px, 0px); */
|
||||||
|
font-family: "Segoe UI", Roboto, "Noto Sans", Ubuntu, Cantarell, "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||||
|
font-style: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
/* text-align: left; */
|
||||||
|
/* text-align: start; */
|
||||||
|
text-shadow: none;
|
||||||
|
text-transform: none;
|
||||||
|
letter-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
white-space: normal;
|
||||||
|
word-spacing: normal;
|
||||||
|
line-break: auto;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
@@ -24,7 +24,7 @@ class TestAnalyticsPie extends Component {
|
|||||||
drawChart(data) {
|
drawChart(data) {
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
|
|
||||||
var margin = { top: 30, right: 10, bottom: 15, left: 25 },
|
var margin = { top: 15, right: 10, bottom: 45, left: 10 },
|
||||||
width = 480 - margin.left - margin.right,
|
width = 480 - margin.left - margin.right,
|
||||||
height = 250 - margin.top - margin.bottom,
|
height = 250 - margin.top - margin.bottom,
|
||||||
radius = Math.min(width, height) / 2;
|
radius = Math.min(width, height) / 2;
|
||||||
@@ -64,26 +64,26 @@ class TestAnalyticsPie extends Component {
|
|||||||
.style("position", "absolute")
|
.style("position", "absolute")
|
||||||
.style("z-index", "10")
|
.style("z-index", "10")
|
||||||
.style("visibility", "hidden")
|
.style("visibility", "hidden")
|
||||||
.style("background", "#fff")
|
// .style("background", "#fff")
|
||||||
.text("a simple tooltip");
|
.text("a simple tooltip");
|
||||||
|
|
||||||
arc.append("path")
|
arc.append("path")
|
||||||
.attr("d", path)
|
.attr("d", path)
|
||||||
.attr("fill", function (d) { return color(d.data.category); })
|
.attr("fill", function (d) { return color(d.data.category); })
|
||||||
.on('mouseover', (event, d) => {
|
.on('mouseover', (event, d) => {
|
||||||
tooltip.text(`${d.data.category}: ${d.data.count}, ${Math.floor(100 * d.data.count / data.reduce((a, c) => a + c.count, 0)).toFixed(2)}%`);
|
tooltip.text(`${d.data.category} => count: ${d.data.count}, percent: ${Math.floor(100 * d.data.count / data.reduce((a, c) => a + c.count, 0)).toFixed(2)}%`);
|
||||||
return tooltip
|
return tooltip
|
||||||
.style("visibility", "visible")
|
.style("visibility", "visible")
|
||||||
.style("font-size", "0.65em")
|
// .style("font-size", "0.65em")
|
||||||
.style("font-weight", "600")
|
.style("font-weight", "600")
|
||||||
.style("z-index", "9999")
|
.style("z-index", "9999")
|
||||||
.style("width", "200px")
|
// .style("width", "200px")
|
||||||
.style("height", "50px")
|
// .style("height", "50px")
|
||||||
.style("display", "flex")
|
.style("display", "flex")
|
||||||
.style("align-items", "center")
|
.style("align-items", "center")
|
||||||
.style("justify-content", "center")
|
.style("justify-content", "center")
|
||||||
.style("border-radius", "3px")
|
// .style("border-radius", "3px")
|
||||||
.style("box-shadow", "1px 1px 1px 1px #888888");
|
// .style("box-shadow", "1px 1px 1px 1px #888888");
|
||||||
})
|
})
|
||||||
.on('mouseout', (event, d) => {
|
.on('mouseout', (event, d) => {
|
||||||
return tooltip
|
return tooltip
|
||||||
|
|||||||
0
src/components/Users.css
Normal file
0
src/components/Users.css
Normal file
49
src/components/Users.js
Normal file
49
src/components/Users.js
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import React, { useEffect, useState, useRef } from 'react';
|
||||||
|
import { query, collection, onSnapshot, where, orderBy } from 'firebase/firestore';
|
||||||
|
|
||||||
|
import './Samples.css';
|
||||||
|
import db from '../firebase';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
const Users = () => {
|
||||||
|
const [samples, setSamples] = useState([]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!samples.length) {
|
||||||
|
const q = query(collection(db, "patientData"), where("createdAt", ">=", moment().format("YYYY-MM-DD")), orderBy("createdAt", "desc"));
|
||||||
|
|
||||||
|
const unsub = onSnapshot(q, (querySnapshot) => {
|
||||||
|
const samples = [];
|
||||||
|
querySnapshot.forEach((document) => {
|
||||||
|
console.log(document.data());
|
||||||
|
const alert = document.data();
|
||||||
|
samples.push(alert);
|
||||||
|
});
|
||||||
|
setSamples(samples);
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => unsub;
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className='samples-heading'><h3>Users page for denovix useage</h3></div>
|
||||||
|
{samples.length ? (
|
||||||
|
samples.map((alert, index) => (
|
||||||
|
<div key={index} className='samples-card'>
|
||||||
|
<div tabIndex={index}><strong>{alert._id}</strong></div>
|
||||||
|
<p className='sample-classification'>{alert.registrationCenterName}</p>
|
||||||
|
{/* <p className='sample-classification'>{alert.deviceSerialNumber}</p> */}
|
||||||
|
{/* <p className='sample-time'>Test Status: {alert.testStatus}</p> */}
|
||||||
|
<p className='sample-time-ago'>{moment(alert.createdAt).fromNow()}</p>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
) : (
|
||||||
|
<div className='no-samples-message'>No tests are conducted today</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Users;
|
||||||
@@ -44,7 +44,7 @@ const WorldMap = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<svg width={ '40vw' } height={ '50vh' } viewBox="0 0 800 450">
|
<svg width={ '40vw' } height={ '35vh' } viewBox="0 0 800 450">
|
||||||
<g className="countries">
|
<g className="countries">
|
||||||
{
|
{
|
||||||
geographies.map((d,i) => (
|
geographies.map((d,i) => (
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
const constants = {
|
const constants = {
|
||||||
categoryshortname: {
|
categoryshortname: {
|
||||||
"SICKLECELLTRAIT": "Trait",
|
"Sickle Cell Trait": "Trait",
|
||||||
"SICKLECELLDISEASE": "Disease",
|
"Sickle Cell Disease": "Disease",
|
||||||
"NEGATIVEBORDERLINE": "-Borderline",
|
"Negative Borderline. Repeat Test": "-Borderline",
|
||||||
"POSITIVEBORDERLINE": "+Borderline",
|
"Positive for Sickle Cell. HPLC for Confirmation": "+Borderline",
|
||||||
"NORMAL": "Normal",
|
"Normal": "Normal",
|
||||||
|
"Inconclusive. Very low Absorbance - Repeat test with Higher Blood Volume": "Inconclusive - Low Abs",
|
||||||
|
"Inconclusive. Repeat with test with lower volume of blood": "Inconclusive - Low vol. retest",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,18 @@ import { getAnalytics } from "firebase/analytics";
|
|||||||
// };
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
// /* preprod */
|
||||||
|
// const firebaseConfig = {
|
||||||
|
// apiKey: "AIzaSyB2-suWmKh2PgQbRmx7rzPjYhgoovQIsQ8",
|
||||||
|
// authDomain: "hpos-preprod.firebaseapp.com",
|
||||||
|
// projectId: "hpos-preprod",
|
||||||
|
// storageBucket: "hpos-preprod.appspot.com",
|
||||||
|
// messagingSenderId: "121176529204",
|
||||||
|
// appId: "1:121176529204:web:6c0db8e642992192bbed61",
|
||||||
|
// measurementId: "G-GYM6LRQ8KR"
|
||||||
|
// };
|
||||||
|
|
||||||
|
|
||||||
/* prod */
|
/* prod */
|
||||||
const firebaseConfig = {
|
const firebaseConfig = {
|
||||||
apiKey: "AIzaSyBF4pLZReAedU4dWX1eRJNFNIaOIz2xk4s",
|
apiKey: "AIzaSyBF4pLZReAedU4dWX1eRJNFNIaOIz2xk4s",
|
||||||
|
|||||||
27
src/index.js
27
src/index.js
@@ -6,11 +6,16 @@ import {
|
|||||||
} from "react-router-dom";
|
} from "react-router-dom";
|
||||||
import './index.css';
|
import './index.css';
|
||||||
import App from './App';
|
import App from './App';
|
||||||
|
import AppOp from './AppOp';
|
||||||
import reportWebVitals from './reportWebVitals';
|
import reportWebVitals from './reportWebVitals';
|
||||||
import Devices from './components/Devices';
|
import Devices from './components/Devices';
|
||||||
import TestAnalytics from './components/TestAnalytics';
|
import TestAnalytics from './components/TestAnalytics';
|
||||||
import WorldMap from './components/WorldMap';
|
import WorldMap from './components/WorldMap';
|
||||||
import RegistraionChart from './RegistraionChart';
|
import RegistraionChart from './RegistraionChart';
|
||||||
|
import Calibrations from './components/Calibrations';
|
||||||
|
import Alerts from './components/Alerts';
|
||||||
|
import Samples from './components/Samples';
|
||||||
|
import Users from './components/Users';
|
||||||
|
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
@@ -32,7 +37,27 @@ const router = createBrowserRouter([
|
|||||||
{
|
{
|
||||||
path: "/map",
|
path: "/map",
|
||||||
element: <RegistraionChart />,
|
element: <RegistraionChart />,
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
path: "/calibrations",
|
||||||
|
element: <Calibrations />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/op",
|
||||||
|
element: <AppOp />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/alerts",
|
||||||
|
element: <Alerts />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/samples",
|
||||||
|
element: <Samples />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/users",
|
||||||
|
element: <Users />,
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user