박권수

feat. 병원 검색 api

...@@ -5,6 +5,7 @@ const Profile = require('../../models/profile'); ...@@ -5,6 +5,7 @@ const Profile = require('../../models/profile');
5 const DoctorInfo = require('../../models/doctorInfo'); 5 const DoctorInfo = require('../../models/doctorInfo');
6 const Joi = require('joi'); 6 const Joi = require('joi');
7 const jwt = require('jsonwebtoken'); 7 const jwt = require('jsonwebtoken');
8 +const axios = require('axios');
8 9
9 10
10 exports.register = async(ctx) => { 11 exports.register = async(ctx) => {
...@@ -66,6 +67,26 @@ exports.register = async(ctx) => { ...@@ -66,6 +67,26 @@ exports.register = async(ctx) => {
66 67
67 }; 68 };
68 69
70 +exports.searchHospital = async ctx => {
71 + const {
72 + hospitalNm,
73 + page,
74 + } = ctx.query;
75 +
76 + const url = 'http://apis.data.go.kr/B551182/hospInfoService1/getHospBasisList1';
77 + let queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + process.env.SERVICE_KEY;
78 + queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent(page);
79 + queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent(10);
80 + queryParams += '&' + encodeURIComponent('yadmNm') + '=' + encodeURIComponent(hospitalNm);
81 +
82 + const result = await axios.get(url + queryParams);
83 +
84 + ctx.status = 200;
85 + ctx.body = {
86 + hospitalList : result.data.response.body.items.item,
87 + };
88 +};
89 +
69 exports.doctorRegister = async ctx => { 90 exports.doctorRegister = async ctx => {
70 const { 91 const {
71 userId, 92 userId,
......
...@@ -12,6 +12,14 @@ const auth = new Router() ...@@ -12,6 +12,14 @@ const auth = new Router()
12 auth.post('/register', authCtrl.register) 12 auth.post('/register', authCtrl.register)
13 13
14 /** 14 /**
15 + * 병원 검색
16 + * url : http://localhost:4000/api/auth/hospital
17 + * request parameter : hospitalNm
18 + * return : xml type data
19 + */
20 +auth.get('/hospital', authCtrl.searchHospital);
21 +
22 +/**
15 * 회원가입 (email type) : 의사 회원가입 23 * 회원가입 (email type) : 의사 회원가입
16 * url : http://localhost:4000/api/auth/register/doctor 24 * url : http://localhost:4000/api/auth/register/doctor
17 * request parameter : userId, password, passwordCheck, doctorInfo 25 * request parameter : userId, password, passwordCheck, doctorInfo
......
...@@ -11,6 +11,7 @@ exports.updateMedicineInfo = async() => { ...@@ -11,6 +11,7 @@ exports.updateMedicineInfo = async() => {
11 //queryUrl을 return하는 함수 : 한 페이지에 100개의 item씩 요청할 수 있다. 11 //queryUrl을 return하는 함수 : 한 페이지에 100개의 item씩 요청할 수 있다.
12 const getQueryURL = (i) => { 12 const getQueryURL = (i) => {
13 const url = 'http://apis.data.go.kr/1471000/DrbEasyDrugInfoService/getDrbEasyDrugList'; 13 const url = 'http://apis.data.go.kr/1471000/DrbEasyDrugInfoService/getDrbEasyDrugList';
14 + // eslint-disable-next-line no-undef
14 const queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + process.env.SERVICE_KEY; 15 const queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + process.env.SERVICE_KEY;
15 const pageNum = '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent(i); 16 const pageNum = '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent(i);
16 const numOfItem = '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent(100); 17 const numOfItem = '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent(100);
...@@ -24,6 +25,7 @@ const getItemsList = async(queryUrl) => { ...@@ -24,6 +25,7 @@ const getItemsList = async(queryUrl) => {
24 let i = 1, getItem = null, items = null; 25 let i = 1, getItem = null, items = null;
25 const result = []; 26 const result = [];
26 27
28 + // eslint-disable-next-line no-constant-condition
27 while(true) { 29 while(true) {
28 getItem = await axios.get(queryUrl(i)); 30 getItem = await axios.get(queryUrl(i));
29 items = getItem.data.body.items; 31 items = getItem.data.body.items;
......
1 +module.exports = {
2 + "env": {
3 + "browser": true,
4 + "es2021": true
5 + },
6 + "extends": [
7 + "eslint:recommended",
8 + "plugin:react/recommended",
9 + "plugin:@typescript-eslint/recommended"
10 + ],
11 + "parser": "@typescript-eslint/parser",
12 + "parserOptions": {
13 + "ecmaFeatures": {
14 + "jsx": true
15 + },
16 + "ecmaVersion": 12,
17 + "sourceType": "module"
18 + },
19 + "plugins": [
20 + "react",
21 + "@typescript-eslint"
22 + ],
23 + "rules": {
24 + }
25 +};
This diff could not be displayed because it is too large.