VistA-FOIAVistA/r/REGISTRATION-DGQE-DG-DPT-GR.../DGQERPC.m

164 lines
4.9 KiB
Mathematica

DGQERPC ;ALB/RPM - VIC REPLACEMENT VISTA TO MAXIMUS RPC ; 10/04/05
;;5.3;Registration;**571,679**;Aug 13, 1993
;
; This routine contains the primary entry points to the
; VistA to Maximus interface RPCs.
;
Q ;no direct entry
;
GETDEMO(RESULT,DGICN) ;retrieve patient demographics
;
; --rpc: DGQE GET PATIENT DEMO
;
; This remote procedure retrieves demographic data for a given patient
; and returns an array of text lines. Each text line consists of at
; least two circumflex("^")-delimited fields. The first field of each
; line contains an XML style tag (e.g. <RESULT>). The second through
; nth fields contain data.
;
; Supported References:
; DBIA #2701: $$GETDFN^MPIF001
;
; Input:
; DGICN - patient's Integration Control Number
;
; Output:
; RESULT - array of tag-labeled patient demographics
;
; Subscript Field# Field contents Description
; --------- ------ ------------------------- ----------------
; 1 1 <RESULT> RPC status tag
; 2 Card Print Release Status
; 3 "VIC"
;
; 2 1 <MSG> Remarks tag
; 2 Free text remarks
;
; 3 1 <NAME> Identifier tag
; 2 Full Name
; 3 Social Security Number
; 4 Date of Birth
;
; 4 1 <NAME1> Name components tag
; 2 Last Name
; 3 First Name
; 4 Middle Name
; 5 Name Suffix
; 6 Name Prefix
;
; 5 1 <TYPE> Veteran type tag
; 2 Service Connected Indicator
; 3 Prisoner of War Indicator
; 4 Purple Heart Indicator
;
; 6 1 <PATAS> Mailing address tag
; 2 Street Line 1
; 3 Street Line 2
; 4 Street Line 3
;
; 7 1 <PATAZ> Mailing address tag
; 2 City
; 3 State
; 4 Zip
;
; 8 1 <MPI> Master Patient Index tag
; 2 Integration Control Number
; 3 DFN
;
; 9 1 <SITE> Facility tag
; 2 Facility Name
; 3 Station Number
; 4 VISN
;
N DGDFN ;pointer to patient in PATIENT (#2) file
N DGVIC ;patient data array
;
;initialize patient data array
D INITARR^DGQEUT1(.DGVIC)
;
D ;drop out of block on error
. ;
. ;check for input parameter
. S DGDFN=+$$GETDFN^MPIF001($G(DGICN))
. Q:(DGDFN'>0)
. ;
. ;build patient object
. Q:'$$GETPAT^DGQEUT1(DGDFN,.DGVIC)
. ;
. ;build eligibility object
. Q:'$$GETELIG^DGQEUT1(DGDFN,.DGVIC)
;
;determine card print release status and get into array
D CPRSTAT^DGQEUT2(.DGVIC)
;
;build results document
D BLDDOC(.DGVIC,.RESULT)
;
Q
;
;
SETID(RESULT,DGICN,DGRSTAT,DGID) ;callback RPC from Maximus workstation
;
; --rpc: DGQE SET CARD ID
;
; This remote procedure provides a "callback" for the VIC PICS
; Workstation to notify VistA that a patient's VIC request has been
; successfully forwarded to the National Card Management Directory.
; The procedure creates an entry in the VIC REQUEST (#39.6) file when
; the Card Print Release Status is "H" [Hold].
;
; Supported References:
; DBIA #2701: $$GETDFN^MPIF001
;
; Input:
; DGICN - patient's Integration Control Number
; DGRSTAT - card print release status
; DGID - NCMD assigned Card ID
;
; Output:
; none
;
N DGDFN ;pointer to patient in PATIENT (#2) file
;
S DGDFN=+$$GETDFN^MPIF001($G(DGICN))
I DGDFN>0,$D(^DPT(DGDFN,0)),$G(DGRSTAT)]"" D
. I $E(DGRSTAT)="H" D STOCID^DGQEREQ(DGID,DGDFN,DGRSTAT)
S RESULT=1
;
Q
;
;
BLDDOC(DGPAT,DGRSLT) ;build results document based on DOCMAP table
; This procedure uses the array subscript to field location table
; in linetag DOCMAP to format the GETDEMO RPC result array.
;
; Input:
; DGPAT - combined patient/eligibility data array
;
; Output:
; DGRSLT - RPC result array
;
N DGFLD ;table field location
N DGLCNT ;line count
N DGLINE ;line content
N DGFLDNM ;field name
;
F DGLCNT=1:1 S DGLINE=$T(DOCMAP+DGLCNT) Q:DGLINE="" D
. S DGRSLT(DGLCNT)="<"_$P(DGLINE,";",3)_">" ;set TAG
. F DGFLD=4:1 S DGFLDNM=$P(DGLINE,";",DGFLD) Q:DGFLDNM="" D
. . S DGRSLT(DGLCNT)=DGRSLT(DGLCNT)_"^"_$G(DGPAT(DGFLDNM))
;
Q
;
;
DOCMAP ;document field to array subscript map;TAG;FIELD1;FIELD2;...;FIELDn
;;RESULT;STAT;DOCTYPE
;;MSG;REMARKS
;;NAME;NAME;SSN;DOB
;;NAME1;LAST;FIRST;MIDDLE;SUFFIX;PREFIX
;;TYPE;SC;POW;PH
;;PATAS;STREET1;STREET2;STREET3
;;PATAZ;CITY;STATE;ZIP
;;MPI;ICN;DFN
;;SITE;FACNAME;FACNUM;VISN