/* * Copyright (c) 1995, 1996 Gunther Schadow. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "carevue.h" #include "cvgateway.h" #include #include #include #include #include HL7Message *discharge_patient(HL7Message &msg) { ADT_A03msg &request = (ADT_A03msg &)msg; IDtyp bed = request.PatVisit.AssPatLoc.Bed; IDtyp adn = request.PatVisit.VisitNum.IdNum; strstream cmds; xios _cmds(cmds); cmds << hl7er << PGETC "/idb_direct -c -e 3 -l '" << bed << "' -r '" << adn << "'" << ends; int ret = runcmd(cmds.str()); cmds.freeze(0); if(ret & IDB_ERR) ERROR("%s returned error status %o", cmds.str(), ret); if(!(ret&IDB_PAT1)) // patient is unknown { LOGWARNING("patient unknown (by recno)"); return make_ack(request, AckCode::AEval, "patient unknown (by recno)"); } else { request.MesHea.RecApp = "ADT"; request.HpConFigDem = assemble_zdm(request.PatIde, request.PatVisit); fix_pid(request.PatIde, request.PatVisit); request.PatVisit.DisDis = dis2hp(request.PatVisit.DisDis); return forward_message(request); } }