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 VerifyNHSNumberServlet extends HttpServlet {
42
43
44 private static final long serialVersionUID = 1L;
45
46
47
48
49 public VerifyNHSNumberServlet() {
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 System.out.println("this is VerifyNHSNumberServlet.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 postcode = request.getParameter("postcode");
83 String serviceAddress = request.getParameter("serviceAddress");
84 ITKAddress itkServiceAddress = new ITKAddressImpl(serviceAddress);
85
86 HttpSession session = request.getSession(true);
87 session.removeAttribute("nhsNumber");
88 session.removeAttribute("verified");
89 session.removeAttribute("responseCode");
90 session.removeAttribute("errorMessage");
91 session.removeAttribute("responseMessage");
92
93 SpineMiniServicesClient client = new SpineMiniServicesClient();
94
95 VerifyNHSNumberRequest doc = new VerifyNHSNumberRequest();
96 doc.nhsNumber = nhsNumber;
97 doc.dateOfBirth = dateOfBirth;
98 doc.givenName = givenName;
99 doc.surname = surname;
100 doc.postcode = postcode;
101 VerifyNHSNumberResponse resp = client.verifyNHSNumber(doc,itkServiceAddress);
102 if (resp == null) {
103 Logger.info("SMSP VNN FAILED - No response document");
104 session.setAttribute("errorMessage", "Sorry this hasn't worked out this time. Please try again later.");
105 } else {
106 Logger.info("SMSP VNN COMPLETE. RESPONSE CODE:" + resp.getResponseCode());
107 Logger.info("SMSP call succeeded");
108
109
110 session.setAttribute("nhsNumber", resp.getNhsNumber());
111 session.setAttribute("verified", Boolean.toString((resp.getVerifiedIndicator())));
112 session.setAttribute("responseCode", resp.getResponseCode());
113 try {
114 Document responseDoc = DomUtils.parse(resp.getPayload());
115 String prettyPayload = DomUtils.serialiseToXML(responseDoc, DomUtils.PRETTY_PRINT);
116 session.setAttribute("responseMessage", StringEscapeUtils.escapeHtml(prettyPayload));
117 } catch (SAXException e) {
118 Logger.error("SMSP VNN FAILED - SAXException",e);
119 session.setAttribute("errorMessage", "Sorry this really hasn't worked out this time. Please try again later.");
120 } catch (ParserConfigurationException e) {
121 Logger.error("SMSP VNN FAILED - ParserConfigurationException",e);
122 session.setAttribute("errorMessage", "Sorry this really hasn't worked out this time. Please try again later.");
123 }
124 }
125 response.sendRedirect("./VerifyNHSNumberResponse.jsp");
126
127 }
128
129 }