Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VAFCPTAD

VAFCPTAD.m

Go to the documentation of this file.
  1. VAFCPTAD ;ISA/RJS,ZOLTAN - Add an entry to the PATIENT (#2) file; 26-Apr-2023 4:26 PM
  1. ;;5.3;Registration;**149,800,876,944,950,955,1033,1042,1050,1099**;Aug 13, 1993;Build 1
  1. ;
  1. ADD(RETURN,PARAM) ;Entry point for VAFC VOA ADD PATIENT remote procedure
  1. ;Input PARAM array = List of data to be used for the creation of a VistA PATIENT (#2) record at the Preferred Facility.
  1. ;Required elements include:
  1. ; PARAM("PRFCLTY")=PREFERRED FACILITY
  1. ; PARAM("NAME")=NAME (last name minimal; recommend full name), 30 chars max
  1. ; PARAM("GENDER")=SEX PARAM("DOB")=DATE OF BIRTH
  1. ; PARAM("SSN")=SOCIAL SECURITY NUMBER OR NULL IF NONE and want a psuedo SSN created
  1. ; PARAM("SRVCNCTD")=SERVICE CONNECTED? PARAM("TYPE")=Patient TYPE
  1. ; PARAM("VET")=VETERAN (Y/N)? PARAM("FULLICN")=INTEGRATION CONTROL NUMBER with CHECKSUM
  1. ;Optional elements include:
  1. ; PARAM("LONGNAME")=NAME (set if full name is greater than 30 chars) ;**1050,VAMPI-9503 (mko): New input, allows setting Name Components to long name
  1. ; PARAM("POBCTY")=PLACE OF BIRTH [CITY] PARAM("POBST")=PLACE OF BIRTH [STATE]
  1. ; PARAM("MMN")=MOTHER'S MAIDEN NAME PARAM("MBI")=MULTIPLE BIRTH INDICATOR
  1. ; PARAM("ALIAS",#)=ALIAS NAME(last^first^middle^suffix)^ALIAS SSN
  1. ; **1033 enrollment, address and phone
  1. ; PARAM("ENROLLMENT")=1 if would like the ES messaging triggered
  1. ; PARAM("ResAddL1")=Resident Street Address line 1 ;PARAM("ResAddL2")=Resident Street Address line 2
  1. ; PARAM("ResAddL3")=Resident Street Address line 3 ;PARAM("ResAddCity")=Resident City
  1. ; PARAM("ResAddState")=Resident State ;PARAM("ResAddZIP")=Resident Zip
  1. ; PARAM("ResPhone")=Home Phone Number ;PARAM("ResAddCountry")=COUNTRY FOR FORIEGN ADDRESS
  1. ; PARAM("ResAddPCode")=POSTAL CODE FOR FORIEGN ADDRESS ;PARAM("ResAddProvince")=PROVINCE FOR FORIEGN ADDRESS
  1. ;Output:
  1. ; On Failure: -1^error text - record add failed
  1. ; On Success: 1^DFN of new PATIENT (#2) record
  1. ;
  1. EN1 ;Check value of all required fields
  1. K RETURN D NOW^%DTC
  1. N ALSERR,DIERR,DPTIDS,DPTX,ERROR,FLG,FDA,FN,LN,MN,RESULT,RGRSICN,SFX,VAL,VAFCA08,X,Y,UPDNC,VAFCDFN,VAFCDOB,VAFCICN,VAFCMMN,VAFCNAM,VAFCPF,VAFCPOBC,VAFCPOBS
  1. N VAFCRSN,VAFCSRV,VAFCSSN,VAFCSUM,VAFCSX,VAFCTYP,VAFCVET,VAFCMBI,VAFCPN,VAFCPR,VAFCPC,VAFCPCT,VAFCAL1,VAFCAL2,VAFCAL3,VAFCACY,VAFCAST,VAFCAZ,VAFCACTY,CNTY
  1. N VAFCSEQ S VAFCSEQ=$$RECORD(.PARAM)
  1. S (RGRSICN,VAFCA08)=1 S FLG=0 ;allow update to ICN; prevent triggering of messages
  1. ;PREFERRED FACILITY
  1. I $G(PARAM("PRFCLTY"))="" S RETURN(1)="-1^PREFERRED FACILITY is a required field." G END
  1. ;**955 (cmc) Story 699475 don't require perferred facility to be this site if this is station 200
  1. I $P($$SITE^VASITE(),"^",3)'=200 I $G(PARAM("PRFCLTY"))'=$P($$SITE^VASITE(),"^",3) S RETURN(1)="-1^PREFERRED FACILITY is not the station to which the RPC was sent." G END
  1. I $G(PARAM("PRFCLTY"))'="" S VAL=$G(PARAM("PRFCLTY")) D CHK^DIE(2,27.02,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCPF=VAL,FLG=1
  1. ;
  1. ;INTEGRATION CONTROL NUMBER and ICN CHECKSUM
  1. I $G(PARAM("FULLICN"))=""!($G(PARAM("FULLICN"))'["V") S RETURN(1)="-1^Full INTEGRATION CONTROL NUMBER with ICN CHECKSUM is required." G END
  1. I $G(PARAM("FULLICN"))'="" S PARAM("ICN")=$P(PARAM("FULLICN"),"V"),PARAM("CHKSUM")=$P(PARAM("FULLICN"),"V",2)
  1. I $G(PARAM("ICN"))'="" S VAL=$G(PARAM("ICN")) D CHK^DIE(2,991.01,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCICN=VAL,FLG=1
  1. I $G(PARAM("CHKSUM"))'="" S VAL=$G(PARAM("CHKSUM")) D CHK^DIE(2,991.02,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCSUM=VAL,FLG=1
  1. ;Has patient already been created at this facility? If so get DFN and quit.
  1. S VAFCDFN=+$O(^DPT("AICN",PARAM("ICN"),0))
  1. I VAFCDFN D G:$D(RETURN(1)) END
  1. .;**1050,VAMPI-9503 (mko): Make sure the 0 node of the patient exists before quitting with the DFN.
  1. .; If not, kill the erroneous "AICN" index entry and continue
  1. .I $D(^DPT(VAFCDFN,0))[0 K ^DPT("AICN",PARAM("ICN"),VAFCDFN),VAFCDFN Q
  1. .S RETURN(1)="1^"_$O(^DPT("AICN",PARAM("ICN"),0))_$S($$GETFLAG^VAFCPTED:"^^1",1:"")
  1. ;
  1. ;NAME INPUT AS:LAST^FIRST^MIDDLE^SUFFIX; MUST BE FORMATTED FOR VISTA INPUT
  1. ;**1099,VAMPI-19828 (mko): Build VistA name in VAFCNAM instead of PARAM("NAME")
  1. I $G(PARAM("NAME"))="" S RETURN(1)="-1^Patient NAME is a required field." G END
  1. S LN=$P($G(PARAM("NAME")),"^"),FN=$P($G(PARAM("NAME")),"^",2),MN=$P($G(PARAM("NAME")),"^",3),SFX=$P($G(PARAM("NAME")),"^",4)
  1. S VAFCNAM=LN_","
  1. S:FN'="" VAFCNAM=VAFCNAM_FN
  1. S:MN'="" VAFCNAM=VAFCNAM_" "_MN
  1. S:SFX'="" VAFCNAM=VAFCNAM_" "_SFX
  1. D CHK^DIE(2,.01,,VAFCNAM,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S FLG=1,DPTX=VAFCNAM ;variable used by SSN input transform
  1. ;
  1. ;DATE OF BIRTH
  1. I $G(PARAM("DOB"))="" S RETURN(1)="-1^DATE OF BIRTH is a required field." G END
  1. I $G(PARAM("DOB"))'="" S VAL=$G(PARAM("DOB")) D CHK^DIE(2,.03,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCDOB=VAL,FLG=1,DPTIDS(.03)=RESULT ;variable used by PSEUDO-SSN code
  1. ;
  1. ;SOCIAL SECURITY NUMBER not equal null; valid 9-digit number
  1. I '$D(PARAM("SSN")) S RETURN(1)="-1^SOCIAL SECURITY NUMBER is a required field. A null value may be sent." G END
  1. I $G(PARAM("SSN"))'="" S VAL=$G(PARAM("SSN")) D CHK^DIE(2,.09,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. I $G(PARAM("SSN"))'="" S VAFCSSN=VAL,FLG=1
  1. I $G(PARAM("SSN"))="" D ;SSN null, set PSEUDO SSN REASON=SSN UNKNOWN/FOLLOW-UP
  1. .S PARAM("SSN")="P" ;PSEUDO SSN
  1. .S PARAM("PSEUDO")="S" ;PSEUDO SSN REASON
  1. .S VAFCSSN=$G(PARAM("SSN")),FLG=1
  1. .;If SSN null, set PSEUDO SSN REASON (#.0906) =SSN UNKNOWN/FOLLOW-UP
  1. .S VAFCRSN=$G(PARAM("PSEUDO")),FLG=1
  1. ;
  1. ;SEX
  1. I $G(PARAM("GENDER"))="" S RETURN(1)="-1^GENDER is a required field." G END
  1. I $G(PARAM("GENDER"))'="" S VAL=$G(PARAM("GENDER")) D CHK^DIE(2,.02,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCSX=VAL,FLG=1
  1. ;
  1. ;SERVICE CONNECTED?
  1. I $G(PARAM("SRVCNCTD"))="" S RETURN(1)="-1^'SERVICE CONNECTED?' is a required field." G END
  1. ;input set to either YES or NO on the MPI before RPC call; skip CHK^DIE here as it resulted in error; expected DFN variable which is not yet set.
  1. I $G(PARAM("SRVCNCTD"))'="" S VAFCSRV=$G(PARAM("SRVCNCTD"))
  1. ;
  1. ;TYPE
  1. I $G(PARAM("TYPE"))="" S RETURN(1)="-1^Patient TYPE is a required field." G END
  1. I $G(PARAM("TYPE"))'="" S VAL=$G(PARAM("TYPE")) D CHK^DIE(2,391,,VAL,.RESULT) I RESULT="^" S RETURN(1)="-1^"_^TMP("DIERR",$J,1,"TEXT",1) G END
  1. S VAFCTYP=VAL,FLG=1
  1. ;
  1. ;VETERAN Y/N?
  1. I $G(PARAM("VET"))="" S RETURN(1)="-1^'VETERAN Y/N?' is a required field." G END
  1. ;input set to either YES or NO on the MPI before RPC call; skip CHK^DIE here as it resulted in error; expected DFN variable which is not yet set.
  1. I $G(PARAM("VET"))'="" S VAFCVET=$E($G(PARAM("VET")),1),FLG=1 ;internal format
  1. ;
  1. ;Optional - POB CITY
  1. I $D(PARAM("POBCTY")) S VAL=$G(PARAM("POBCTY")) D CHK^DIE(2,.092,,VAL,.RESULT) I RESULT="^" S PARAM("POBCTY")=""
  1. I $G(PARAM("POBCTY"))'="" S VAFCPOBC=VAL,FLG=1
  1. ;
  1. ;Optional - POB STATE
  1. N STIEN,UNDEF S UNDEF=0
  1. I $D(PARAM("POBST")) D I UNDEF S PARAM("POBST")=""
  1. .;Convert STATE ABBREVIATION into STATE NAME
  1. .S STIEN=$O(^DIC(5,"C",PARAM("POBST"),0))
  1. .I STIEN="" S UNDEF=1 Q
  1. .I STIEN'="" S PARAM("POBST")=$P($G(^DIC(5,STIEN,0)),"^")
  1. .S VAL=$G(PARAM("POBST")) D CHK^DIE(2,.093,,VAL,.RESULT) I RESULT="^" S UNDEF=1 Q
  1. I $G(PARAM("POBST"))'="" S VAFCPOBS=VAL,FLG=1
  1. ;
  1. ;Optional - MOTHER'S MAIDEN NAME RESET TO NULL IF INVALID VALUE TO ALLOW ADD TO CONTINUE **1033
  1. I $D(PARAM("MMN")) S VAL=$G(PARAM("MMN")) D CHK^DIE(2,.2403,,VAL,.RESULT) I RESULT="^" S PARAM("MMN")=""
  1. I $G(PARAM("MMN"))'="" S VAFCMMN=VAL,FLG=1
  1. ;
  1. ;**876 - MVI_2788 (ckn) - Add MBI
  1. ;Optional - MULTIPLE BIRTH INDICATOR RESET TO NULL IF INVALID VALUE TO ALLOW ADD TO CONTINUE **1033
  1. I $D(PARAM("MBI")) S VAL=$G(PARAM("MBI")) D CHK^DIE(2,994,,VAL,.RESULT) I RESULT="^" S PARAM("MBI")=""
  1. I $G(PARAM("MBI"))'="" S VAFCMBI=VAL,FLG=1
  1. ;
  1. ;**1013 OPTIONAL ADDRESS FIELDS AND PHONE RESET TO NULL IF INVALID VALUE TO ALLOW ADD TO CONTINUE **1033
  1. I $D(PARAM("ResAddL1")) S VAL=$G(PARAM("ResAddL1")) D CHK^DIE(2,.111,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddL1")=""
  1. ;ONLY GET LINE2+ IF THE LINE BEFORE WAS GOOD
  1. I $G(PARAM("ResAddL1"))'="" S VAFCAL1=VAL,FLG=1 I $D(PARAM("ResAddL2")) S VAL=$G(PARAM("ResAddL2")) D CHK^DIE(2,.112,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddL2")=""
  1. I $G(PARAM("ResAddL2"))'="" S VAFCAL2=VAL,FLG=1 I $D(PARAM("ResAddL3")) S VAL=$G(PARAM("ResAddL3")) D CHK^DIE(2,.113,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddL3")=""
  1. I $G(PARAM("ResAddL3"))'="" S VAFCAL3=VAL,FLG=1
  1. I $D(PARAM("ResAddCity")) S VAL=$G(PARAM("ResAddCity")) D CHK^DIE(2,.114,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddCity")=""
  1. I $G(PARAM("ResAddCity"))'="" S VAFCACY=VAL,FLG=1
  1. I $G(PARAM("ResAddState"))'="" D I UNDEF S PARAM("ResAddState")=""
  1. .;Convert STATE ABBREVIATION into STATE NAME
  1. .S STIEN=$O(^DIC(5,"C",PARAM("ResAddState"),0))
  1. .I STIEN="" S UNDEF=1 Q
  1. .I STIEN'="" S PARAM("ResAddState")=$P($G(^DIC(5,STIEN,0)),"^")
  1. .S VAL=$G(PARAM("ResAddState")) D CHK^DIE(2,.115,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddState")=""
  1. I $G(PARAM("ResAddState"))'="" S VAFCAST=VAL,FLG=1
  1. I $D(PARAM("ResAddZIP")) S VAL=$G(PARAM("ResAddZIP")) D CHK^DIE(2,.1112,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddZIP")=""
  1. I $G(PARAM("ResAddZIP"))'="" S VAFCAZ=VAL,FLG=1
  1. ;**1042,VAMPI-8199 (mko): Get County from Zip Code.
  1. ; State must have a value, as dictated by the input transform of the COUNTY field (#.117) of the PATIENT file (#2).
  1. ; Value to be filed is the subien of the county in the state file
  1. I $G(VAFCAZ)]"",$G(VAFCAST)]"" D
  1. .N ARR
  1. .D POSTAL^XIPUTIL(VAFCAZ,.ARR) Q:$G(ARR("COUNTY"))=""
  1. .S VAL=$O(^DIC(5,+$G(STIEN),1,"B",ARR("COUNTY"),0))
  1. .S:VAL>0 VAFCACTY=VAL
  1. I $D(PARAM("ResPhone")) S VAL=$G(PARAM("ResPhone")) D CHK^DIE(2,.131,,VAL,.RESULT) I RESULT="^" S PARAM("ResPhone")=""
  1. I $G(PARAM("ResPhone"))'="" S VAFCPN=VAL,FLG=1
  1. I $G(PARAM("ResAddProvince"))'="" S VAL=$G(PARAM("ResAddProvince")) D CHK^DIE(2,.1171,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddProvince")=""
  1. I $G(PARAM("ResAddProvince"))'="" S VAFCPR=VAL,FLG=1
  1. ;**1050,VAMPI-9503 (mko): Remove initial I $G(PARAM("ResAddProvince"))'="" test -- don't require a valid Province be sent for Postal Code to be checked
  1. I $G(PARAM("ResAddPCode"))'="" S VAL=$G(PARAM("ResAddPCode")) D CHK^DIE(2,.1172,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddPCode")=""
  1. I $G(PARAM("ResAddPCode"))'="" S VAFCPC=VAL,FLG=1
  1. ;**1050,VAMPI-9503 (mko): Remove initial I $G(PARAM("ResAddProvince"))'="" test -- don't require a valid Province be sent for Country to be checked
  1. I $G(PARAM("ResAddCountry"))'="" D
  1. .;convert Country Abbreviation into Country DESCRIPTION
  1. .S CNTY=$O(^HL(779.004,"B",$G(PARAM("ResAddCountry")),""))
  1. .I CNTY="" S PARAM("ResAddCountry")=""
  1. .I CNTY'="" S VAL=PARAM("ResAddCountry") D CHK^DIE(2,.1173,,VAL,.RESULT) I RESULT="^" S PARAM("ResAddCountry")=""
  1. I $G(PARAM("ResAddCountry"))'="" S VAFCPCT=PARAM("ResAddCountry"),FLG=1
  1. ;
  1. I FLG=0 S RETURN(1)="-1^Required information is missing; please check input and try again." G END
  1. ;Else ok to file entry
  1. FILE ;Call FILE^DICN to add new entry to PATIENT (#2) file
  1. N DA,DIC,DR,FULLICN K DD,DO,VAFCRSLT
  1. S DIC="^DPT(",DIC(0)="FLZ",DLAYGO=2,X=VAFCNAM
  1. ;**876 MVI_2788 (ckn) - Remove four slash use for field 1901
  1. ;**944 Story #557843 (cml) add code to update FULL ICN (#991.1), WHO ENTERED PATIENT (#.096), and DATE ENTERED INTO FILE (#.097) fields
  1. S FULLICN=VAFCICN_"V"_VAFCSUM
  1. S DIC("DR")=".09///"_VAFCSSN_";.03///"_VAFCDOB_";.02///"_VAFCSX_";391///"_VAFCTYP_";1901///"_VAFCVET_";.301///"_VAFCSRV_";991.01///"_VAFCICN_";991.02///"_VAFCSUM_";991.1///"_FULLICN
  1. I VAFCSSN="P" S DIC("DR")=DIC("DR")_";.0906///"_VAFCRSN
  1. ;
  1. ;**1050,VAMPI-9503 (mko): Separate single FILE^DICN call into one FILE^DICN call to add the record with required fields
  1. ; and a subsequent FILE^DIE call to update the optional fields
  1. L +^DPT(0):10
  1. D FILE^DICN K DA,DIC,DD,DLAYGO,DO,DR
  1. L -^DPT(0)
  1. ;If record creation/update fails, return a -1^error text
  1. I $P(Y,U,3)'=1 S RETURN(1)="-1^"_"Attempt to add patient "_VAFCNAM_" to the PATIENT (#2) file at station number "_$P($$SITE^VASITE,"^",3)_" failed." G END
  1. S VAFCDFN=+Y
  1. ;
  1. ;**1050,VAMPI-9503 (mko): After record is created, call FILE^DIE to update the record
  1. D
  1. .N DIERR,DIMSG,DIHELP,FDA,IENS,MSG
  1. .S IENS=VAFCDFN_","
  1. .S:$G(VAFCPOBC)]"" FDA(2,IENS,.092)=VAFCPOBC ;POB CITY
  1. .S:$G(VAFCPOBS)]"" FDA(2,IENS,.093)=VAFCPOBS ;POB STATE
  1. .S:$G(VAFCMMN)]"" FDA(2,IENS,.2403)=VAFCMMN ;MMN
  1. .;**876 - MVI_2788 (ckn)
  1. .S:$G(VAFCMBI)]"" FDA(2,IENS,994)=VAFCMBI ;MBI
  1. .;**1033 ADDING ADDRESS FIELDS
  1. .S:$G(VAFCAL1)]"" FDA(2,IENS,.111)=VAFCAL1 ;STREET LINE 1
  1. .S:$G(VAFCAL2)]"" FDA(2,IENS,.112)=VAFCAL2 ;STREET LINE 2
  1. .S:$G(VAFCAL3)]"" FDA(2,IENS,.113)=VAFCAL3 ;STREET LINE 3
  1. .S:$G(VAFCACY)]"" FDA(2,IENS,.114)=VAFCACY ;CITY
  1. .S:$G(VAFCAST)]"" FDA(2,IENS,.115)=VAFCAST ;STATE
  1. .S:$G(VAFCAZ)]"" FDA(2,IENS,.1112)=VAFCAZ ;ZIP
  1. .S:$G(VAFCPN)]"" FDA(2,IENS,.131)=VAFCPN ;PHONE NUMBER
  1. .S:$G(VAFCPR)]"" FDA(2,IENS,.1171)=VAFCPR ;PROVINCE
  1. .S:$G(VAFCPC)]"" FDA(2,IENS,.1172)=VAFCPC ;POSTAL CODE
  1. .S:$G(VAFCPCT)]"" FDA(2,IENS,.1173)=VAFCPCT ;COUNTRY
  1. .Q:'$D(FDA)
  1. .L +^DPT(VAFCDFN):10 E Q
  1. .D FILE^DIE("E","FDA","MSG") L -^DPT(VAFCDFN)
  1. ;
  1. ;**1042,VAMPI-8199 (mko): File County (determined from Zip); Need to use 4-slash stuff because IT is interative
  1. ; when county name matches more than one entry (e.g., BALTIMORE and BALTIMORE (CITY)
  1. ;**1050,VAMPI-9503 (mko): Use FILE^DIE to file county instead of FILE^DICN
  1. D:$G(VAFCACTY)]""
  1. .N DIERR,DIMSG,DIHELP,FDA,MSG
  1. .S FDA(2,VAFCDFN_",",.117)=VAFCACTY ;COUNTY
  1. .L +^DPT(VAFCDFN):10 E Q
  1. .D FILE^DIE("","FDA","MSG") L -^DPT(VAFCDFN)
  1. ;
  1. ;**1050,VAMPI-9503 (mko): If NC flag is set, file the name components
  1. K UPDNC I $$GETFLAG^VAFCPTED S UPDNC=$$UPDNC(VAFCDFN,$G(PARAM("LONGNAME"),$G(PARAM("NAME"))))
  1. ;
  1. ;**1033 VAMPI-12 (jfw) - Interfacility Consult (IFC) support
  1. ; Trigger enrollment/eligibility HL7 messaging to further update patient info
  1. S:($G(PARAM("ENROLLMENT"))=1) VAFCRSLT=$$QRY^DGENQRY(VAFCDFN)
  1. ; file Who and When if not already done
  1. N DGZ,FDA
  1. S DGZ=$G(^DPT(VAFCDFN,0))
  1. S:'$P(DGZ,"^",15) FDA(2,VAFCDFN_",",.096)=DUZ
  1. S:'$P(DGZ,"^",16) FDA(2,VAFCDFN_",",.097)=DT
  1. D:$D(FDA) FILE^DIE("","FDA")
  1. ;
  1. ;File ALIAS multiple
  1. I $D(PARAM("ALIAS")) D ALIAS ;If ALIAS data is passed, call ALIAS module
  1. I $G(ALSERR)="" S RETURN(1)="1^"_VAFCDFN ;No errors for ALIAS, return DFN
  1. I $G(ALSERR)'="" S RETURN(1)=ALSERR
  1. ;
  1. ;**1050,VAMPI-9503 (mko): If the components of the name were filed, return 4th piece equal to 1
  1. S:$G(UPDNC) $P(RETURN(1),U,4)=1
  1. ;
  1. END ;**1050,VAMPI-9503 (mko): Record return value and quit
  1. D RETURN(VAFCSEQ,.RETURN)
  1. Q
  1. ;
  1. ALIAS ;Optional - Add ALIAS and ALIAS SSN data for entry
  1. ;Only occurs for a NEW record; there is no previous ALIAS data
  1. I '$D(PARAM("ALIAS")) Q
  1. ;ALIAS input comes in as: LAST^FIRST^MIDDLE^SUFFIX^SSN
  1. N AFN,ALN,AMN,ASFX,ASSN,ERR,FDA,I,LOC,NUM
  1. S (I,NUM)=0 F S NUM=$O(PARAM("ALIAS",NUM)) Q:'NUM D
  1. .S ALN=$P($G(PARAM("ALIAS",NUM)),"^") Q:ALN="" ;Last name minimal input
  1. .S AFN=$P($G(PARAM("ALIAS",NUM)),"^",2),AMN=$P($G(PARAM("ALIAS",NUM)),"^",3)
  1. .S ASFX=$P($G(PARAM("ALIAS",NUM)),"^",4),ASSN=$P($G(PARAM("ALIAS",NUM)),"^",5)
  1. .;Change format for VistA input: LAST,FIRST MIDDLE SUFFIX^SSN
  1. .S LOC(NUM)=ALN_","
  1. .I AFN'="" S LOC(NUM)=LOC(NUM)_AFN
  1. .I AMN'="" S LOC(NUM)=LOC(NUM)_" "_AMN
  1. .I ASFX'="" S LOC(NUM)=LOC(NUM)_" "_ASFX
  1. .S LOC(NUM)=LOC(NUM)_"^"
  1. .I ASSN'="" S LOC(NUM)=LOC(NUM)_ASSN
  1. .;Set FDA nodes
  1. .S I=I+1 ;Unique sequence number for add to ALIAS SUB-FILE (#2.01
  1. .S FDA(2.01,"+"_I_","_VAFCDFN_",",.01)=$P(LOC(NUM),"^") ; (#.01) ALIAS (name)
  1. .I ASSN'="" S FDA(2.01,"+"_I_","_VAFCDFN_",",1)=$P(LOC(NUM),"^",2) ; (#1) ALIAS SSN
  1. ;Update ALIAS multiple with new entries
  1. I $D(FDA) D ;We have ALIAS data to add
  1. .S ALSERR=""
  1. .L +^DPT(VAFCDFN):10 D UPDATE^DIE("E","FDA",,"ERR") L -^DPT(VAFCDFN)
  1. .I $D(ERR("DIERR")) S ALSERR="1^"_VAFCDFN_"^Patient "_PARAM("NAME")_" was successfully added at "_$P($$SITE^VASITE,"^",3)_". However, the ALIAS data failed to update. Error message: "_$G(ERR("DIERR","1","TEXT",1)) Q
  1. Q
  1. ;
  1. UPDNC(VAFCDFN,NAME) ;Update name components; Return 1 if updated
  1. ;**1050,VAMPI-9503 (mko): New subroutine
  1. N CURR,DIERR,DIMSG,DIHELP,FDA,MSG,NCIENS
  1. Q:$G(NAME)?."^" 0
  1. Q:$G(VAFCDFN)'>0 0
  1. S NCIENS=$P($G(^DPT(+VAFCDFN,"NAME")),U)_"," Q:'NCIENS 0
  1. ;
  1. ;Get current values
  1. D GETS^DIQ(20,NCIENS,"1;2;3;5","","CURR","MSG") Q:$G(DIERR) 0
  1. ;
  1. ;**1099,VAMPI-19828 (mko): Quit 0 if there are no differences
  1. S CURR("NAME")=CURR(20,NCIENS,1)_U_CURR(20,NCIENS,2)_U_CURR(20,NCIENS,3)_U_CURR(20,NCIENS,5)_U
  1. S $P(NAME,U,5)=""
  1. Q:CURR("NAME")=NAME 0
  1. ;
  1. ;**1099,VAMPI-19828 (mko): Set FDA for each component even if not different from current
  1. ; so that FILE^DIE can check that all are valid before any are filed.
  1. S FDA(20,NCIENS,1)=$P(NAME,U)
  1. S FDA(20,NCIENS,2)=$P(NAME,U,2)
  1. S FDA(20,NCIENS,3)=$P(NAME,U,3)
  1. S FDA(20,NCIENS,5)=$P(NAME,U,4)
  1. ;
  1. ;Call Filer
  1. D FILE^DIE("EKT","FDA","MSG")
  1. Q '$G(DIERR)
  1. ;
  1. ;=================================================
  1. ; Code for storing debugging information in ^XTMP
  1. ;=================================================
  1. RECORD(PARAM,RPCNAME) ;Record RPC inputs for debugging
  1. ;Return seq# in ^XTMP
  1. N NODE,NOW,SEQ,TODAY
  1. Q:'$$ISDEBUG 0
  1. S:$G(RPCNAME)="" RPCNAME="VAFC VOA ADD PATIENT"
  1. S NOW=$$NOW^XLFDT,TODAY=$P(NOW,".")
  1. S NODE=$$NODE
  1. ;
  1. L +^XTMP(NODE):2
  1. D SETXTMP0(NODE)
  1. S SEQ=$O(^XTMP(NODE," "),-1)+1
  1. M ^XTMP(NODE,SEQ,"PARAM")=PARAM
  1. S ^XTMP(NODE,SEQ,"DT")=NOW
  1. S ^XTMP(NODE,SEQ,"DUZ")=$G(DUZ)
  1. S ^XTMP(NODE,SEQ,"RPC")=RPCNAME
  1. L -^XTMP(NODE)
  1. Q SEQ
  1. ;
  1. RETURN(SEQ,RETURN) ;Record the return value
  1. Q:'SEQ Q:'$$ISDEBUG
  1. M ^XTMP($$NODE,SEQ,"RETURN")=RETURN
  1. Q
  1. ;
  1. DBON ;Set DEBUG on
  1. N NODE
  1. S NODE=$$NODE
  1. D SETXTMP0
  1. S ^XTMP(NODE,"DEBUG")=1
  1. W !,$NA(^XTMP(NODE,"DEBUG"))_" set to 1.",!
  1. Q
  1. ;
  1. DBOFF ;Set DEBUG off
  1. N NODE
  1. S NODE=$$NODE
  1. K ^XTMP(NODE,"DEBUG")
  1. K:'$O(^XTMP(NODE,0)) ^XTMP(NODE)
  1. W !,$NA(^XTMP(NODE,"DEBUG"))_" killed.",!
  1. Q
  1. ;
  1. ISDEBUG() ;Return 1 if DEBUG mode flag is set
  1. Q $G(^XTMP($$NODE,"DEBUG"))
  1. ;
  1. PURGE ;Purge the debugging data stored in ^XTMP
  1. N ISDEBUG
  1. S ISDEBUG=$$ISDEBUG
  1. K ^XTMP($$NODE)
  1. W !,$NA(^XTMP($$NODE))_" killed.",!
  1. D:ISDEBUG DBON
  1. Q
  1. ;
  1. SETXTMP0(NODE,DESC,LIFE) ;Set 0 node of ^XTMP(node)
  1. N CREATEDT
  1. S:$G(NODE)="" NODE=$$NODE
  1. S CREATEDT=$S($D(^XTMP(NODE,0))#2:$P(^(0),U,2),1:DT)
  1. S:'$G(LIFE) LIFE=30
  1. S:$G(DESC)="" DESC="Inputs and Outputs to RPC: VAFC VOA ADD PATIENT"
  1. S ^XTMP(NODE,0)=$$FMADD^XLFDT(DT,LIFE)_U_CREATEDT_U_DESC
  1. Q
  1. ;
  1. NODE() ;Return ^XTMP Debug subscript
  1. Q "VAFC_VOA_ADD_PATIENT"