1
2
3
4
5
6
7
8
9
10
11
12
13
14 package uk.nhs.interoperability.client.samples.smsp;
15
16 import java.io.IOException;
17
18 import javax.servlet.ServletException;
19 import javax.servlet.http.HttpServlet;
20 import javax.servlet.http.HttpServletRequest;
21 import javax.servlet.http.HttpServletResponse;
22 import javax.servlet.http.HttpSession;
23 import javax.xml.parsers.ParserConfigurationException;
24
25 import org.apache.commons.lang.StringEscapeUtils;
26 import org.w3c.dom.Document;
27 import org.xml.sax.SAXException;
28
29 import uk.nhs.interoperability.infrastructure.ITKAddress;
30 import uk.nhs.interoperability.infrastructure.ITKAddressImpl;
31 import uk.nhs.interoperability.util.Logger;
32 import uk.nhs.interoperability.util.xml.DomUtils;
33
34
35
36
37
38
39
40
41 public class GetPatientDetailsByNHSNumberServlet extends HttpServlet {
42
43
44 private static final long serialVersionUID = 1L;
45
46
47
48
49 public GetPatientDetailsByNHSNumberServlet() {
50 super();
51 }
52
53
54
55
56 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57 processRequest(request, response);
58 }
59
60
61
62
63 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
64 processRequest(request, response);
65 }
66
67
68
69
70
71
72
73
74
75 private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
76
77 Logger.debug("this is GetPatientDetailsByNHSNumberServlet.processRequest");
78 String nhsNumber = request.getParameter("nhsNumber");
79 String dateOfBirth = request.getParameter("dateOfBirth");
80 String givenName = request.getParameter("givenName");
81 String surname = request.getParameter("surname");
82 String serviceAddress = request.getParameter("serviceAddress");
83 ITKAddress itkServiceAddress = new ITKAddressImpl(serviceAddress);
84
85 HttpSession session = request.getSession(true);
86 session.removeAttribute("nhsNumber");
87 session.removeAttribute("verified");
88 session.removeAttribute("responseCode");
89 session.removeAttribute("errorMessage");
90 session.removeAttribute("responseMessage");
91
92 SpineMiniServicesClient client = new SpineMiniServicesClient();
93
94 GetPatientDetailsByNHSNumberRequest doc = new GetPatientDetailsByNHSNumberRequest();
95 doc.nhsNumber = nhsNumber;
96 doc.dateOfBirth = dateOfBirth;
97 doc.givenName = givenName;
98 doc.surname = surname;
99 GetPatientDetailsByNHSNumberResponse resp = client.getPatientDetailsByNHSNumber(doc, itkServiceAddress);
100
101
102
103
104
105
106
107
108
109
110
111
112
113 if (resp == null) {
114 Logger.info("SMSP GPDBNN FAILED - No response document");
115 session.setAttribute("errorMessage", "Sorry this hasn't worked out this time. Please try again later.");
116 } else {
117 Logger.info("SMSP GPDBNN COMPLETE. RESPONSE CODE:" + resp.getResponseCode());
118 Logger.info("SMSP call succeeded");
119
120
121 session.setAttribute("nhsNumber", resp.getNhsNumber());
122 session.setAttribute("verified", Boolean.toString((resp.getVerifiedIndicator())));
123 session.setAttribute("responseCode", resp.getResponseCode());
124 try {
125 Document responseDoc = DomUtils.parse(resp.getPayload());
126 String prettyPayload = DomUtils.serialiseToXML(responseDoc, DomUtils.PRETTY_PRINT);
127 session.setAttribute("responseMessage", StringEscapeUtils.escapeHtml(prettyPayload));
128 } catch (SAXException e) {
129 Logger.error("SMSP GPDBNN FAILED - SAXException",e);
130 session.setAttribute("errorMessage", "Sorry this really hasn't worked out this time. Please try again later.");
131 } catch (ParserConfigurationException e) {
132 Logger.error("SMSP GPDBNN FAILED - ParserConfigurationException",e);
133 session.setAttribute("errorMessage", "Sorry this really hasn't worked out this time. Please try again later.");
134 }
135 }
136 response.sendRedirect("./GetPatientDetailsByNHSNumberResponse.jsp");
137
138 }
139
140 }